1

Я пытаюсь понять, почему UDP дырокол работает.

  1. С учетом пиров A , B за NAT-маршрутизатором и Server с открытым портом 80.
  2. A отправляет пакет на Server с порта 1234 . Это заставляет маршрутизатор открывать маршрут из / в A:1234 и S:80
  3. B отправляет пакет на Server с порта 4321 . Это заставляет маршрутизатор открывать маршрут от / до B:4321 и S:80

В этот момент предполагается, что A может отправлять пакеты напрямую в B:4321 а B должен отправлять пакеты напрямую в A:1234 .

У меня есть два вопроса:

  1. Правильно ли я понимаю, как пробивать дыры в UDP?
  2. Почему маршрутизаторы не проверяют соответствие IP-адреса источника пакета Server? Разве это не угроза безопасности?

ОБНОВЛЕНИЕ: отвечая на мой собственный вопрос здесь, так как он помечен как закрытый. NAT дырокол работает следующим образом:

  1. С учетом пиров A , B за NAT-маршрутизатором и Server .
  2. A и B подключаются к Server и отправляют ему список портов, которые они будут использовать для исходящих / входящих соединений.
  3. Предполагая, что A перечисляет порт 1234 а B перечисляет порт 4321 , тогда A отправляет пакет из порта 1234 в B на порт 4321 . Это заставляет маршрутизатор открывать маршрут из / в A:1234 и B:4321 .
  4. Маршрутизатор B молча блокирует запрос, но маршрутизатор A держит соединение открытым в ожидании ответа.
  5. B отправляет пакет из порта 4321 в A порт 1234 . Это заставляет маршрутизатор открывать маршрут из / в B:4321 и A:1234 .
  6. Маршрутизатор A принимает входящее соединение, считая, что это ответ на шаг 3.
  7. Были сделаны. Обратите внимание, что на протяжении всего этого процесса мы использовали только исходящие соединения из A и B

0