UDP дырка между двумя клиентами на одном компьютере - PullRequest
0 голосов
/ 29 марта 2020

Я делаю 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
...