我的老板变得特别偏执,并希望我为他组织某种 VPN 链接。我想出了以下方案:
Client VPN1 VPN2
10.0.1.x[tun0]------10.0.1.1[tun0]
[1.1.1.1][eth0] 10.0.2.x[tun1]----------10.0.2.1[tun0]
2.2.2.2[eth0] 3.3.3.3[eth0]------internet
Run Code Online (Sandbox Code Playgroud)
我可以通过 iptables 转发从客户端使用 VPN1,如下所示:
vpn1 # iptables -A FORWARD -s 10.0.1.0/24 -j ACCEPT
vpn1 # iptables -A FORWARD -d 10.0.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
vpn1 # iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j SNAT --to-source 2.2.2.2
Run Code Online (Sandbox Code Playgroud)
如果我将 VPN2 设为默认网关,或者如果我选择指定的主机,我可以使用来自 VPN1 的 VPN2,如下所示:
vpn1 # route add -host 8.8.8.8 dev tun1
Run Code Online (Sandbox Code Playgroud)
我不能使用的是来自客户端的全链 VPN1-VPN2-Internet。我尝试将流量从 tun0 转发到 tun1,反之亦然,如下所示:
vpn1 # iptables -A FORWARD -i tun0 -o tun1 -j ACCEPT …Run Code Online (Sandbox Code Playgroud)