如何通过 VPN 本身路由所有流量(甚至是到 openvpn-server 本身的流量)

如何通过 VPN 本身路由所有流量(甚至是到 openvpn-server 本身的流量)

所以我有一台公网 IP 地址为 101.102.103.104 的服务器(例如)。该服务器运行 OpenVPN 服务器,以及一堆其他正在监听公网 IP 网络设备端口的东西。

我想要做的是,一旦连接到 101.102.103.104,就通过 VPN 将所有未来的流量路由到该 IP。

例如如果我curl101.102.103.104:8080,它将通过 VPN 连接进行。

我尝试将push route以下内容添加到我的 server.conf 中:

push "route 101.102.103.104 255.255.255.255"

我甚至尝试添加排除路线:

push "route 101.102.103.104 255.255.255.255 net_gateway"

但它似乎不起作用。运行sudo route -n仍然显示通过我的家用路由器的路线:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
101.102.103.104  192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

关于如何实现这一点,您有什么想法吗?我认为问题可能是我试图通过 VPN 服务器将流量路由到 VPN 服务器本身,从而形成某种无限循环,但这只是猜测。

答案1

您显示的路由表显然不会将所有流量路由到 VPN,如第一行所示。在当前配置中,它所做的只是允许客户端访问 LAN。

通过 OpenVPN 路由所有客户端流量的命令,包括所有到第三方的流量(IE(而非 VPN 服务器的 LAN)是

  push "redirect-gateway def1"

这将被添加到服务器配置文件中(您需要重新启动 OpenVPN 程序,才能使更改生效)。

此外,由于您设置了路由 OpenVPN,而不是桥接 OpenVPN,因此您需要在服务器上激活 NATting:

  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

假设互联网上的 OpenVPN 服务器接口(IEIP 地址为 101.102.103.104 的那个被称为eth0。请相应调整。

要检查您的配置,一旦建立与 OpenVPN 服务器的连接,请发出以下命令:

 wget 216.146.39.70:80 -O - -o /dev/null

这将输出您的 IP 地址。如果输出包含 101.102.103.104,则说明您已完成。

相关内容