通过2个互联网连接从服务器转发端口

我在主服务器上有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)将始终默认为主要默认网关。