У нас есть 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-адрес, отличный от заданного по умолчанию?
Вы можете использовать либо iptables
и измените IP-адрес источника в POSTROUTING
цепочка nat
table или используйте расширенную маршрутизацию с ip rule
и создайте дополнительную таблицу маршрутизации, в которой вы установите адрес для src
атрибут.
/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