Ответы NAT и UDP


20

Проверка работоспособности, пожалуйста.

Если я отправляю пакеты UDP с машины A за NAT за портом N машины B, где машина B находится за пределами NAT (в другом месте в Интернете), могу ли я разумно ожидать, что NAT будет передавать UDP-пакеты, полученные от машины B через порт N, обратно в порт N на компьютере A, не требуя ручной переадресации портов на NAT?

Ответы:


21

Только если исходным портом исходящей исходящей дейтаграммы был также порт N, и если NAT не решил использовать исходный порт.

То есть первая UDP-датаграмма с компьютера A выглядит так в вашей локальной сети:

       Source IP: MachineAPrivate  
     Source Port: PortA     <-- note this is typically different than the destination port  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Затем, после того, как он переведен NAT в исходящем направлении, он выглядит следующим образом:

       Source IP: NATPublic  
     Source Port: PortC   <-- note this may or may not be the same as "PortA" above  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Теперь, когда машина B отвечает, ответ обычно выглядит так:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: NATPublic  
Destination Port: PortC  

Затем, после прохождения входящего процесса трансляции NAT:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: MachineAPrivate  
Destination Port: PortA  

Итак, если машина A отправляет кадр с того же порта источника, что и порт назначения («Порт N»), и если NAT способен сохранить этот порт источника (т. Е. Он настроен на сохранение портов источника, когда это возможно, и этого порта источника не используется), ТОГДА можно ожидать ответа на «Порт N», чтобы вернуться к Машине А.

Вот авторитетная ссылка на правильное поведение NAT UDP:
RFC 4787 / BCP 127: Требования к поведению трансляции сетевых адресов (NAT) для одноадресного UDP


3

Близко, но машина B должна посмотреть адрес источника и номер порта, который он фактически получает, который может отличаться от N.

NAT на компьютере A может не использовать тот же порт N, на котором был отправлен компьютер A. (Представьте, что машина C за тем же NAT также отправляет через порт N: они оба не могут его использовать.) Таким образом, машина B может видеть другой порт источника, M. Но если NAT делает это, то он должен принимать трафик, отправленный обратно порт M и автоматически сопоставить его с N на компьютере B.

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


-1

Я бы не ожидал этого.

Вы можете иметь несколько IP-адресов за NAT, поэтому вам нужно выбрать, на какой он должен быть перенаправлен. Вне NAT виден только IP-адрес маршрутизатора, а внутренние IP-адреса NAT не видны.

UDP не формирует соединение, это всего лишь датаграмма, путешествующая по сети.

Существует также разница между портом отправки и номером порта приема.


Вы правы, что UDP не «формирует соединение», однако соединенные вместе порты источника и назначения фактически позволяют NAT однозначно определять, на какой IP-адрес позади NAT отправлять пакеты
portforwardpodcast
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.