Адреса Teredo
Адрес Teredo состоит из следующих элементов:
Префикс Teredo
Первые 32 бита предназначены для префикса Teredo, который одинаков для всех адресов Teredo. В Windows XP и Windows Server 2003 изначально использовался префикс Teredo 3FFE:831F::/32. Префикс, определенный для Teredo в RFC 4380, имеет значение 2001::/32 и является префиксом, используемым Teredo в Windows Vista и Windows Server 2008. Компьютеры под управлением Windows XP и Windows Server 2003 будут использовать префикс 2001::/32 Teredo при обновлении с помощью microsoft Security Bulletin MS06-064.
IPv4-адрес сервера Teredo
Следующие 32 бита содержат общедоступный IPv4-адрес сервера Teredo, который помог настроить этот адрес Teredo. Дополнительные сведения см. в разделе Начальная конфигурация для клиентов Teredo этой статьи.
Flags
Следующие 16 бит для зарезервированы для флагов Teredo. Для клиентов Teredo под управлением Windows XP единственным определенным флагом является бит высокого порядка, известный как флаг Cone. Флаг Cone устанавливается, когда клиент Teredo находится за конусом NAT. Определение того, является ли NAT, подключенным к Интернету, конусным NAT, происходит во время начальной настройки клиента Teredo. Дополнительные сведения см. в разделе Начальная конфигурация для клиентов Teredo этой статьи.
Для клиентов Teredo под управлением Windows Vista и Windows Server 2008 неиспользуемые биты в поле Флаги обеспечивают уровень защиты от сканирования адресов злоумышленниками. 16 бит в поле Флаги для клиентов Teredo на основе Windows Vista и Windows Server 2008 состоят из следующего: CRAAAAUG AAAAAAAAAAAA. Бит C используется для флага Cone. Бит R зарезервирован для использования в будущем. Бит U используется для флага Universal/Local (значение 0). Бит G — это отдельный или групповой флаг (для параметра задано значение 0). Для битов A устанавливается 12-битовое случайно созданное число. Используя случайное число для битов A, злоумышленнику, который определил остальную часть адреса Teredo путем записи начального обмена пакетами конфигурации между клиентом Teredo и сервером Teredo, придется попробовать до 4096 (212) разных адресов, чтобы определить адрес клиента Teredo во время сканирования адреса.
Скрытие внешнего порта
В следующих 16 битах хранится скрытая версия внешнего порта UDP, соответствующая всему трафику Teredo для этого клиента Teredo. Когда клиент Teredo отправляет свой исходный пакет на сервер Teredo, исходный UDP-порт пакета сопоставляется NAT с другим внешним UDP-портом. Клиент Teredo поддерживает это сопоставление портов, чтобы оно оставалось в таблице преобразования NAT. Таким образом, весь трафик Teredo для узла использует один и тот же внешний сопоставленный UDP-порт. Внешний UDP-порт определяется сервером Teredo из исходного порта UDP входящего начального пакета, отправленного клиентом Teredo и отправляемого обратно клиенту Teredo.
Внешний порт скрывается при использовании XORing внешнего порта с 0xFFFF. Например, скрытая версия внешнего порта 5000 в шестнадцатеричном формате — EC77 (5000 = 0x1388, 0x1388 XOR 0xFFFF = 0xEC77). Скрытие внешнего порта не позволяет NAT преобразовать внешний порт в полезные данные пересылаемых пакетов.
Скрытие внешнего адреса
Последние 32 бита хранят скрытую версию внешнего IPv4-адреса, соответствующую всему трафику Teredo для этого клиента Teredo. Как и в случае с внешним портом, когда клиент Teredo отправляет исходный пакет серверу Teredo, исходный IP-адрес пакета сопоставляется NAT с другим внешним (общедоступным) адресом. Клиент Teredo поддерживает это сопоставление адресов, чтобы оно оставалось в таблице преобразования NAT. Таким образом, весь трафик Teredo для узла использует один и тот же внешний, сопоставленный общедоступный IPv4-адрес. Внешний IPv4-адрес определяется сервером Teredo из исходного IPv4-адреса входящего начального пакета, отправленного клиентом Teredo и отправленного обратно клиенту Teredo.
Внешний адрес скрывается при использовании XORing внешнего адреса с 0xFFFFFFFF. Например, скрытая версия общедоступного IPv4-адреса 131.107.0.1 в шестнадцатеричном формате — 7C94:FFFE (131.107.0.1 = 0x836B0001, 0x836B0001 XOR 0xFFFFFFFF = 0x7C94FFFE). Скрытие внешнего адреса не позволяет nats преобразовать внешний адрес в полезные данные пересылаемых пакетов.