Teredo-cliënten wikkelen in wezen een IPv6-pakket in een IPv4 UDP-pakket en sturen het door naar een Teredo-server.
- De Teredo-server draait een publiek toegankelijk IPv4-adres.
- De server stuurt het IPv4 ingekapselde IPv6-pakket door naar de beoogde bestemming.
- De Teredo-client gebruikt “keep alive” verkeer met de server.
- Dit onderhoudt de NAT mapping tussen de bronpoort van de client en het publieke IP adres (het publieke IP van de “client” of de router).
- Er is een “refresh” interval waarbij de cliënt controleert of de bronpoort nog steeds geldig is.
- Dit interval wordt willekeurig gevarieerd door de Teredo dienst.
- Bronpoorten kunnen gevoelig zijn voor veranderingen en het is belangrijk dat de Teredo server weet hoe hij terug naar de cliënt kan komen.
- Teredo werkt bijna als een dynamische poort doorstuurdienst die zowel het publieke IP adres _ als_ de bronpoort van de cliënt bijhoudt.
- Door de bronpoort en het IP bij te houden kan de Teredo server direct terug naar de client, waarbij in wezen NAT wordt omzeild zonder dat er enige configuratie nodig is.
Teredo lijkt niet erg mooi te spelen met symmetrische NAT.
- Symmetrische NAT verandert willekeurig de “externe” bronpoort per sessie
- Eerst wordt het IP adres veranderd van het niet-veranderlijke adres van de bron naar het openbare IP adres.
- Next de bronpoort wordt willekeurig veranderd, waarbij de mapping alleen in het geheugen van de router aanwezig is.
- Wanneer de communicatie is voltooid is de bronpoort niet meer in gebruik
- Een nieuwe, willekeurige bronpoort wordt gekozen voor de volgende sessie.
Op een of andere manier overwint Teredo in Windows Vista en nieuwer dit, maar ik heb nog geen duidelijke verklaring gevonden voor hoe.
Lees de IETF RFC op Teredo voor meer details.
Aanwijzing: Ik realiseer me dat dit onderwerp vrij oud is, maar het is momenteel de tophit op SuperUser’s interne zoektocht naar “Wat is Teredo Tunneling”. Ik wilde een meer algemeen antwoord geven, want dat is wat ik zocht toen ik hier kwam.