我的主服务器上有 3 个接口,第一个用于本地网络,第二和第三个是互联网连接(每个都有自己的 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 的 25 端口的数据包转换为 192.168.0.2: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 将请求发送回发送方时,它会使用第二个提供商的默认网关,并且发送方无法建立连接。
我该怎么办?我的 eth1 和 eth2 是 DNS 上的 mx 记录,它们都必须正常工作。
答案1
这是一种预期的行为。
SMTP 和路由路径是 7 层网络结构中的两个不同层。管理邮件路由的最接近方法是为特定网络构建辅助默认路由,您始终希望仅通过特定 NIC 来路由该特定端口。
例如,您可以构建一个仅影响端口 25 流量的 iptables 规则;如果目标地址是某个地址,则将其路由到默认网关 2。其余地址(0.0.0.0)将始终默认为主要默认网关。