根据源 IP 路由到 VPN 或 ISP 的问题

根据源 IP 路由到 VPN 或 ISP 的问题

我正在尝试设置我的 DD-WRT 路由器,以便它根据请求机器的子网通过我的 VPN 或直接通过我的 ISP 引导流量。具体到我的情况,子网(192.168.0.0 或 2.0)是根据设备连接到的 SSID 分配的,这部分似乎运行良好。但是,所有流量似乎都通过 VPN,而不仅仅是来自 192.168.2.0 子网的流量,正如我所期望的那样。我一直遵循的说明来自这里:https://wiki.dd-wrt.com/wiki/index.php/OpenVPN_on_Dedicated_Wireless_Access_Point_(VAP)文章指出作者未能使其在某个版本之后正常工作,但他们的错误信息与 TLS 身份验证有关,但我认为这与此无关。

VPN 是 NordVPN,我遵循的连接说明如下:https://nordvpn.com/tutorials/dd-wrt/openvpn-gui/但有一点不同——我将我的 DNS 保持在 8.8.8.8 和 8.8.4.4,而不是 Nord 的 DNS。

这些是我在启动时运行的命令(45 秒似乎足以让 VPN 成功连接):

sleep 45;
tun_name=$(ifconfig | sed -n 's/.*\(tun[^ ]\).*/\1/p');
tun_addr=$(ifconfig $tun_name | sed -nr 's/.*P-t-P:([^ ]+) .*/\1/p');
ip rule add from 192.168.2.0/24 table 200;
ip route add default via $tun_addr dev $tun_name table 200;
ip route flush cache;

变量tun_nametun_addr决心tun110.8.8.247分别。

这些是运行的结果ip 规则显示

0:      from all lookup local
32765:  from 192.168.2.0/24 lookup 200
32766:  from all lookup main
32767:  from all lookup default

这些是运行的结果ip 路由显示

0.0.0.0/1 via 10.8.8.1 dev tun1
default via 112.205.0.1 dev vlan2
10.8.8.0/24 dev tun1  proto kernel  scope link  src 10.8.8.247
23.19.87.228 via 112.205.0.1 dev vlan2
112.205.0.0/19 dev vlan2  proto kernel  scope link  src 112.205.8.123
127.0.0.0/8 dev lo  scope link
128.0.0.0/1 via 10.8.8.1 dev tun1
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.0.0/24 dev br0  proto kernel  scope link  src 192.168.0.1
192.168.2.0/24 dev br1  proto kernel  scope link  src 192.168.2.1

据我所知,这个表应该可以工作。我尝试过的一件事是在刷新之前将其添加到我的启动脚本中,因为我认为该条目可能强制所有内容都通过 tun1:

ip route del 0.0.0.0/1 table main

但是,虽然条目被正确删除了,但这并没有帮助,所有流量仍然通过 VPN 发送。我遗漏了什么?

答案1

您的 VPN 连接已将所有内容路由到 VPN。它不会替换默认路由,而是创建两个更具体的路由。

0.0.0.0/1 via 10.8.8.1 dev tun1
128.0.0.0/1 via 10.8.8.1 dev tun1

通过删除0.0.0.0/1上述地址的流量128.0.0.0仍然会进入 VPN。

您必须删除两者,或避免接受来自 VPN 服务器的路由(请参阅 OpenVPNpull选项)

相关内容