Почему SNAT происходит в цепочке POSTROUTING и DNAT в цепочке PREROUTING?

Почему SNAT (изменяет исходный IP-адрес и / или порты) происходит в цепочке POSTROUTING таблицы nat , т.е. после маршрутизации? И почему DNAT (изменяет IP-адреса / IP-адреса назначения) происходит в PREROUTING ? Я предполагаю, что последнее состоит в том, что на ПК с несколькими частными сетями может быть несколько сетевых адаптеров, а ПК не знает, как маршрутизировать пакет, если IP-адрес назначения по-прежнему является общедоступным адресом маршрутизации? Однако для SNAT я не вижу причины, почему это не могло произойти в PREROUTING .

3 Solutions collect form web for “Почему SNAT происходит в цепочке POSTROUTING и DNAT в цепочке PREROUTING?”

Обычно основным критерием SNAT является «трафик, который выдает данный интерфейс» (т.е. -o eth0 ). Какой интерфейс выйдет из пакета, определяется маршрутизацией, поэтому для применения этого критерия вам необходимо запустить его в контексте POSTROUTING .

DNAT перезаписывает адрес назначения пакета, то есть он может влиять на то, куда идет пакет – например, пакет, который выглядит так, как он предназначен для шлюза, может быть переписан, чтобы вместо этого перейти к машине в сети. Поскольку вы хотите, чтобы маршрутизация могла учитывать этот переписанный пункт назначения, когда он принимает решение, так что пакет фактически идет туда, где ему нужно, DNAT должен работать в контексте PREROUTING .

Я почти уверен, что все, что приходит с локальной машины, никогда не проходит через таблицу PREROUTING , как видно из этой удивительной фигуры ASCII .

Как показывают названия цепей, PREROUTING выполняется сначала, когда пакет принимается и, таким образом, маршрутизируется в зависимости от того, куда он идет (пункт назначения). После того, как будут применены другие правила маршрутизации, POSTROUTING определит, где она идет, в зависимости от того, откуда она (источник).

Например, на моем сервере входящие порты, которые должны быть переадресованы (NATed), определены в PREROUTING как DNAT , а все пакеты, которые поступают с NAT-интерфейсов, проходят через цепочку POSTROUTING как SNAT и, следовательно (в этом корпус), пройдите через цепь фильтра FORWARD .

  • понимать цепочки и таблицы в netfilter / iptables
  • пакетный поток для соединений с сетью 127.0.0.0/8
  • (S / D) NAT через NF-крючки
  • Как перечислить все сетевые подключения Centos 7 (отслеживание соединений)
  • Матч-набор через libiptc
  • Как устройство IMQ расположено в потоке пакетов ядра Linux
  • Изменение тайм-аута записи ipset с правилом iptables
  • IPTables перенаправляет все UDP-пакеты, включая ESTABLISHED
  • NFTables NAT не закреплен
  • Shorewall для защиты интерфейсов, которые еще не определены
  • Шпилька в linux
  • Linux и Unix - лучшая ОС в мире.