我有一个网络,其基本架构如下:1) 客户端通过 openvpn 连接,进入单个子网 (10.10.10.0/24) 2) 如果客户端的最终目的地是互联网,则有一对使用单独网络路径的 openvpn 客户端->服务器隧道。两个 openvpn 客户端都位于 (1) 的入站计算机上,两个服务器都位于一台计算机上,用于将流量发送到互联网。这台机器使用 MASQUERADE 规则为源提供公共 IP 地址。
所有流量到达出口时保留其 10.10.10.0/24 地址。我可以通过替换自定义路由表(ip 规则从 10.10.10.0/24 表 tun1(或 tun2)添加)定期切换前往 tun1 或 tun2 的流量。
这样做的目的是,一旦切换到 tun2,允许所有流量在 tun1 上完成,然后重新启动 tun1。重新启动允许出于安全目的更改隧道的一些内部路由。
我这样假设对吗?因为无论使用哪种隧道,流量到达出口时都使用相同的源/目标 IP,所以所用隧道是否发生变化也无关紧要?是的,在转换过程中,数据包可能会乱序到达,但最坏的情况是会出现一些可以接受的重新传输。
我目前遇到的问题是退出时的 MASQUERADE iptable 规则:iptables -t nat POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
规则存在,并且在 tun1 上正常工作。但是,它似乎在 tun2 上被忽略了。我不明白为什么它不会对第二条隧道触发。由于它是 POSTROUTING,因此入站设备应该无关紧要,对吗?