Скажем, у меня есть два устройства на маршрутизаторе, на обоих из которых установлено ПО, прослушивающее порт 999. Клиент за пределами моей локальной сети пытается подключиться к моему общедоступному IP-адресу через порт 999.

Как маршрутизатор узнает, на какое устройство направить запрос на подключение? Оба устройства прослушивают порт 999, но трафик может в конечном итоге попасть только на одно из устройств, не так ли?

Я знаю, что переадресация портов будет правильным способом обеспечить передачу данных на правильное устройство, но что, если конфигурация переадресации портов не настроена? Получает ли пакет отклонение от маршрутизатора, так как он не знает, какое устройство является "правильным" устройством?

2 ответа2

0

Это зависит от того, как настроен маршрутизатор. Наиболее распространенная конфигурация приводит к тому, что пакет либо игнорируется, либо приводит к сбросу соединения. Как правило, маршрутизаторы SoHo, выполняющие NAT, принимают входящие соединения только в том случае, если переадресация портов специально настроена или соединение осуществляется с самим маршрутизатором.

Одна морщина была бы, если маршрутизатор имеет назначение по умолчанию или настроенную DMZ. В этом случае соединение будет перенаправлено в пункт назначения по умолчанию.

Другая морщина была бы, если бы маршрутизатор поддерживал UPnP. В этом случае соединение будет перенаправлено на любой хост, который первым запросил переадресацию этого порта, если таковой имеется.

Наконец, некоторые маршрутизаторы имеют разрешающий NAT. В этом случае маршрутизатор будет делать лучшее предположение. Например, если в последнее время было активно только одно устройство, это устройство могло бы получить соединение. Или, если одно устройство ранее связывалось с IP-адресом, с которого произошло это соединение, это устройство могло бы получить соединение.

Это полностью зависит от того, как настроен маршрутизатор и какие функции он поддерживает.

-1

Для входящих соединений (обратите внимание, что я использую слово соединения, а не пакеты), без какой-либо переадресации порта / настройки 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .