Iptables 在两个隧道之间转发流量

Iptables 在两个隧道之间转发流量

我正在尝试将一些流量从一个 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

为了将流量从 转发tun0tun1我添加了以下规则:

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客户端流向tun0VPN1,再流向tun1VPN1,最后流向tun0VPN2,最后到达互联网。但是,回复到达tun0VPN2 并重定向到tun1VPN1,但并未转发到tun0VPN1,以便到达tun0客户端。我看到了tcpdump

我尝试过使用DNAT和等许多不同的方法,SNAT但仍然无法将回复转发回客户端。

我如何将一些端口从 VPN1 转发到 VPN2 并将答复返回给客户端?

相关内容