我正在尝试与 LAN 和 WLAN 共享 VPN 连接。使用 nordvpn 应用程序连接到终端,在 LAN 和 WLAN 上设置静态 DHCP IP,使用手机作为 USB 互联网共享。
当将 usb0 连接(仅作为互联网连接,而不是 VPN)共享到 eth0 和 wlan0 时,一切正常。但是,当在终端中使用 nordvpn 连接时,短时间内设备上的互联网连接正常,但随后其他设备上无法访问互联网,但在使用 VPN 的主计算机上可以正常工作。只有断开 nordvpn 并重新连接并重新应用命令,它才能正常工作,同样持续一小段时间。这是我的 tun0 的样子,inet IP 每次连接时都会发生变化:inet 10.8.3.2 netmask 255.255.255.0 destination 10.8.3.2
,然后使用共享 VPN 连接的命令:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
我怀疑这与路由表有关,因为添加默认 tun0 ip 地址后,它又可以正常工作,但只持续了一段时间,然后 tun0 IP inet 就会发生变化,必须重新执行。这是路由表(tun0 的 ip 并不总是相同的):
default 10.8.0.8 0.0.0.0 UG 0 0 0 tun0
default 192.168.42.129 0.0.0.0 UG 204 0 0 usb0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
link-local 0.0.0.0 255.255.0.0 U 205 0 0 eth1
192.168.2.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.4.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
192.168.42.0 0.0.0.0 255.255.255.0 U 204 0 0 usb0
使用 iptables -S :
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
最后,它显示的内容就像usb0 -j DROP, wlan0 -j DROP and eth0 -j DROP
在终端中断开与 vpn 的连接一样(使用 usb0 连接时不会发生这种情况,即使手机未插入也是如此)。如果在 tun0 上不存在,则上面的 iptables 不起作用,只有重新应用它们才能工作,但只能持续很短的时间。如果理解正确,这与 tun0 的 inet IP 变化有关,但如何使其变为静态,以便不需要重新应用所有内容,我不知道。我是这方面的初学者,非常感谢任何帮助。希望有人能给我指明正确的方向。
编辑:几天后,我发现添加route add default gw (tun0)
至少需要几个小时,也许半天,然后互联网连接甚至在主计算机上也会停止。Nordvpn 显示已连接,但没有互联网。添加默认 tun0 作为路由后立即不起作用的原因是它需要是 tun0 网关,而不是分配给主计算机的 ip(网关通常以 1 结尾)。另一种方法是添加iptables -A FORWARD -j ACCEPT
而不添加默认路由。它不会引起 vpn 重新连接和 ip 更改,但时间仍然很短,比路由默认 tun0 短。
答案1
经过几天的尝试,我切换到终端中的 openvpn 应用程序,它运行正常。从技术上讲,这应该是一种解决方法,而不是 nordvpn 应用程序本身的真正解决方案。iptables 中的转发命令正常,即使重新启动或关闭 vpn 连接后也不会出现 DROP,因此也不需要路由表配置。阅读有关 vpn 的其他问题,似乎这是 nordvpn 应用程序内部的一个“错误”,也许提供商有意为之,不知道。我建议使用 openvpn 来解决此类问题。