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