Я делаю UDP дырокол , используя следующий метод: у меня есть сервер лобби L и два клиента A и B за (общим) NAT.
Теперь A и B работают на одной машине. Они оба отправляют дейтаграмму на сервер L.
Сервер L сообщает обоим A и B IP + PORT другого. Обратите внимание, что IP-адреса A и B, которые видит сервер, идентичны, но порты отличаются, как и ожидалось.
Затем A и B отправляют дейтаграммы друг другу, используя предоставленный сервером порт addr +.
Тем не менее, их дейтаграммы друг другу никогда не поступают.
Мой вопрос: работает ли дырокол UDP, если оба клиента находятся на одной машине? Что если они находятся в одной локальной сети, за одним и тем же NAT?
ПРИМЕЧАНИЕ: Я пытался снизить строгость моего маршрутизатора, но Archer C7 этого не делает кажется, есть выбор для Cone / Symmetric / Asymmetri c, к сожалению. Я отключил Stateful Packet Inspection.
ОБНОВЛЕНИЕ : Когда я пытаюсь отправить перфорационные дейтаграммы, я вижу, что это происходит через сетевое устройство:
ICMP dest unrch (port)
ОБНОВЛЕНИЕ : вывод stunclient:
$ stunclient --mode full stun.stunprotocol.org
Binding test: success
Local address: 10.0.1.2:49703
Mapped address: 209.161.250.218:49703
Behavior test: success
Nat behavior: Endpoint Independent Mapping
Filtering test: success
Nat filtering: Address and Port Dependent Filtering