当 OpenVPN 客户端处于活动状态时,端口转发不起作用

当 OpenVPN 客户端处于活动状态时,端口转发不起作用

我已在运行 ddwrt 的路由器上成功配置了 OpenVPN 客户端,并且还将其设置为在启动时启用 OpenVPN。

家庭网络 => ddwrt 路由器与 OpenVPN 客户端 => web

如果 OpenVPN 客户端不是正在运行。所以我想知道如果 OpenVPN 客户端跑步。

我确信我的家庭网络连接处于活动状态,因为我现在正在通过 wifi 连接到路由器的 Macbook 上输入此内容,而我的另一台 Macbook 通过 iPhone 个人热点连接到网络。我正在第二台 Macbook 上进行测试。

重要信息:

路由器防火墙已关闭。

IP 路由信息

root@myrouter:~# ip route list
0.0.0.0/1 via 10.208.185.5 dev tun1 
default via my-wan-gateway-ip-here dev ppp0 
my-wan-gateway-ip-here dev ppp0  proto kernel  scope link  src my-real-ip-here
10.208.0.1 via 10.208.185.5 dev tun1 
10.208.185.5 dev tun1  proto kernel  scope link  src 10.208.185.6 
127.0.0.0/8 dev lo  scope link 
128.0.0.0/1 via 10.208.185.5 dev tun1 
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1 
my-vpn-ip via my-wan-gateway-ip-here dev ppp0

我的 OpenVPN 配置运行由 dd-wrt ​​创建的默认 router-up.sh自动地。 我没有对该脚本进行任何更改。

root@myrouter:/tmp# cat /tmp/openvpncl/route-up.sh 
#!/bin/sh
iptables -D POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -I POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -D INPUT -i tun1 -j ACCEPT
iptables -I INPUT -i tun1 -j ACCEPT

我的 DNS 服务器(使用 Comodo 和 OpenDNS)

root@myrouter:/tmp# cat resolv.dnsmasq
nameserver 8.26.56.26
nameserver 8.20.247.20
nameserver 208.67.222.222

我还使用了一些在网上找到的脚本,以便某些 IP 可以绕过 VPN。此脚本是我的启动脚本 (rc_startup) 的一部分。我需要它,这样我才能在平板电脑上玩这个特定的游戏。

#!/bin/sh
sleep 30
NO_VPN_LST="192.168.1.11 192.168.1.2"
[ -z "$NO_VPN_LST" ] && exit 0
WAN_GWAY="0.0.0.0"
while [ $WAN_GWAY == "0.0.0.0" ]; do
sleep 3
WAN_GWAY=`nvram get wan_gateway`
done
ip route add default via $WAN_GWAY table 10
for ipa in $NO_VPN_LST; do
ip rule add from $ipa table 10
done
ip route flush cache
exit 0

答案1

您面临的问题可能是默认/源路由问题之一。

当 VPN 未开启时,一切正常,因为默认网关位于您的 Internet 连接之外,但是当您启动 VPN 时,会添加几个新路由“0.0.0.0/1 via 10.208.185.5 dev tun1 和 128.0.0.0/1 via 10.208.185.5 dev tun1 ”这会导致默认网关成为 VPN 端点,而不是您的常规连接。

因此,有两种解决方案,具体取决于您需要做什么 -

更简单的解决方案是删除创建默认网关的那 2 行,并在您想要通过 VPN 访问的 VPN 连接上编程(或让您的提供商编程)特定路由。如果您将 VPN 用于特定目的(例如连接到公司网络),这才是一种选择,但如果您想在更广泛的互联网上隐藏您的身份,这种方法就不太适用了。

更难的解决方案是执行“基于源的路由” - 这意味着设置 2 个路由表 - 当前路由表是默认路由表,第二个路由表用于响应通过常规连接直接传入的内容,并使用不同的默认路由。这并非易事,但有许多链接介绍如何做到这一点,包括这里这里 (谷歌的关键词是“源路由”或“策略路由”——如果你真的想成为这方面的专家,你可能需要熟悉拉特- 第 4 章介绍策略路由)

相关内容