Клиенты Teredo, по сути, обертывают IPv6 пакет в IPv4 UDP пакет и передают его на сервер Teredo.
- Сервер Teredo использует общедоступный IPv4 адрес.
- Сервер пересылает IPv4 инкапсулированный IPv6 пакет по назначению.
- Клиент Teredo использует “живой” трафик с сервером.
- Это поддерживает NAT-мэппинг между клиентским портом источника и публичным IP-адресом (“клиентским” или публичным IP-адресом маршрутизатора).
- Существует интервал обновления, в течение которого клиент проверяет, что порт источника всё ещё действителен.
- Этот интервал случайным образом изменяется службой Teredo.
- Порты источника могут быть подвержены изменениям, и серверу Teredo важно знать, как связаться с клиентом.
- Teredo действует почти как служба динамической переадресации портов, которая отслеживает как публичный IP-адрес , так и порт источника клиента.
- Отслеживая порт источника и IP, это позволяет серверу Teredo связаться напрямую с клиентом, по сути, в обход NAT без каких-либо конфигураций.
Кажется, Teredo не очень хорошо работает с симметричным NAT.
- Симметричный NAT случайным образом изменяет “внешний” порт источника за сессию
- Сначала IP-адрес изменяется с немаршрутизируемого адреса источника на публичный IP-адрес.
- Next порт источника случайным образом изменяется, при этом отображение существует только в памяти маршрутизатора.
- После завершения соединения порт источника больше не используется
Для следующего сеанса выбирается новый случайный порт источника
Каким-то образом Teredo в Windows Vista и более новые преодолевают это, но я пока не нашел ясного объяснения тому, как это сделать.
Пожалуйста, прочтите IETF RFC на Teredo для более подробной информации.
Заметка: Я понимаю, что эта тема довольно старая, но на данный момент это главный хит во внутреннем поиске SuperUser “Что такое туннелирование Teredo”. Я хотел дать более общий ответ, так как именно его я искал, когда приехал сюда.