2016-12-03 9 views
0

Я прочитал около WebRTC и как он позволяет общаться peer to peer. Итак, я сделал эксперимент для обхода .Эксперимент NAT Traversal?

Целью эксперимента было испытание штамповки отверстий в NAT. У меня была две системы, которые работали Ubuntu 16.04. Я буду ссылаться на эти системы как system A и system B.

Обе системы подключаются к серверу, размещенному на веб-сервисах Amazon. Система A использовала команду nc -p 1234 -u IP_ADDRESS_OF_SERVER PORT_NUMBER_OF_SERVER, а система B использовала команду nc -p 1235 -u IP_ADDRESS_OF_SERVER PORT_NUMBER_OF_SERVER. Система A и система B были подключены к одному и тому же WiFi-маршрутизатору.

После подключения к серверу мы узнали о public socket обеих систем. После этого я попытался связать друг друга, используя информацию общего сокета, которую мы получили с сервера в течение нескольких секунд.

Система A отсоединяется от сервера и подключается к системе B с помощью команды nc -u -p 1234 PUBLIC_IP_OF_SYS_B PUBLIC_PORT_OF_SYS_B, а система B также отключается от сервера и подключается к системе A с помощью команды nc -u -p 1235 PUBLIC_IP_OF_SYS_A PUBLIC_PORT_OF_SYS_A.

Я сделал это, чтобы пробить дыру в нашем NAT. После этого система A отменит команду nc и прослушивает ее порт, используя nc -l -u -p 1234. Но, к сожалению, я не смог получить сообщение, введенное системой B в системе A.

Может ли кто-нибудь помочь мне в получении этой работы?

+0

Не знаете, зачем идти на все эти проблемы, если вы можете просто запустить службу WebRTC и посмотреть, что произойдет. Попробуйте https://appear.in или https://talky.io. Если они работают, то работает NAT-траверс (или вам не нужен NAT). –

+1

@abhiarora - Отлично, попробуй. –

+0

@Am_I_Helpful - Вы пробовали это раньше? Вы можете что-то предложить? – abhiarora

ответ

1

Итак, я сам это понял. То, что я пытался сделать, называется Hairpin Translation, и перевод шпилек все еще гораздо менее распространен среди существующих NAT (по сравнению с перфокалом).

Эти две системы находятся за одним NAT и поэтому расположены в той же частной области IP-адресов. System A установил сеанс UDP с сервером S, которому общий NAT присвоил свой собственный номер публичного порта (скажем x). System B также установил сеанс с S, которому NAT назначил номер общего порта (скажем y).

Предположим, что system A использует технологию перфорации отверстий, чтобы установить сеанс UDP с B, используя сервер S в качестве интродуктора. System A отправляет S сообщение, запрашивающее соединение с B. S отвечает на A с публичными и частными конечными точками B, а также направляет публичные и частные конечные точки A в B. Оба клиента затем пытаются отправить датаграммы UDP друг другу непосредственно на каждой из этих конечных точек , Сообщения, направленные к публичным конечным точкам, не достигнут места назначения, так как наш NAT не поддерживает перевод шпильки.

Любой может читать о шпильке над here.