Для вхідних з'єднань (зауважте, що я використовую слово з'єднання, а не пакети), без будь-якого налаштування переадресації порту / UPnP він би відхилив або відмовив пакет.
Для вихідних з'єднань (за допомогою SNAT) маршрутизатор буде зберігати "стан". Він перегляне всі вихідні з'єднання (для простоти, пакет TCP, що йде зсередини назовні з прапором SYN), переписать адресу / порт джерела на WAN-з'єднання і надішле пакет далі. Він знає, до чого він переписав адресу / порт джерела, і коли пакет повернеться, він поверне цей процес до вихідної адреси / порту.
Тому для мого NAT-маршрутизатора я отримав би таку таблицю:
TCP state codes: SS - SYN SENT, SR - SYN RECEIVED, ES - ESTABLISHED,
FW - FIN WAIT, CW - CLOSE WAIT, LA - LAST ACK,
TW - TIME WAIT, CL - CLOSE, LI - LISTEN
CONN ID Source Destination Protocol TIMEOUT
201805472 10.100.0.95:62110 83.69.0.50:42018 udp [17] 7
213891648 10.100.0.95:43327 176.68.233.117:53228 tcp [6] ES 4631
213891928 10.100.0.95:38139 213.101.14.165:54764 tcp [6] ES 6995
213223160 10.100.0.95:35725 176.68.233.117:53228 tcp [6] ES 386
215913952 10.100.0.1:38340 10.100.0.11:53 udp [17] 8
205319000 10.100.0.95:62110 95.22.94.199:22634 udp [17] 41
214931472 10.100.0.95:60500 213.101.14.165:5524 tcp [6] ES 6478
205547536 10.100.1.26:37992 141.138.198.177:993 tcp [6] ES 7118
387202720 10.100.1.26:58156 141.138.198.177:993 tcp [6] ES 7122
[output omitted]
Якщо є пакет, що повертається з 176.68.233.117 з портом призначення 53228, він перепише адресу / порт призначення на 10 10.100.0.95:43327.