UDP между A и B работает, только если B отправляет пакет первым - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть два отдельных компьютера linux, A и B, которые должны обмениваться данными через UDP через порт 3000. Каждый из них находится за своим маршрутизатором, и у меня установлены правила переадресации портов на каждом маршрутизаторе.

По какой-то причине единственный способ B может принимать UDP-пакеты от A, если B сначала отправляет пакет в A.

Рабочий случай:

# Computer A Listens (IP 1.2.3.4)
netcat -ul 3000

# Computer B Initiates
netcat -u 1.2.3.4 3000

В приведенном выше случае два «соединяются» через netcat, и я могу отправлять и получать данные обоими способами.Это заставляет меня поверить, что это не проблема переадресации или маршрутизации портов.

Сломанный случай:

# Computer B Listens (IP 5.6.7.8)
netcat -ul 3000

# Computer A Initiates
netcat -u 5.6.7.8 3000

В этом сломанном случае оба не могут"подключиться" через netcat, и я не могу отправить какие-либо данные между обоими конечными точками.

Я также пытался использовать инструменты прямой отправки пакетов для отправки UDP-пакетов между A и B. То же самое происходит, B этоне может получить что-либо от A до тех пор, пока B не отправит пакет в A.

Я понятия не имею, почему могло произойти что-то подобное, особенно с UDP.Есть идеи, что может быть причиной проблемы?

К вашему сведению: A в данном случае - это рабочий стол linux на FIOS interent, B - TX2 с модемом 4G.У B есть несколько интерфейсов с настраиваемыми таблицами маршрутизации, которые я настроил.

Спасибо!

...