我使用 openVPN 连接到 VPN。现在,建立连接后,我的所有流量都会通过 tun0。
我的 LAN 网关是 10.100.98.4...因此,为了让应用程序使用我的直接互联网连接,我
sudo route 添加默认网关 10.100.98.4
但是,我现在不能使用 tun0。我知道这是因为
curl --interface tun0 google.com
没有给我任何东西..我该怎么办同时使用两个连接.我怎样才能实现这一点?
路由表:-
未运行VPN:-
Destination Gateway Genmask Flags Metric Ref Use Iface
10.100.98.0 * 255.255.255.0 U 1 0 0 eth0
default 10.100.98.4 0.0.0.0 UG 0 0 0 eth0
使用VPN:-
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.0.1 10.10.54.230 255.255.255.255 UGH 0 0 0 tun0
10.10.54.230 * 255.255.255.255 UH 0 0 0 tun0
free-vpn.torvpn 10.100.98.4 255.255.255.255 UGH 0 0 0 eth0
10.100.98.0 * 255.255.255.0 U 1 0 0 eth0
default 10.10.54.230 0.0.0.0 UG 0 0 0 tun0
执行路线命令后
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.0.1 10.10.54.230 255.255.255.255 UGH 0 0 0 tun0
10.10.54.230 * 255.255.255.255 UH 0 0 0 tun0
free-vpn.torvpn 10.100.98.4 255.255.255.255 UGH 0 0 0 eth0
10.100.98.0 * 255.255.255.0 U 1 0 0 eth0
default 10.100.98.4 0.0.0.0 UG 0 0 0 eth0
default 10.10.54.230 0.0.0.0 UG 0 0 0 tun0
答案1
添加默认路由后,您将告诉所有流量返回网关,因此只会发生奇怪的事情。
如果您需要访问 VPN 另一端的特定网络,则需要添加指向 的特定路由tun0
。您可以在隧道启动后手动添加路由,或者更好的方法是更改 OpenVPN 的server.conf
文件以在隧道启动时将路由“推送”给您。
如果你想做一些更复杂的事情 - 比如你想强制所有端口 80 和 443 的流量通过 VPN,但让其他所有流量都出去eth0
- 那么你可以使用iptables
源 NAT 流量匹配特定规则到 IP 地址tun0
- 有点像这样:-
iptables -t nat -A POSTROUTING -s 10.10.98.0/24 -d ! 10.10.98.0/24 -p tcp --dport 80 -j SNAT --to-source 10.10.54.230
iptables -t nat -A POSTROUTING -s 10.10.98.0/24 -d ! 10.10.98.0/24 -p tcp --dport 443 -j SNAT --to-source 10.10.54.230
为了使这个特性持久化,以 root 身份iptables-save > /etc/iptables/iptables.rules
。
祝你好运!