Настраиваю nat на Debian 11 с помощью dnsmasq и iptables. В машине 2 сетевые карты: enp0s3 - смотрит в Интернет, получает адрес по DHCP и enp0s8 - смотрит в локальную сеть, имеет статический адрес. Хочу настроить машину как gateway из локальной сети в Интернет. Настраиваю dnsmasq для раздачи DHCP и DNS в локальной сети, выставляю net.ipv4.ip_forward=1
в /etc/sysctl.conf
и добавляю одно единственное правило в iptables: -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
, то есть для каждого пакета, которому нужно сделать nat, получаю ip-адрес интерфейса enp0s3 и меняю оригинальный source адрес пакета на адрес интерфейса.
Вопрос: каким образом Linux понимает, что nat нужно сделать именно с enp0s8 на enp0s3? Что если у меня не 2 а 10 интерфейсов? Правильно ли я понимаю, что дело в таблице маршрутизации, которую можно посмотреть с помощью команды ip route
? Linux смотрит на адрес назначения пакета и по таблице определяет в какой интерфейс нужно запульнуть пакет.