OpenVPN服务器发送虚假默认网关信息给客户端?

虽然VPN客户端成功连接到OpenVPN服务器,但是无论push "redirect-gateway local def1"和/或push "route 10.240.0.0 255.255.0.0"排列是什么,它似乎都设置了不正确的假网关,在server.conf文件中注释/取消注释。

server.conf文件有这个声明server 10.8.0.0 255.255.255.0 ,实际上服务器得到分配10.8.0.1 ,但由于某种原因,客户端解释在VPN启动期间发送的消息,它应该通过默认网关路由stream量被分配在10.8.0.5 。 根据Wireshark的任何后续数据包发送到10.8.0.5,永远不会收到任何响应,就好像这些数据包到VPN TCP端点,似乎他们永远不会到达服务器的tun0接口(根据服务器上的tcpdump

以下是OpenVPN客户端(Tunnelblick)日志的相关行,指示成功连接到VPN后立即更改路由表:

 2015-12-11 02:25:18 /sbin/ifconfig utun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up 2015-12-11 02:25:18 /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -d -f -m -w -pxxxxxxxxxxx utun0 1500 1543 10.8.0.6 10.8.0.5 init ********************************************** Start of output from client.up.tunnelblick.sh No network configuration changes need to be made. Will NOT monitor for other network configuration changes. DNS servers '8.8.8.8 208.67.222.222' will be used for DNS queries when the VPN is active The DNS servers include only free public DNS servers known to Tunnelblick. Flushed the DNS cache via dscacheutil /usr/sbin/discoveryutil not present. Not flushing the DNS cache via discoveryutil Notified mDNSResponder that the DNS cache was flushed End of output from client.up.tunnelblick.sh ********************************************** add net 104.196.7.35: gateway 192.168.0.1 add net 0.0.0.0: gateway 10.8.0.5 add net 128.0.0.0: gateway 10.8.0.5 add net 10.240.0.0: gateway 10.8.0.5 add net 10.8.0.0: gateway 10.8.0.5 2015-12-11 02:25:20 Initialization Sequence Completed 

有什么办法可以强制OpenVPN发送正确的信息到客户端? 还是我错了,还有另一个原因正确的数据包发送到OpenVPN的TCP端口没有使其到OpenVPN服务器上的tun0接口?

不,这是正确的。

您的OpenVPN以“net30”拓扑模式工作。 在这种模式下OpenVPN进程本身就是一个路由器。 实际上,虚拟networking模式如下所示:

  Client3 10.8.0.14/30 | 10.8.0.13/30 Server 10.8.0.1/30 --- 10.8.0.2/30 OpenVPN 10.8.0.5/30 --- 10.8.0.6/30 Client1 10.8.0.9/30 | 10.8.0.10/30 Client2 

包括服务器通过10.8.0.x(x – 它们各自的内部OpenVPN下一跳地址)具有附加路由10.8.0.0/24。

即10.8.0.5实际上是OpenVPN路由器的地址,它是“隐藏在一个进程中”。 如果你想将Windowsjoin你的VPN,这是必需的,因为在Windows中不可能创build真正的TUN接口,并且它被TAP和上面的设置激活。

这也是“iroute”选项存在的原因。 它用于在这个虚拟路由器内build立路由。

如果您永远不想将Windows客户端包含到您的VPN中,则可以将拓扑模式设置为p2p,并且预期客户端上有直接的.1路由。

详情请参考OpenVPN手册https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage拓扑模式部分。