我需要配置一个防火墙服务器,包括两个互联网线路( eth1上的A,eth0上的B)和内部网络(eth2上的C)。除了默认路由表(通过A/ eth1),我还有两个路由表,每个路由表都有自己的默认网关。
我可以到达服务器通过互联网线A和SSH端口22,如预期。但当我试图通过互联网线路B到达时,返回的tcp/ip数据包是通过因特网线路A发送的。

显然,当我通过互联网线路B连接到服务器时,我希望它通过因特网线路B进行回复。
我怎样才能做到这一点?
到目前为止,我尝试过的是:我配置了sshd,以便它侦听第二个端口(122)。然后我添加了一个
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
ip rule add from all fwmark 1 table 2
ip route flush cache
iptables -A OUTPUT -p tcp --sport 122 -j LOG
iptables -A OUTPUT -t mangle -p tcp --sport 122 -j MARK --set-mark 1现在,我可以通过因特网线路B连接到服务器,但是答案被记录下来通过因特网线A返回。
到目前为止,我也尝试过:
我可以控制内部网络C中其他计算机产生的流量,通过因特网线路A或B发送--只需在预测表中标记它们的数据包:
$A -t mangle -A PREROUTING -p tcp --dport 80 -s 192.168.0.0/24 -j MARK --set-mark 2这个效果很好。
发布于 2019-05-14 10:57:15
您的设置需要使用PBR (基于策略的路由)。你在用它,但还不完整。您可以通过两种方式解决问题:
ip rule add from <srv-IP-A> table <tbl-A> pref 1001和ip rule add from <src-IP-B> table <tbl-B> pref 1002,其中A和B是对应的链接。它只适用于来自服务器本身的通信,因为它总是从初始连接请求接收到的相同ip地址进行答复。CONNMARK目标。它适用于所有情况。逻辑:连接轨迹条目与连接相关联,并且可能在其内部包含一个附加值。您可以将此值克隆到/从防火墙标记中复制,并在iptables规则中使用匹配。https://serverfault.com/questions/959661
复制相似问题