![Iptables 在两个隧道之间转发流量](https://linux22.com/image/1538681/Iptables%20%E5%9C%A8%E4%B8%A4%E4%B8%AA%E9%9A%A7%E9%81%93%E4%B9%8B%E9%97%B4%E8%BD%AC%E5%8F%91%E6%B5%81%E9%87%8F.png)
我正在尝试将一些流量从一个 OpenVPN 客户端实例转发到另一个。如图所示
我想要转发一些端口的流量并将其他端口保留在 VPN1 实例上。
我应用的所有规则都在 VPN1 中,因为客户端不必关心其流量是否被转发,而且 VPN2 也不必关心“谁”提出请求。因此,以下是我在 VPN1 实例上使用的规则:
对于客户端如何才能访问 10.8.0.0/24 网络,我添加了在server.conf
文件上我添加了:
push "route 10.8.0.0 255.255.255.0"
route 10.8.0.0 255.255.255.0
为了将流量从 转发tun0
到tun1
我添加了以下规则:
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
iptables -A FORWARD -i tun0 -j ACCEPT #forward traffic
为了在第一个隧道上获得互联网连接,我还需要:
iptables -t nat -A POSTROUTING -s 10.8.100.0/24 -j MASQUERADE
所以,这就是我开始失败的地方。以下此链接,我添加了以下内容:
echo "1 nextHop" >> /etc/iproute2/rt_tables
ip route add default via 10.8.0.1 dev tun1 table nextHop
ip rule add from all fwmark 0x1 lookup nextHop
iptables -t mangle -I PREROUTING -p tcp --dport 80 -j MARK --set-mark 1 ## or whatever port I want to forward.
当我添加最后一条 iptables 规则时,流量从tun0
客户端流向tun0
VPN1,再流向tun1
VPN1,最后流向tun0
VPN2,最后到达互联网。但是,回复到达tun0
VPN2 并重定向到tun1
VPN1,但并未转发到tun0
VPN1,以便到达tun0
客户端。我看到了tcpdump
。
我尝试过使用DNAT
和等许多不同的方法,SNAT
但仍然无法将回复转发回客户端。
我如何将一些端口从 VPN1 转发到 VPN2 并将答复返回给客户端?