Відповіді NAT та UDP


19

Перевірте розумність, будь ласка.

Якщо я надсилаю пакети UDP з машини A за NAT до порту машини N, де Machine 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  

Таким чином, IF Machine A надсилає кадр з того самого порту джерела, що і порт призначення ("Порт N"), а якщо NAT здатний зберегти цей вихідний порт (тобто він налаштований для збереження вихідних портів, коли це можливо, і цей вихідний порт не використовується), ТОГО ви можете очікувати відповіді на "Порт N", щоб повернутися до машини А.

Ось авторитетна довідка щодо правильної поведінки NAT UDP:
RFC 4787 / BCP 127: Поведінкові вимоги до трансляції мережевих адрес (NAT) для Unicast UDP


3

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

NAT на Machine A може не використовувати той самий порт N, який надсилає Machine A. (Уявіть, що машина C за цим самим NAT також надсилається через порт N: вони не можуть використовувати його.) Отже, машина B може побачити інший вихідний порт, але якщо NAT це зробить, то він повинен прийняти трафік, відправлений назад до порт M і автоматично відображає його назад на N на машині B.

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


-1

Я б цього не очікував.

Ви можете помножити IP-адреси за NAT, тому вам потрібно вибрати, до якого його слід пересилати. Поза NAT є видимим лише IP-маршрутизатор, а внутрішні NAT-IP-адреси не видно.

UDP не утворює з'єднання, а є лише дейтаграмою, яка подорожує по мережі.

Існує також різниця між відправленням порту та номером порту прийому.


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