18

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

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

3 ответа3

19

Только если исходным портом исходящей исходящей дейтаграммы был также порт 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 не формирует соединение, это всего лишь датаграмма, путешествующая по сети.

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

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