![Mac OS X 10.8 VPN 服务器:绕过 VPN 进行 LAN 流量(将 LAN 流量路由到辅助连接)](https://linux22.com/image/1330388/Mac%20OS%20X%2010.8%20VPN%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9A%E7%BB%95%E8%BF%87%20VPN%20%E8%BF%9B%E8%A1%8C%20LAN%20%E6%B5%81%E9%87%8F%EF%BC%88%E5%B0%86%20LAN%20%E6%B5%81%E9%87%8F%E8%B7%AF%E7%94%B1%E5%88%B0%E8%BE%85%E5%8A%A9%E8%BF%9E%E6%8E%A5%EF%BC%89.png)
我在 OS X Mountain Lion 上设置了一个有点奇怪的 VPN 服务器。它本质上是作为绕过公司防火墙到我们外联网连接的桥梁——我们团队需要做的某些事情需要不受限制地访问外部,而更改 IT 策略以允许流量通过主防火墙根本不是一个选择。
外联网连接通过 Wireless-N 路由器(我们称之为 Wi-Fi X)提供。我的 Mac Mini 服务器配置了与此路由器的连接作为主要连接,因此可以通过路由器不受限制地访问互联网。可以通过 LAN 端口连接到直接子网上的此设备,但在子网外,可靠性较差。
我能够配置 VPN 服务器,使用 PPTP 和 L2TP 为 192.168.11.150-192.168.11.200 范围内的客户端提供 IP 地址,并且我能够使用系统偏好设置中的标准 Mac OS X VPN 客户端通过 VPN 连接到外部网络,然而不出所料,本地地址(我们称之为 internal.company.com)没有返回任何内容。
我尝试通过在 VPN 设置中设置路由来绕过 VPN 服务器的限制。我们公司使用 13.xxx 而不是 10.xxx 来处理所有内部流量,因此路由表如下所示:
IP Address ---------- Subnet Mask ---------- Configuration
0.0.0.0 248.0.0.0 Private
8.0.0.0 252.0.0.0 Private
12.0.0.0 255.0.0.0 Private
13.0.0.0 255.0.0.0 Public
14.0.0.0 254.0.0.0 Private
16.0.0.0 240.0.0.0 Private
32.0.0.0 224.0.0.0 Private
64.0.0.0 192.0.0.0 Private
128.0.0.0 128.0.0.0 Private
我以为如果这里什么都没输入,所有流量都会通过 VPN 路由。如果输入了某些内容,只有特别标记为通过 VPN 的流量才会通过 VPN,所有其他流量都将由客户端使用其自己的默认连接进行访问。这就是为什么我必须将除 13.xxx 之外的每个子网都特别标记为私有的原因。
我怀疑,由于我无法从本地子网外部访问 VPN 服务器,因此它没有连接到主 DNS 服务器,因此无法在较大的网络上访问。我认为输入诸如 internal.company.com 之类的主机名不会被踢回客户端进行解析,因为服务器不知道 IP 地址是否在公共范围内,因为我怀疑(可能应该对其进行 ping 测试,但现在无法访问它)它无法访问 DNS 服务器以查找有关该主机名的任何信息。
在我看来,解决这一问题的所有选择都可以归结为同一类型的解决方案:
弄清楚如何使用服务器上的辅助连接访问 DNS。我在想,如果我能够做 [某事] 让我的服务器认识到它还应该检查我的本地网关(假设服务器 IP == 13.100.100.50 和网关 IP == 13.100.100.1)。从那里,网关 IP 可以告诉我去 13.1.1.1 找到 DNS 服务器并给我有关我的内部网络的信息。我对这条路径非常困惑——真的不确定我是否理解得通。
我考虑过尝试在客户端执行此操作,但这也没有意义,因为这会增加每个客户端设置的时间。另外,在服务器上解决这个问题似乎更合乎逻辑 - 我可以完全摆脱我的路由表,也可以保留它 - 我认为唯一的区别是内部流量也会通过服务器 - 这可能是不必要的负担。
有没有人能帮忙?还是说我有点力不从心?正向代理或透明代理对我来说也是一个选择,尽管我不知道如何设置它们。(我知道,谷歌是我的朋友。)
答案1
好吧,我尝试一下:
我不确定如何让部分流量通过。我可以解决您的问题,但这需要对您的设置进行一些更改。我假设您的 Mac 有两个网络接口,我们将它们称为 eth0 和 eth1 :-)
我们假设 eth0 连接到您的工作网络,并且具有内部(工作网络)地址 13.1.1.6、子网 255.0.0.0。
为简单起见,我们还假设 eth1 已连接到您的 WiFi X,并且其地址(eth1 <---> WiFi X 网络)为 192.168.1.10,子网为 255.0.0.0。
我已经在 BSD 和 Linux 上设置了 VPN 服务器,但没有在 Mac 上设置,但概念仍然相同,您可以选择,我列出一个:
1)确保Mac上的路由表有如下条目:
$>sudo route add 13.0.0.0/8 eth0
这样做的目的是确保通过 WiFi X 或 VPN 接口传入的任何流量(目的地是公司网络 (13 网络))都能到达那里。如果没有这个,Mac(提供桥接器)实际上无法知道如何在两个接口之间路由流量,默认情况下,它会尝试将其从默认接口(即您所述的 WiFi X)发送出去。
如果 VPN 路由表尚未存在(希望如此),我将撤消您对上述 VPN 路由表所做的操作并尝试此操作。
如果上述方法无效,请使用 VPN 服务器的路由表和 IP 地址列表进行更新,或者使用您遇到的任何修复程序进行更新。希望这能为您指明正确的方向。