我在主服务器上有3个接口,第一个用于本地networking,第二个和第三个是互联网连接(每个都有自己的IP路由表):
eth0 192.168.0.1 eth1 9.9.9.9 eth2 7.7.7.7
本地网主机192.168.0.2上有邮件服务器。 Iptables通过DNAT规则将数据包转换为主机9.9.9.9和7.7.7.7到192.168.0.2:25的25个端口。
还有我的主要服务器,这是由邮件服务器通过使用具体的路由表T1
ip rule add from 192.168.0.2 lookup T1
但是表T1只使用一个默认路由:
default via 7.7.7.6 dev eth2 src 7.7.7.7
如果数据包来自我的第一个提供商到接口9.9.9.9,当192.168.0.2发回请求给发送者时,它使用第二个提供者的默认网关,并且发送者不能build立连接。
我能做什么? 我的eth1和eth2是DNS上的mxlogging,他们必须都在工作。
这是预期的行为。
SMTP和路由path是7层联网的两个不同层。 最接近pipe理邮件的路由是为特定的networking构build一个辅助的默认路由,您只需要通过特定的网卡访问特定的networking即可。
例如,您可以构build一个仅影响端口25stream量的iptables规则; 如果目标地址是某个地址,则将其路由到默认网关2.其余(0.0.0.0)将始终默认为主要默认网关。