Есть ли способ всегда использовать один и тот же адрес Teredo IPv6?

Есть ли способ всегда использовать один и тот же адрес Teredo IPv6?

Один из моих компьютеров находится у интернет-провайдера, поддерживающего только IPv4, поэтому я использую Miredo, чтобы получить адрес IPv6. Теперь мне нужно получить удаленный доступ к этому компьютеру с помощью IPv6. (Я не могу использовать IPv4 здесь, потому что он находится за NAT I и не могу добавить новые переадресации портов.) Проблема в том, что я не могу добавить запись DNS AAAA, потому что некоторая часть IP-адреса меняется случайным образом каждый раз, когда компьютер подключается к сети.

Итак, мой вопрос: есть ли способ всегда использовать один и тот же IP-адрес с Teredo?

решение1

IP-адреса Teredo зависят от нескольких факторов:Википедия.

Прежде всего, это зависит от IPv4-адреса маршрутизатора. Если он может меняться, у вас проблема.

Во-вторых, это зависит от исходного порта, используемого Teredo, который может быть транслирован и изменен устройством NAT. Если ваше устройство NAT сохраняет исходный порт, используемый приложениями внутри, выможетбыть в состоянии сделать это неизменным. Если вы используете Windows, опция "clientport" для Teredo может быть полезна.См. эту статью на technet.

Короткий ответ: Выможетбыть в состоянии сделать его одинаковым большую часть времени, но ваш пробег может значительно отличаться. Вероятно, вы не сможете получить это надежно, потому что устройство NAT может исказить ваш исходный порт. Вы можете остановить это, настроив переадресацию портов на вашем брандмауэре... но вы уже не можете этого сделать... так что...

Лучшим вариантом может стать настройка динамического DNS-клиента, если вы сможете найти такой, который будет публиковать IPv6-адрес интерфейса Teredo.

решение2

Видимо, так какRFC5991некоторые части адреса IPv6 всегда случайны, чтобы сделать его непредсказуемым.

Поэтому самым простым решением для меня было использование динамической службы DNS, поддерживающей IPv6, например dynv6.com.

решение3

Да, это возможно сделать с протоколом Teredo. Но это требует модифицированного кода как на клиенте Teredo, так и на сервере Teredo.

Чтобы объяснить, почему его можно по-прежнему считать тем же самым протоколом после модификации и клиента, и сервера, мне сначала придется объяснить, какие еще компоненты участвуют в коммуникации.

Основы Teredo

Четыре критических узла сети при коммуникации с использованием протокола Teredo:

  • Клиент 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 имеет совершенно другой адрес. Но то, что видят клиент и ретранслятор, не влияет на конечный адрес IPv6.

Обычно единственный задействованный NAT располагается близко к клиенту 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-адрес без каких-либо гарантий надежности.

решение4

Вам может быть лучше с 6in4туннелем. Это использует протокол 41, не требующий дополнительных правил NAT. Есть брокеры, которые предоставляют бесплатные туннели. Пока вы единственный в своей сети, использующий IP-адрес туннельного брокера, проблем быть не должно.

Если IP-адрес вашего маршрутизатора не является статическим, вам потребуется выполнить дополнительную настройку для перенастройки сети при изменении IP-адреса. Это похоже на то, что вам нужно сделать с DDNS.

Защитите свое соединение с помощью брандмауэра, поскольку у вас не будет NAT, защищающего вас от нежелательного трафика.

Поддержка обоих 6in4и 6to4встроена в Linux. Изначально я начал с 6to4, который работал, но не был таким стабильным, как мне хотелось. С ним у 6in4меня было стабильное подключение. Я использовал его для подключения NTP и получал стабильные источники времени через IPv6.

Связанный контент