我们有 3 个 IP 连接到一个接口。我希望电子邮件流量通过特定 IP 发出,而不是默认 IP。(这是因为我们一直被 Spamhaus 屏蔽,所以我想将电子邮件流量与出站 Wi-Fi 流量等分开。)
现有的 iptables 规则块如下所示:
#Email
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 25
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 25 -j DNAT --to [server's LAN IP]:25
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 110
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 110 -j DNAT --to [server's LAN IP]:110
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 143
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 143 -j DNAT --to [server's LAN IP]:143
enp3s0
是外部网卡,enp6s0
如果重要的话,是内部网卡。
我可以添加/修改什么以使出站流量通过非默认的特定 IP?
答案1
您可以使用并更改表链iptables
中的源 IP ,或者使用高级路由并创建一个附加路由表,在其中设置属性的地址。POSTROUTING
nat
ip rule
src
iptables
/sbin/iptables -t nat -A POSTROUTING \
-o "$wan_if" -p tcp --dport 25 -j SNAT --to-source "$mail_ip"
策略路由
# just once
echo '25 smtp' >>/etc/iproute2/rt_tables
# after each boot
ip route add "$next_hop_network" dev "$wan_if"
ip route add default via "$next_hop" src "$mail_ip" table smtp
ip rule add prio 100 ipproto tcp dport 25 lookup smtp