LINUX.ORG.RU
ФорумAdmin

Как Linux решает куда форвордить трафик?

 , ,


0

1

Настраиваю 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 смотрит на адрес назначения пакета и по таблице определяет в какой интерфейс нужно запульнуть пакет.

iptables: -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE,
Вопрос: каким образом Linux понимает, что nat нужно сделать именно с enp0s8 на enp0s3? Что если у меня не 2 а 10 интерфейсов?

Сколько раз можно повторять o от слова output.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Ну да, правило говорит, что нужно применить masquerade для пакетов которые пойдут в enp0s3, но вопрос-то был не в этом ;)

Goganchic ★★
() автор топика

Правильно ли я понимаю, что дело в таблице маршрутизации, которую можно посмотреть с помощью команды ip route?

В первом приближении — да. Если копать глубже, то окажется, что даже изначально таблиц маршрутизации 3 штуки, а не одна, а может быть ещё больше, что пакеты могут маршрутизироваться по куче разных критериев и так далее. Если нужно что-то сложнее «воткнул в комп усб-вифи, хочу теперь с телефона через комп интернет получать», то стоит почитать LARTC (Linux Advanched Routing and Traffic Control).

gremlin_the_red ★★★★★
()
Ответ на: комментарий от Goganchic

я ровно это и сказал, перечитай мое сообщение еще раз

перечитал

для пакетов которые пойдут в enp0s3

не увидел. Но раз вы подразумевали что-то другое, то и ладно.

anc ★★★★★
()

А что именно не понятно?

Вы по DHCP получаете шлюз по умолчанию в дефолтную таблицу маршрутизации, разрешаете пересылку пакетов и делаете маскардинг.

Вот и логика по умолчанию - все поступающие пакеты со всех сетевых плат отправляются на шлюз по умолчанию через интерфейс enp0s3 и при этом применяется MASQUERADE на эти пакеты.

gfh ★★★
()
Последнее исправление: gfh (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.