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

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

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

server.conf 文件具有此声明server 10.8.0.0 255.255.255.0,并且服务器确实被分配10.8.0.1,但出于某种原因,客户端将在 VPN 启动期间发送的消息解释为它应该通过分配的默认网关路由流量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 端口的数据包无法到达tun0OpenVPN 服务器上的接口?

答案1

不,这是正确的。

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

                                   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 路由器的地址,它“隐藏在进程内”。如果您想将 Windows 加入 VPN,则需要这样做,因为在 Windows 中无法创建真正的 TUN 接口,它是用 TAP 和上面的设置模拟的。

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

如果您永远不想将 Windows 客户端纳入您的 VPN,您可以将拓扑模式设置为 p2p,并在客户端上预期直接 .1 路由。

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

相关内容