我正在开发一个由多个盒子和路由组成的实时网络,这些网络经历了长期的变更。我正试图以最小的干扰整合它们。我想摆脱一些旧路由器,让较新的(实时)盒子处理连接。
这应该可行吗?
iptables -t mangle -A PREROUTING -p tcp -d 192.168.0.1 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -d 192.168.0.2 -j MARK --set-mark 2
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 -j DNAT --to-destination $DST:7021
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.2 -j DNAT --to-destination $DST:7022
iptables -t nat -A POSTROUTING -p tcp -d $DST -m mark --mark 1 -j SNAT --to-source 192.168.0.1
iptables -t nat -A POSTROUTING -p tcp -d $DST -m mark --mark 2 -j SNAT --to-source 192.168.0.2
iptables -A FORWARD --destination $DST -j ACCEPT
如果 eth0 是静态 IP,并且在 2 个虚拟 IP 上有路由 - eth0:1 是 192.168.0.1,而 eth0:2 是 192.168.0.2,并且都到达目标 $DST。
使用 MARK 似乎是我最好的方法,但它不起作用 - $DST 似乎响应静态 IP 地址,而不是我尝试使用 SNAT 输入的虚拟 IP 地址。这是因为 MARK 无法以这种方式工作,还是因为 iptables 中的其他条目被覆盖,或者因为我需要查看 iproute2 fwmark 规则?
上面的摘录是最小的,我需要一个可扩展到多个 UCARP 的 IP 地址的解决方案,以及所有已配置的 iproute2 规则和 iptables 过滤。不幸的是,尽管我很想重新开始使用更高级的路由工具,但我目前只能将更改集成到现有的 iproute2/iptables 设置中。
谢谢