Тередо - как подключиться к хосту за NAT?

Все, чего я хочу добиться, это установить соединение с моим простым сервером (написанным на C# с использованием класса TcpListener, если это имеет какое-либо значение) на моем компьютере, который находится за NAT. Он имеет некоторый IPv6-адрес (это общедоступный IP-адрес, начиная с 2001:0) на интерфейсе Teredo. Однако я не могу даже пропинговать его из-за пределов своей сети, например, я пытаюсь пропинговать этот адрес с этого сайта http://mebsd.com/ipv6-ping-and-traceroute, результат - 100% потери пакетов. Как я понял из чтения о Teredo, нет необходимости в переадресации портов? Так в чем может быть проблема?


Хорошо, теперь я в замешательстве. Так каковы цели NAT Traversal и интерфейса Teredo вообще? Я думал, что смогу использовать Teredo, например, для установления соединения Tcp между двумя компьютерами за NAT, БЕЗ переадресации любого порта.

Википедия говорит:

"[..] Teredo облегчает эту проблему, инкапсулируя пакеты IPv6 в дейтаграммы UDP/IPv4, которые большинство NAT могут пересылать должным образом. Таким образом, хосты с поддержкой IPv6 за NAT могут использоваться в качестве конечных точек туннеля Teredo, даже если у них нет выделенного общедоступный адрес IPv4. По сути, хост, реализующий Teredo, может получить подключение по протоколу IPv6 без сотрудничества с локальной сетевой средой ".

@ Исходя из вашего ответа, я пришел к выводу, что это невозможно сделать без переадресации портов, так как работают одноранговые приложения? Например, клиенты BitTorrent? Это хороший вопрос для меня (и не только для меня), нужны объяснения;)

PS Вот статья, которую я прочитал о NAT Traversal и Teredo в.NET: http://blogs.msdn.com/b/ncl/archive/2009/07/27/end-to-end-connectivity-with-nat-traversal-.aspx

1 ответ

Ваша трассировка показывает, что ваш трафик сбрасывается в сети Hurricane Electric. Скорее всего, они использовали реле Teredo, к которому подключен ваш компьютер.

Тот факт, что пакеты не могли пройти дальше, указывает на нарушение связи между вашим ПК и реле Teredo. И наиболее вероятной причиной этого является то, что ваше устройство NAT потеряло свое состояние соединения для трафика Teredo UDP из-за тайм-аута неактивности. В этом случае соединение не будет восстановлено, пока ваш ПК не отправит больше трафика через туннель, в результате чего устройство NAT снова начнет отслеживать соединение.

Это одна из причин, почему Teredo крайне ненадежен на практике, несмотря на теоретическое обещание пробивать устройства NAT. Если вам нужен более надежный туннель в этом сценарии, попробуйте использовать SixXS, который имеет собственный протокол туннелирования, который пересекает NAT и остается подключенным (периодически отправляя трафик, даже когда соединение не используется). Вы также можете использовать прямой туннель Pro-41, такой как у Hurricane Electric, но в этом случае вам придется вмешиваться вручную, если ваш IPv4-адрес изменится.

Другие вопросы по тегам