Да, это можно сделать с помощью протокола Teredo. Но это требует изменения кода на оба клиента Teredo и Teredo-сервера.
чтобы объяснить, почему он все еще может считаться одним и тем же протоколом, как только клиент и сервер были изменены, я сначала должен объяснить, каковы другие компоненты, участвующие в обмене данными.
основы технологии Teredo
четыре критических сетевых узла в связи с использованием протокола Teredo are:
- клиент Teredo
- сервер Teredo (выбирается клиентом)
- реле Teredo (выбирается собственным узлом IPv6)
- собственный узел IPv6
в конечном счете именно клиент Teredo и собственный узел IPv6 хотят обмениваться пакетами IPv6. Серверы Teredo и ретрансляторы Teredo существуют для облегчения этого трафика.
сервер Teredo участвует только в первоначальной настройке подключения. Как только соединение установленный трафик между клиентом Teredo и собственным узлом IPv6 проходит через ретранслятор, и сервер Teredo не видит его.
поскольку клиент не влияет на выбор ретранслятора Teredo, любое решение, требующее внесения изменений в ретранслятор, не будет работать. К счастью, это не требуется. Соединение между клиентом и ретранслятором, куда отправляется основная часть трафика, по-прежнему будет полностью стандартным трафиком Teredo.
потому что клиент и реле общайтесь, используя стандартный Teredo и потому, что клиент по-прежнему имеет адрес IPv6 в 2001::/32
префикс, это все еще квалифицируется как Teredo.
изменения нужны
12 битов в адрес Teredo выбрали наугад клиента Teredo. Модификация необходима на стороне клиента, чтобы сделать их не случайными.
48 бит в адресе Teredo - это адрес IPv4 и номер порта UDP клиента Teredo, как видно из Teredo сервер.
здесь очень важно, чтобы эти 48 бит были адресом порта, как видно на сервере. Из-за NAT клиент и ретранслятор могут подумать, что порт UDP имеет совершенно другой адрес. Но то, что видит IPv4-адрес и номер порта клиента и ретранслятора, не влияет на конечный IPv6-адрес.
обычно только нац расположен недалеко от клиента Teredo. Но если вы хотите влиять на окончательный адрес IPv6, NAT мог быть помещен на ту же самую машину как Сервера Teredo. Даже возможно построить NAT непосредственно на сервере Teredo, если вы так склонны.
существует ли какая-либо реализация этого?
наверное, нет.
Я ранее реализовал большинство сервера Teredo. Но клиент может выбрать только IPv4-адрес, а не номер UDP-порта. Мне нужен был номер порта UDP, чтобы различать клиентов.
сервер Teredo с поддержкой сохранение статического IPv4-адреса и UDP-порта для конкретного пользователя потребует определенного способа распознавания пользователя. В протоколе есть поля, которые потенциально могут быть использованы для этого. Но я не знаю какой-либо реализации с поддержкой идентификации клиентов Teredo к серверам Teredo.
кроме того, Teredo страдает от значительной проблемы надежности. Эта проблема надежности связана с частью протокола Teredo, которая не затрагивается никакими изменениями, которые я имею описанный здесь.
проблема с Teredo
проблема в том, как собственный узел IPv6 выбирает, какое реле Teredo использовать. В идеале администратор сети, в которой расположен собственный узел IPv6, должен настроить ретранслятор Teredo для этой сети (и найти его за пределами NAT, если NAT используется для IPv4).
но многие администраторы предпочитают не развертывать ретранслятор Teredo. Обычно рассуждая, что, поскольку Teredo настолько ненадежен, они не нужно поддерживать его (никогда не понимая, что это рассуждение делает Teredo ненадежным самоисполняющимся пророчеством).
вместо этого происходит то, что трафик с собственного узла IPv6 будет отправлен по маршруту по умолчанию вышестоящему поставщику, который, в свою очередь, может отправить его своему вышестоящему поставщику, и в конечном итоге трафик может оказаться на общедоступном стороннем ретрансляторе на AS, который решил объявить 2001::/32
.
используя реле третьей стороны значит более длинную сеть путь, который, в свою очередь, означает увеличение задержки. Это также означает, что нет никакого SLA, и реле Teredo может не иметь достаточной емкости для трафика, передаваемого ему.
в большинстве случаев, когда требуется статический IP-адрес, также требуется некоторая надежность. И поскольку вы редко контролируете все удаленные узлы, с которыми будете взаимодействовать, вы также не можете контролировать, какие ретрансляторы Teredo будут использоваться.
это делает Teredo со статическим IP-адресом нишей продукт для тех немногих, кто готов установить модифицированный клиент Teredo, чтобы получить статический IP-адрес без гарантий надежности.