Teredo隧道

目的

6to4，最常用的IPv6通过IPv4的隧道协议，但它需要隧道端点有一个公网IPv4地址。然而，许多主机当前通过一个或多个NAT设备来连接IPv4互联网，原因之一是IPv4位址枯竭。在这种情况下，只有NAT设备有IPv4地址，6to4隧道端点必须在NAT设备上被实现。出于技术或经济原因，当前已被部署的许多NAT设备无法升级为实现6to4。
Teredo通过在UDP/IPv4数据包内封装IPv6数据包来缓解这个问题，大多数NAT可以正确转发此种流量。这样一来，NAT后的IPv6感知主机可以作为Teredo隧道端点，即使它没有专用的公网IPv4地址。实际上，一个实现Teredo的主机可以在没有本地网络环境合作的条件下获得IPv6连通性。
从长远来看，所有IPv6主机都应该使用原生IPv6连接。临时性的Teredo协议包含“落幕程序”规定：Teredo实现应该提供一个方法在当IPv6成熟并且使用一个非脆弱的连通机制时停止Teredo连接的使用。根据IETF89，微软计划在2014年上半年停用他们为Windows准备的Teredo服务器，并鼓励停用公共运行的Teredo中继。

限制

Teredo不兼容所有NAT设备。根据RFC 3489的术语，它支持全锥、受限和端口受限的NAT设备，但不支持对称NAT。最初的Shipworm规范制作的最终版Teredo协议也支持对称NAT，但最终由于安全考虑而放弃。
台湾的国立交通大学之后提出了SymTeredo，这增强了原有的Teredo协议以支持对称NAT，并且微软和Miredo的实现实施了某些的未规定、非标准的扩展以改进对对称NAT的支持。但是在对称NAT后的Teredo客户端与在对称NAT或端口限制NAT后的Teredo客户端的连通似乎仍然不可能。
另外，Teredo假设两个客户端交换封装的IPv6数据包时，他们使用的映射/外部的UDP端口号与他们联系Teredo服务器（以及创建Teredo IPv6地址）的端口号相同。若无此假设，两个客户端直接不可能创建直接通信，从而中继不得不进行三角形路由。一个Teredo实现尝试在启动时检测NAT类型，并且如果NAT看起来对称，则拒绝运作。（此限制有时可以在NAT设备上配置转发规则来解决，但这需要NAT设备的管理权限。）
Teredo只能为每个隧道端点提供一个IPv6地址。因此，不能使用一个Teredo隧道连接多个主机，这不同于6to4和某些点对点IPv6隧道。所有Teredo客户端与IPv6互联网的可用带宽都受到Teredo中继可用资源的限制，这与6to4等中继没什么区别。

备选方案

6to4需要一个公网IPv4地址，但为每个隧道端点提供一个较大的48位IPv6前缀，并有较低的封装头。点对点隧道可能比Teredo更可靠和负责，并且提供永久IPv6地址通常不依赖于隧道端点的IPv4地址。部分点对点隧道中间人（Tunnel broker）也支持UDP封装以穿透NAT（例如AYIYA协议可以做到）。但反过来说，点对点隧道通常需要注册。自动化工具（例如AICCU）可以简化使用点对点隧道的流程。

暴露

Teredo分配全局可路由的IPv6地址使NAT设备后的网络主机增加了攻击面，因为如不这样做则无法被互联网访问。因为这样做，Teredo潜在地将任何启用IPv6并开放端口到外部的应用程序暴露在外。Teredo隧道的封装可以隐蔽IPv6数据流量的内容，防止数据包检测乃至部分IPv4恶意软件的传播。US CERT已发表一篇论文，论述使用IPv6隧道的恶意软件风险。Teredo也将IPv6栈和隧道软件暴露给攻击者，如果它们被发现存在任何远程可利用的漏洞，这可能变得危险。
微软IPv6栈有一个“保护等级”套接字选项。这允许应用程序指定它们是否愿意处理出自Teredo隧道的流量，任何非Teredo隧道的流量（默认设置），或者只接收本地内部网的流量。
Teredo协议也在数据包中封装有关隧道端点的详细信息。

防火墙、过滤和阻止

为使Teredo伪隧道正常工作，发出的UDP数据包不能被过滤。此外，对这些数据包的回复（即回传的流量）也不能被过滤。这取决于NAT的典型设置及其有状态防火墙的功能。如果外发的IPv4 UDP流量被拦截，Teredo隧道软件会检测到致命错误并停止。另外，如果拦截外发值3544端口的UDP流量可能会干扰Teredo的活动。

通过路由环路DoS

在近期，一种新的使用Teredo隧道利用路由环路制造拒绝服务攻击已被发现。这相对容易预防。

默认启用

微软操作系统的当前版本已启用IPv6过渡技术，包括默认启用Teredo。如果IPv6未在公司网络上实现，可以通过命令行提示符、注册表编辑或使用组策略禁用这些过渡技术。由于微软默认启用，如果需要避免IPv6启用状态下的新安全威胁，管理员需要明确配置Windows操作系统中的和相关过渡技术。

名称由来

Teredo隧道协议的最初昵称为shipworm（船蛆）。该想法来自该协议将穿过NAT设备，很像船虫穿过木头上的隧道。Shipworms是造成很多木壳船损坏的成因，但Christian Huitema在原始草案中指出：“该种动物只在相对干净且未受污染的水中生存，它最近在几个北美港口的复出也证明这与清洁相关。与此类似，通过穿透NAT，该服务将有助于达到新的互联网透明度。”
Christian Huitema后将名称改为Teredo以避免将它与计算机蠕虫混淆。Teredo navalis（船蛆）是一种著名的船虫种类的拉丁名。