После прочтения этого вопроса я все еще не понимаю, каким образом пакеты сопоставляются с соответствующими им хостами (получателями) за NAT в случае протоколов без установления соединения.

Принятый ответ предполагает, что NAT ведет запись номера порта хоста, значений SYN и ACK, чтобы правильно сопоставить входящий поток с ним. Однако в случае протоколов без установления соединения значения SYN и ACK не используются, поэтому только номер порта остается средством идентификации пакетов. Достаточно ли этого? Если несколько хостов за этим NAT используют один и тот же порт источника (вероятный случай с большими подсетями (т.е. 192.xx.xx.xx)), передаются ли входящие пакеты всем хостам, которые использовали соответствующий порт в своих пакетах?

2 ответа2

3

От принятого ответа на вопрос, с которым вы связаны

Брандмауэр получает этот пакет и отправляет его на удаленный сервер, но он делает это только после изменения IP-адреса на общедоступный IP-адрес локальной сети, а также, вероятно, изменения порта с другого на другой порт, выбранный брандмауэром.

Если две машины за NAT отправляют пакеты без установления соединения (UDP) на один и тот же сервер, NAT будет пересылать их с разных портов на NAT. Затем порт "to" на пакетах с сервера позволит NAT определить, на какой компьютер направлять эти пакеты.

Изменить: Например, если клиенты A и B находятся за NAT и сервером S в Интернете, передачи UDP могут выглядеть следующим образом (машина: порт):

A:31337 -> NAT:7 (ECHO) // NAT:31338 -> S:7
B:31337 -> NAT:7 (ECHO) // NAT:**31339** -> S:7
S:7 -> NAT:31338 // NAT:7 -> A:31337
S:7 -> NAT:**31339** // NAT:7 -> B:31337

И A, и B используют исходный порт 31337, но NAT сопоставляет их с разными портами (31338 и 31339 соответственно) от NAT до сервера S.

0

Я не эксперт но

Если у вас есть 2 машины за NAT и две машины с публичными IP-адресами вне NAT. Тогда машины, находящиеся за NAT, могут узнать одну удаленную машину от другой, потому что удаленные машины имеют разные IP-адреса. А удаленные знают один хост за NAT, с другого хоста за NAT, потому что они получают доступ к порту dest того, на кого они хотят отправить. Если две удаленные машины также находились за NAT и хотели отправлять на те машины с другой стороны, которые также находятся за NAT ... тогда IP и порт не указывали бы, кто был отправителем.

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