Назад | Перейти на главную страницу

udp через нат

У меня две частные сети (каждая из них за типичным маршрутизатором dsl). Маршрутизаторы подключены к WWW. Внешний интерфейс каждого маршрутизатора имеет один динамический IP-адрес. Я хочу передавать данные через UDP напрямую между одним клиентом в частной сети A и одним клиентом в частной сети B.

Я уже много чего перепробовал (см .: http://en.wikipedia.org/wiki/UDP_hole_punching, или STUN). Но у меня не было возможности передавать данные между двумя клиентами.

Можно использовать сервер (расположенный в WWW со статическим IP-адресом) для передачи внешних IP-адресов (и внешних портов) с маршрутизаторов между клиентами. Итак, представьте, что клиент A знает внешний IP-адрес клиента B и внешний порт клиента B, назначенный его маршрутизатором.

Я просто попытался отправить UDP-пакет на комбинацию внешнего IP / порта получателя, но безрезультатно. Так кто-нибудь знает, что делать для связи через UDP через два маршрутизатора NAT? Это должно быть возможно ??? Или Skype, например, не взаимодействует напрямую между клиентами при звонке друг другу (передача голоса по IP).

Прошу прощения за мой плохой английский! Если что-то не так, спросите меня !!!

Заранее благодарны за Вашу помощь.

::::РЕДАКТИРОВАТЬ::::

Я не могу заставить работать pwnat или chownat.
Я пробовал это со своим собственным DSL-шлюзом -> не сработало.

Затем я настроил полную виртуальную среду с помощью VMWare.

C1 (клиент 1, WinXP Prof SP3): 172.16.16.100/24, GW 172.16.16.1
C2 (клиент 2, WinXP Prof SP3): 10.0.0.100/24, GW 10.0.0.1
C3 (Клиент 3, WinXP Prof SP3): 3.0.0.2/24, GW 3.0.0.1
S1 (Ubuntu 10.04 x64 Server): eth0: 172.16.16.1/24, eth1: 1.0.0.2/24 GW 1.0.0.1
S2 (сервер Ubuntu 10.04 x64): eth0: 10.0.0.1/24, eth1: 2.0.0.2/24 GW 2.0.0.1
S3 (Ubuntu 10.04 x64 Server): eth0: 1.0.0.1/24, eth1: 2.0.0.1/24, eth2: 3.0.0.1/24

+--+     +--+     +--+     +--+     +--+  
|C1|-----|S1|-----|S3|-----|S2|-----|C2|  
+--+     +--+     +--+     +--+     +--+
                    |  
                  +--+  
                  |C3|  
                  +--+  

Серверы S1 и S2 обеспечивают функцию NAT. (у них включена маршрутизация и есть межсетевой экран, который позволяет трафик из внутренней сети и обеспечивает функциональность nat). На сервере S3 включена маршрутизация. Клиентские брандмауэры отключены.

C1 и C2 могут пинговать C3, например посетите веб-сервер C3. Они также могут отправлять UDP-пакеты на C3 (C3 успешно их принимает)!

У C1 и C2 также есть веб-серверы, работающие в целях тестирования.

Я запускаю "chownat -s 80 2.0.0.2" "на C1 и" "chownat -c 8000 1.0.0.2" "на C2. Затем я попытался получить доступ к веб-странице из C1 через localhost веб-браузера через порт 8000. Это не сработало.

Кто-нибудь может мне помочь? Какие-либо предложения? Если у вас есть вопросы по моему вопросу, задавайте!

решено ... UDP Техника пробивки отверстий работает! Это была ошибка реализации!

Для простого приложения на базе Windows вы можете попробовать Логмейн Хамачи.

Для более продвинутого решения для соединения NAT с NAT udp / tcp см. pwnat.

Попробуйте любое из:

  1. Настройте свои DSL-шлюзы для пересылки полученных UDP-пакетов через определенный порт непосредственно на соответствующий хост

  2. Настройте туннели IPv6 на своих внутренних узлах, тогда вы сможете напрямую общаться