В компьютерных сетях, Teredo - это переходная технология, которая обеспечивает полное IPv6 подключение для хостов с поддержкой IPv6, которые находятся в IPv4 Интернете, но не имеют собственного подключения к сети IPv6. В отличие от подобных протоколов, таких как 6to4, он может выполнять свою функцию даже из-за устройств трансляции сетевых адресов (NAT), таких как домашние маршрутизаторы.
Teredo работает с использованием независимого от платформы протокола туннелирования, который обеспечивает соединение IPv6 (Интернет-протокол версии 6) посредством инкапсуляции Пакеты IPv6 дейтаграммы в пакетах IPv4 User Datagram Protocol (UDP). Teredo направляет эти дейтаграммы в IPv4 Internet и через устройства NAT. Узлы Teredo в другом месте сети IPv6 (называемые ретрансляторами Teredo ) получают пакеты, деинкапсулируют их и передают.
Тередо - временная мера. В долгосрочной перспективе все хосты IPv6 должны использовать собственное подключение IPv6. Teredo следует отключить, когда станет доступно собственное подключение IPv6. Christian Huitema разработал Teredo в Microsoft, а IETF стандартизировал его как RFC 4380. Сервер Teredo прослушивает UDP порт 3544.
6to4, наиболее распространенный протокол туннелирования IPv6 поверх IPv4, требует, чтобы конечная точка туннеля имеет общедоступный IPv4-адрес. Однако многие хосты в настоящее время подключаются к Интернету IPv4 через одно или несколько устройств NAT, обычно из-за нехватки IPv4-адреса. В такой ситуации устройству NAT назначается единственный доступный общедоступный IPv4-адрес, а конечная точка туннеля 6to4 должна быть реализована на самом устройстве NAT. Однако многие устройства NAT, развернутые в настоящее время, не могут быть модернизированы для реализации 6to4 по техническим или экономическим причинам.
Teredo решает эту проблему, инкапсулируя пакеты IPv6 в дейтаграммы UDP / IPv4, которые большинство NAT могут правильно пересылать. Таким образом, хосты с поддержкой IPv6 за NAT могут выступать в качестве конечных точек туннеля Teredo, даже если у них нет выделенного общедоступного IPv4-адреса. Фактически, хост, реализующий Teredo, может получить возможность подключения по IPv6 без взаимодействия с локальной сетевой средой.
В долгосрочной перспективе все хосты IPv6 должны использовать собственные возможности подключения IPv6. Временный протокол Teredo включает условия для процедуры закрытия: реализация Teredo должна обеспечивать способ прекращения использования возможности подключения Teredo, когда IPv6 становится зрелым и подключение становится доступным с использованием менее хрупкого механизма. Начиная с IETF89, Microsoft планирует деактивировать свои серверы Teredo для клиентов Windows в первой половине 2014 года (точная дата подлежит уточнению) и поощрять деактивацию общедоступных реле Teredo.
Протокол Teredo выполняет несколько функций:
Teredo определяет несколько различных типов узлов:
2001 :: / 32
).Каждому клиенту Teredo назначается public IPv6-адрес, который строится следующим образом (бит более высокого порядка имеет номер 0):
Биты | 0-31 | 32-63 | 64 - 79 | 80-95 | 96-127 |
---|---|---|---|---|---|
Длина | 32 бита | 32 бита | 16 бит | 16 бит | 32 бита |
Описание | Префикс | Teredo. IPv4 сервера | Флаги | Обфусцированный. UDP-порт | Обфусцированный клиент. общедоступный IPv4 |
В качестве примера адрес IPv6 2001: 0000: 4136: e378: 8000: 63bf: 3fff: fdd2 относится к клиенту Teredo, который :
Биты | 0 - 31 | 32 - 63 | 64 - 79 | 80 - 95 | 96 - 127 |
---|---|---|---|---|---|
Длина | 32 бита | 32 бита | 16 бит | 16 бит | 32 бита |
Описание | Префикс | Teredo. IPv4 сервера | Флаги | Обфусцированный. UDP-порт | Обфусцированный клиент. общедоступный IPv4 |
Часть | 2001:0000 | 4136: e378 | 8000 | 63bf | 3fff: fdd2 |
Decoded | 65.54.227.120 | cone NAT | 40000 | 192.0.2.45 |
Клиенты Teredo используют серверы Teredo для автоматического определения типа NAT, за которым они находятся (если есть), через упрощенная процедура квалификации, подобная STUN. Клиенты Teredo также поддерживают привязку своего NAT к своему серверу Teredo, отправляя пакеты UDP через регулярные промежутки времени. Это гарантирует, что сервер всегда может связаться с любым из своих клиентов, что требуется для правильной работы NAT-перфорации.
Если ретранслятор Teredo (или другой клиент Teredo) должен отправить пакет IPv6 клиенту Teredo, он сначала отправляет пузырьковый пакет Teredo на сервер Teredo клиента, чей IP-адрес он выводит из IPv6-адреса Teredo клиент Teredo. Затем сервер пересылает пузырек клиенту, поэтому клиентское программное обеспечение Teredo знает, что оно должно пробить дыру в реле Teredo.
Серверы Teredo также могут передавать пакет ICMPv6 от клиентов Teredo в Интернет IPv6. На практике, когда клиент Teredo хочет связаться с собственным узлом IPv6, он должен найти соответствующее реле Teredo, то есть номер общедоступного порта IPv4 и UDP для отправки инкапсулированных пакетов IPv6. Для этого клиент отправляет эхо-запрос ICMPv6 (эхо-запрос) к узлу IPv6 и отправляет его через настроенный сервер Teredo. Сервер Teredo декапсулирует эхо-запрос в Интернет IPv6, так что в конечном итоге эхо-запрос должен достигнуть узла IPv6. Затем узел IPv6 должен ответить эхо-ответом ICMPv6 в соответствии с требованиями RFC 2460. Этот ответный пакет направляется ближайшему ретранслятору Teredo, который, наконец, пытается связаться с клиентом Teredo.
Для обслуживания сервера Teredo требуется небольшая полоса пропускания, поскольку он не участвует в фактической передаче и приеме пакетов трафика IPv6. Кроме того, он не предполагает доступа к протоколам маршрутизации в Интернете. Единственными требованиями к серверу Teredo являются:
Общедоступные серверы Teredo:
Реле Teredo потенциально требует большой пропускной способности сети. Кроме того, он должен экспортировать (объявить) маршрут к префиксу Teredo IPv6 (2001 :: / 32) на другие хосты IPv6. Таким образом, ретранслятор Teredo получает трафик от хостов IPv6, адресованный любому клиенту Teredo, и пересылает его по UDP / IPv4. Симметрично он получает пакеты от клиентов Teredo, адресованные собственным узлам IPv6 через UDP / IPv4, и вводит их в собственную сеть IPv6.
На практике сетевые администраторы могут настроить частный ретранслятор Teredo для своей компании или кампуса. Это обеспечивает короткий путь между их сетью IPv6 и любым клиентом Teredo. Однако для настройки ретранслятора Teredo в масштабе, превышающем масштаб отдельной сети, требуется возможность экспортировать маршруты BGP IPv6 в другие автономные системы (AS).
В отличие от 6to4, где две половины соединения могут использовать разные ретрансляторы, трафик между собственным хостом IPv6 и клиентом Teredo использует одно и то же реле Teredo, а именно самое близкое к родному. Хост IPv6 по сети. Клиент Teredo не может самостоятельно локализовать ретранслятор (поскольку он не может отправлять пакеты IPv6 сам по себе). Если ему необходимо инициировать соединение с собственным хостом IPv6, он отправляет первый пакет через сервер Teredo, который отправляет пакет на собственный хост IPv6, используя IPv6-адрес Teredo клиента. Затем собственный хост IPv6 как обычно отвечает на IPv6-адрес Teredo клиента, что в конечном итоге приводит к тому, что пакет обнаруживает ретранслятор Teredo, который инициирует соединение с клиентом (возможно, с использованием сервера Teredo для проникновения NAT). Затем клиент Teredo и собственный хост IPv6 используют ретранслятор для связи столько, сколько им необходимо. Такой дизайн означает, что ни серверу Teredo, ни клиенту не требуется знать IPv4-адрес каких-либо реле Teredo. Они находят подходящий автоматически через глобальную таблицу маршрутизации IPv6, поскольку все ретрансляторы Teredo анонсируют сеть 2001 :: / 32.
30 марта 2006 г. итальянский интернет-провайдер ITGate стал первым AS, который начал рекламировать маршрут к 2001 :: / 32 на IPv6. Интернет, чтобы можно было полностью использовать RFC 4380 -совместимые реализации Teredo. С 16 февраля 2007 года он больше не функционирует.
В первом квартале 2009 г. магистраль IPv6 Hurricane Electric включила 14 реле Teredo в реализации anycast и рекламирует 2001 :: / 32 во всем мире. Реле были расположены в Сиэтле, Фремонте, Лос-Анджелесе, Чикаго, Далласе, Торонто, Нью-Йорке, Эшберне, Майами, Лондоне, Париже, Амстердаме, Франкфурте и Гонконге.
Ожидается, что крупные сетевые операторы будут обслуживать реле Teredo. Как и в случае с 6to4, остается неясным, насколько хорошо будет расширяться служба Teredo, если большая часть интернет-узлов начнет использовать IPv6 через Teredo в дополнение к IPv4. Хотя Microsoft управляет набором серверов Teredo с момента выпуска первого псевдотуннеля Teredo для Windows XP, они никогда не предоставляли службу ретрансляции Teredo для Интернета IPv6 в целом.
Teredo не совместим со всеми устройствами NAT. Используя терминологию RFC 3489, он поддерживает устройства с полным конусом, ограничением и ограничением портов NAT, но не поддерживает симметричные NAT. Оригинал спецификации Shipworm, который привел к окончательному протоколу Teredo, также поддерживал симметричные NAT, но отказался от него из соображений безопасности.
Сотрудники Национального университета Цзяо Дун на Тайване позже предложили SymTeredo, который усовершенствовал исходный протокол Teredo для поддержки симметричных NAT, а реализации Microsoft и Miredo реализуют определенные неуказанные нестандартные расширения для улучшить поддержку симметричных NAT. Однако соединение между клиентом Teredo за симметричным NAT и клиентом Teredo за ограниченным портом или симметричным NAT остается, по-видимому, невозможным.
Teredo предполагает, что, когда два клиента обмениваются инкапсулированными пакетами IPv6, сопоставленный / внешний UDP номера портов, которые они используют, те же, что используются для связи с сервером Teredo (и создания адреса Teredo IPv6). Без этого предположения было бы невозможно установить прямую связь между двумя клиентами, и дорогостоящему ретранслятору пришлось бы выполнять треугольную маршрутизацию. Реализация Teredo пытается определить тип NAT при запуске и отказывается работать, если NAT кажется симметричным. (Это ограничение иногда можно обойти, вручную настроив правило переадресации портов в блоке NAT, что требует административного доступа к устройству).
Teredo может предоставить только один адрес IPv6 для каждой конечной точки туннеля. Таким образом, невозможно использовать один туннель Teredo для подключения нескольких хостов, в отличие от 6to4 и некоторых туннелей IPv6 точка-точка. Пропускная способность, доступная для всех клиентов Teredo по отношению к Интернету IPv6, ограничена доступностью ретрансляторов Teredo, которые в этом отношении ничем не отличаются от ретрансляторов 6to4.
6to4 требует общедоступного IPv4-адреса, но предоставляет большой 48-битный префикс IPv6 для каждой конечной точки туннеля и имеет меньшие издержки инкапсуляции . Туннели «точка-точка» могут быть более надежными и подотчетными, чем Teredo, и обычно предоставляют постоянные адреса IPv6, которые не зависят от адреса IPv4 конечной точки туннеля. Некоторые туннельные брокеры точка-точка также поддерживают инкапсуляцию UDP для прохождения NAT (например, протокол AYIYA может это делать). С другой стороны, туннели «точка-точка» обычно требуют регистрации. Автоматизированные инструменты (например, AICCU ) упрощают использование туннелей точка-точка.
Teredo увеличивает поверхность атаки, назначая глобально маршрутизируемые IPv6-адреса сетевым узлам за устройствами NAT, которые в противном случае были бы недоступны из Интернета. Таким образом, Teredo потенциально предоставляет доступ к любому приложению с поддержкой IPv6 с открытым портом извне. Инкапсуляция туннеля Teredo также может привести к тому, что содержимое трафика данных IPv6 станет невидимым для программного обеспечения проверки пакетов, что способствует распространению вредоносных программ. Наконец, Teredo подвергает стек IPv6 и программное обеспечение туннелирования атакам, если они имеют какую-либо уязвимость, которую можно использовать удаленно.
Чтобы уменьшить поверхность атаки, стек Microsoft IPv6 имеет параметр «уровень защиты» сокет. Это позволяет приложениям указать, из каких источников они хотят принимать трафик IPv6: из туннеля Teredo, из любого места, кроме Teredo (по умолчанию), или только из локальной интрасети.
. Протокол Teredo также инкапсулирует подробную информацию о конечная точка туннеля в своих пакетах данных. Эта информация может помочь потенциальным злоумышленникам, увеличив вероятность атаки и / или уменьшив необходимые усилия.
Для правильной работы псевдотуннеля Teredo, исходящие пакеты UDP на порт 3544 должны быть нефильтрованными. Более того, ответы на эти пакеты (т.е. «запрошенный трафик») также должны быть нефильтрованными. Это соответствует типичной настройке NAT и его функциональности брандмауэра с отслеживанием состояния. Программное обеспечение для туннелирования Teredo сообщает о фатальной ошибке и останавливается, если исходящий трафик IPv4 UDP заблокирован.
В 2010 году были обнаружены новые методы создания атак типа «отказ в обслуживании» через петли маршрутизации, использующие туннели Teredo. Их относительно легко предотвратить.
Microsoft Windows начиная с Windows 10, версии 1803 и более поздних версий, по умолчанию Teredo отключается. При необходимости эту переходную технологию можно включить с помощью команды CLI или с помощью групповой политики.
В настоящее время доступно несколько реализаций Teredo:
Первоначальное прозвище туннельного протокола Teredo было Shipworm. Идея заключалась в том, что протокол будет проходить через устройства NAT, подобно тому как корабельный червь (разновидность морского моллюска, сверлящего древесину) прокладывает туннели в древесине. Корабельные черви были ответственны за потерю многих деревянных корпусов. Кристиан Уитема в первоначальном проекте отмечал, что корабельный червь «выживает только в относительно чистой и незагрязненной воде; его недавнее возвращение в несколько североамериканских гаваней является свидетельством их недавно полученной чистоты. Служба корабельного червя, в свою очередь, должна внести свой вклад [<sic ] к недавно полученной прозрачности Интернета. "
Чтобы избежать путаницы с компьютерными червями, Huitema позже изменила имя протокола с Shipworm на Teredo, после рода названия корабельного червя Teredo navalis.