Автоматический UDP forwarding
От: mbait  
Дата: 29.11.17 08:02
Оценка:
Есть два машины, обе в домашней сети за маршрутизатором, на по очереди тестируется приложение, которое обменивается данными с удалённой машиной по RTP. Читается и слушается два UDP сокета на разных портах. Когда я запускаю приложение на одной машине, то данные приходят только на первый порт, когда же я запускаю на второй машине, данные приходят только на второй порт. Иногда всё работает правильно, и данные приходят в оба порта.

Я где-то читал, что если приложение посылает данные в определённый UDP порт удалённого узла и одновременно вызывает bind(2) для того же порта, то маршрутизатор автоматически устанавливает port forwarding на какое-то время. Но поиск ничего не даёт, а точного названия этой технологии я не знаю. По описанию подходит Firewall pinhole, но технических деталей я не могу найти.
Re: Автоматический UDP forwarding
От: reversecode google
Дата: 29.11.17 08:41
Оценка:
какие цели то преследуете ?
UDP hole punch ?
Re[2]: Автоматический UDP forwarding
От: mbait  
Дата: 29.11.17 15:54
Оценка:
Здравствуйте, reversecode, Вы писали:

R>какие цели то преследуете ?

R>UDP hole punch ?

Цель — добиться правильной работы приложения, чтобы при запуске программы на любой машине данные поступали на оба порта, а не как я описал.
Re: Автоматический UDP forwarding
От: Слава  
Дата: 29.11.17 15:59
Оценка:
Здравствуйте, mbait, Вы писали:

M>Есть два машины, обе в домашней сети за маршрутизатором, на по очереди тестируется приложение, которое обменивается данными с удалённой машиной по RTP. Читается и слушается два UDP сокета на разных портах. Когда я запускаю приложение на одной машине, то данные приходят только на первый порт, когда же я запускаю на второй машине, данные приходят только на второй порт. Иногда всё работает правильно, и данные приходят в оба порта.


Если у вас уже возникли термины вроде RTP, то и делайте так, как обычно в телефонии делается. Ставьте внешний STUN-сервер и пробивайте дыру в NAT, как это делает тот же freeswitch.
Re[3]: Автоматический UDP forwarding
От: reversecode google
Дата: 29.11.17 16:00
Оценка:
побуду телепатом
то как вы хотите, делается по другому
а то как оно работает — оно работает правильно в том виде как вы получили, хотя результат вас не устраивает
Re[2]: Автоматический UDP forwarding
От: Nikolay_Ch Россия  
Дата: 29.11.17 16:12
Оценка:
Здравствуйте, Слава, Вы писали:

С>Если у вас уже возникли термины вроде RTP, то и делайте так, как обычно в телефонии делается. Ставьте внешний STUN-сервер и пробивайте дыру в NAT, как это делает тот же freeswitch.

А Вы уверены, что автор вопроса Вас понял?
Re[3]: Автоматический UDP forwarding
От: Слава  
Дата: 29.11.17 16:22
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

С>>Если у вас уже возникли термины вроде RTP, то и делайте так, как обычно в телефонии делается. Ставьте внешний STUN-сервер и пробивайте дыру в NAT, как это делает тот же freeswitch.

N_C>А Вы уверены, что автор вопроса Вас понял?

Ну он сам про RTP написал, стало быть знаком с темой. И ссылку я дал.
Re[2]: Автоматический UDP forwarding
От: mbait  
Дата: 30.11.17 00:11
Оценка:
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, mbait, Вы писали:


M>>Есть два машины, обе в домашней сети за маршрутизатором, на по очереди тестируется приложение, которое обменивается данными с удалённой машиной по RTP. Читается и слушается два UDP сокета на разных портах. Когда я запускаю приложение на одной машине, то данные приходят только на первый порт, когда же я запускаю на второй машине, данные приходят только на второй порт. Иногда всё работает правильно, и данные приходят в оба порта.


С>Если у вас уже возникли термины вроде RTP, то и делайте так, как обычно в телефонии делается. Ставьте внешний STUN-сервер и пробивайте дыру в NAT, как это делает тот же freeswitch.


Благодарю, но у меня уже есть методы обхода NAT. Меня интересует причина, по которой приложение работает именно таким образом. Почему проброс одного порта идёт на одну машину, а другого — на вторую? Дело в RTP, или это не зависит от протокола? Есть какие-то средства, чтобы посмотреть правила, которые создаются? На маршрутизаторе стоит dd-wrt, и, соответственно, многие команды линукса должны быть доступны.
Re[4]: Автоматический UDP forwarding
От: mbait  
Дата: 30.11.17 00:15
Оценка:
Здравствуйте, reversecode, Вы писали:

R>а то как оно работает — оно работает правильно в том виде как вы получили, хотя результат вас не устраивает


Меня всё устраивает, я пытаюсь понять причину. Можно подробнее, почему оно именно так работает? Так как по одному из каналов передаются RTP-пакеты, то я подозреваю, что маршрутизатор видит это и реагирует как-то странно. По второму идут контрольные данные в свободном формате.

Как написал в ветке выше, методы обхода NAT реализованы и работают, но мне интересно понять, почему сеть работает так, а не иначе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.