題 OpenVPN與MacOS X Client以及本地和遠程網絡中的相同子網


我有一個家庭網絡192.168.1.0/24與網關192.168.1.1和一個具有相同參數的遠程網絡。現在我想在這些網絡之間創建一個OpenVPN隧道。

我對Windows沒有任何問題,因為除了192.168.1.1之外,Windows通過隧道將所有內容路由到192.168.1.0/24。

但是在Mac OS X上,我在Details窗口中看到以下行:

2010-05-10 09:13:01警告:本地局域網[192.168.1.0/255.255.255.0]與遠程VPN [192.168.1.0/255.255.255.0]之間潛在的路由子網衝突

當我列出路線時,我得到以下內容:

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.1.1        UGSc       13        3    en1
127                localhost          UCS         0        0    lo0
localhost          localhost          UH         12     3589    lo0
169.254            link#5             UCS         0        0    en1
192.168.1          link#5             UCS         1        0    en1
192.168.1.1        0:1e:e5:f4:ec:7f   UHLW       13       17    en1   1103
192.168.1.101      localhost          UHS         0        0    lo0
192.168.6          192.168.6.5        UGSc        0        0   tun0
192.168.6.5        192.168.6.6        UH          1        0   tun0

我的界面是

en1 - My local Wifi network
tun0 - The tunnel interface

從上面的路由可以看出,沒有192.168.1.0/24的條目可以通過隧道接口路由流量。

當我通過隧道網關192.168.6.6手動路由單個IP(如192.168.1.16)時,這可以工作。

問:如何在MacOS X中設置我的路由以獲得與Windows相同的行為,將除192.168.1.1之外的所有內容路由到隧道,但保留默認網關為我的本地192.168.1.1?

編輯:我重新打開了這個問題,因為第一次無法完全回答。

除了路由器之外,VPN-Client機器不需要訪問其自己的子網,並且除了隧道包本身之外,TCP包應該採用隧道。


2
2018-05-10 05:19


起源


如果它不能真正解決您的問題,請不要覺得您必須接受答案。我認為我們對我的回答的評論澄清了你想要做的事情;考慮從該討論中提煉您的問題帖子。這將使它回到頭版,並可能會對問題有所了解。 - quack quixote


答案:


我不認為路由應該像那樣工作。從本質上講,就IPv4而言,您的兩個網絡是相同的。 VPN不會改變這一點。你不用 路由器 連接同一網絡的兩個部分;你需要 橋樑 為了那個原因。

我從來沒有這樣做,但我認為你有一些選擇。

  • 配置OpenVPN網關 在橋接模式下。只要沒有IP衝突(每個網絡上有一台具有相同IP的計算機,例如192.168.1.100),這應該可行。如果您使用的是DHCP,則需要處理潛在的重疊;您不希望在同一網絡上有兩台DHCP服務器。

    根據該鏈接,您有兩種IP分配選項:

    • 讓OpenVPN使用server-bridge指令管理自己的客戶端IP地址池,或者
    • 配置LAN上的DHCP服務器以向VPN客戶端授予IP地址租約。


  • 將一個網絡配置為另一個網絡地址。只是改變 192.168.1 / 24 在一個網絡上 192.168.7 / 24 (或其他一些地址)。這肯定會奏效,您只需要重新配置一個網絡。

  • 子網 192.168.1 / 24 成 二/ 25 網絡(例如, 192.168.1.0/25 和 192.168.1.128/25)。這也肯定有效,但您必須重新配置兩個網絡。 (作為參考,/ 25上的網絡掩碼是 255.255.255.128)。


1
2018-05-10 06:18



+1好主意,但正如我已經說過的,它可以在我的Windows客戶端上運行。我沒有問題重新配置我的家庭網絡,但只是感興趣如何配置MacOS X以實現與Windows能夠相同的行為。 - Daniel
@Daniel:如果您對Windows系統的評論準確無誤,那麼您的Windows系統無法訪問本地LAN系統 - 除了本地192.168.1.1之外,他們可以與之通信的所有內容都在VPN隧道的另一端。如果這真的是你想要的,請使用到192.168.1.1的靜態路由配置OSX,並為隧道的其他所有路由配置默認路由。這並不會讓我覺得有用,但如果這就是你想要的,我會把它添加到答案中。 - quack quixote
這正是我想要實現的目標。由於我獨自一人在我的本地子網(只有我和我的路由器),我真的很想實現這一點。 - Daniel
你能為我輸入路線命令嗎?這是我最不足的地方。 - Daniel
我只需要路由命令來切換路由。有人可以加一下嗎?所有信息都可以在上面的列表中找到。 - Daniel


我確實遇到了一些問題。在我的ovpn連接設置文件中添加以下腳本調用解決了它:

route-delay 2
route-up /Users/user/.local/bin/vpn-routes

腳本手動重新分配默認路由的位置,如下所示:

#!/bin/bash

/sbin/route delete default
/sbin/route delete 0/1
/sbin/route add default $route_net_gateway

這很好用,直到我升級到Mountain Lion。我已升級到最新的Tunnelblick測試版,但上面的腳本似乎不起作用(我認為由於權限問題,仍然在研究這個問題)


2
2017-07-28 19:00



我在山獅中發現了這個問題,由於某些原因,腳本沒有 execute 允許。現在它有效。 - GabrielKnight