DNAT (Destination Network Address Translation) в контексте проброса портов работает следующим образом: github.com
- Узел отправляет пакет на внешний адрес роутера. interface31.ru Адресом источника будет являться адрес узла, адресом назначения — внешний адрес роутера. interface31.ru
- Получив такой пакет, брандмауэр находит нужное правило и изменяет адрес назначения пакета на внутренний адрес целевого узла и отправляет его в локальную сеть. interface31.ru
- Узел назначения видит, что ему пришёл пакет от удалённого узла, и он формирует ответный пакет с этим адресом в качестве назначения, а в качестве источника подставляет собственный адрес. interface31.ru
- Так как удалённый узел не принадлежит локальной сети, данный пакет будет направлен основному шлюзу, то есть назад роутеру. interface31.ru
- Так как на шлюзе в любом случае включён SNAT или MASQUERADE, то локальный адрес источника будет заменён адресом внешнего интерфейса и такой пакет будет отправлен назад удалённому узлу. interface31.ru
Таким образом, удалённый узел общается только с внешним адресом роутера и не имеет ни малейшего представления о сети за ним, а локальный узел продолжает считать, что работает с удалённым узлом напрямую. interface31.ru