Как отправлять пакеты клиенту под симметричным NAT

Я пытаюсь отправить UDP пакеты на общедоступный сервер с клиента в симметричной сети. Я могу отправлять пакеты на сервер. Однако я хочу, чтобы сервер отправлял пакеты клиенту под симметричным конусом. Как мне это решить? Пожалуйста помогите.


person user2060454    schedule 11.08.2014    source источник
comment
клиенты могут отправлять только общедоступный IP-адрес/порт противоположной стороны, поскольку это, как правило, единственные маршрутизируемые IP-адреса, которые у вас будут доступны.   -  person Marc B    schedule 11.08.2014


Ответы (1)


Заставьте сервер отправлять пакеты на внешний IP+порт клиента, который сервер обнаруживает при поступлении первого пакета от клиента.

По сути, маршрутизатор разрешает любой исходящий UDP-трафик от подключенных к нему устройств и блокирует весь входящий UDP-трафик. Но он поддерживает таблицу исходного и целевого IP + порт всякий раз, когда отправляется пакет UDP. Он разрешает ответы от устройств, внешних по отношению к маршрутизатору, при условии, что маршрутизатор должен иметь запись IP + порт внешнего устройства.

Итак, вам просто нужно использовать это сопоставление в таблице сейчас. Просто сделайте так, чтобы ваш сервер определял внешний IP+порт клиента из пакета, который он получает от клиента, а затем позвольте серверу отправлять пакеты обратно клиенту на этот внешний IP+порт.

Это пробьет брешь в брандмауэре маршрутизатора, то есть брандмауэр маршрутизатора теперь будет разрешать входящие пакеты UDP, поскольку он уже содержит запись в своей таблице. Этот процесс называется ПРОБИВАНИЕМ ОТВЕРСТИЙ.

Вы можете понять весь этот процесс обхода NAT в различных опубликованных RFC.

person Kunjan Thadani    schedule 22.08.2014