Я хочу настроить nat на сервере / маршрутизаторе с несколькими публичными IP-адресами (в разных подсетях и с разными шлюзами, но с одинаковым физическим интерфейсом Ethernet), используя адрес A для всего локального трафика, исходящего от сервера, и адрес B для других машины позади нац. Я уже делал множество простых настроек nat, но редко работал с несколькими не локальными сетевыми адресами на одной машине. Предполагая, что установка, которую я хочу, возможна, как мне ее настроить?
2 ответа
Предполагая, что у нас есть один основной интерфейс A
называемый eth0
:
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
и другой интерфейс B
называется eth1
:
inet 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255
Также есть третья сеть C
в подсети 10.0.0.0/24
из которой мы хотим направить трафик к A
или B
Прежде всего, проверьте ip rule ls
:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
и главная политика маршрутизации ip route list table main
default via 192.168.1.1 dev eth0
10.0.0.0/24 dev lxc proto kernel scope link src 10.0.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1 metric 100
Теперь мы хотим добавить правило для почтового сервера с IP-адресом 10.0.0.13
для маршрутизации через интерфейс B
echo "200 mail" >> /etc/iproute2/rt_tables
ip rule add from 10.0.0.13 table mail
проверьте таблицу маршрутизации ip rule ls
0: from all lookup local
32765: from 10.0.0.13 lookup mail
32766: from all lookup main
32767: from all lookup default
Наконец, мы добавляем маршрут по умолчанию и очищаем кеш:
ip route add default via 192.168.2.1 dev eth1 table mail
ip route flush cache
Как я понял из вашего требования, вам нужно иметь два nat, один для локальной сети, а другой для самого сервера. Вы хотите, чтобы локальный ips/ LAN выходил через адрес A, а трафик, генерируемый сервером, проходил через адрес B.
Сначала добавьте адрес A и адрес B во внешнюю сеть Ethernet через подчиненный интерфейс.
ifconfig eth0 address A/x.x.x.x
ifconfig eth0:1 address B/x.x.x.x
Второй Добавьте правило SNAT для сети LAN
iptables -t nat -A POSTROUTING -s < LAN IP NETWORK > -o eth0 -j SNAT --to < address a >
В-третьих, добавьте SNAT для остальных (это также будет включать в себя машину souce)
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to < address B >
если это не работает, мы можем проверить.