我想要实现的是build立连接到我的简单的服务器(使用TcpListener类,如果它有什么区别用C#编写的),在我的计算机后面的NAT。 它在Teredo接口上有一些IPv6地址(它是公共IP,从2001:0开始)。 但是,我甚至不能从我的networking外ping它,例如我试图从这个网站http://mebsd.com/ipv6-ping-and-traceroute ping这个地址,结果 – 100%的数据包丢失。 正如我从阅读Teredo的理解,不需要一些端口转发? 那么问题在哪里呢?
好的,现在我很困惑。 那么NAT Traversal和Teredo接口的目的是什么呢? 我以为我可以使用Teredo,例如在两台计算机之间build立Tcp连接,而不需要任何端口转发。
维基百科说:
“Teredo通过在大多数NAT可以正确转发的UDP / IPv4数据报中封装IPv6数据包来缓解这个问题,因此,NAT后面的IPv6感知主机可以用作Teredo隧道端点,即使它们没有专用公网IPv4地址,实际上,一个实现Teredo的主机可以在没有本地networking环境协作的情况下获得IPv6连接。
@从你的答案中得出的结论我认为这是不可能的,没有端口转发,所以对等应用如何工作? 例如BitTorrent客户端? 这对我来说是个好问题(而且不仅仅是我),需要解释;)
PS这里是我已经阅读了有关NAT穿越和Teredo在.NET中的文章: http : //blogs.msdn.com/b/ncl/archive/2009/07/27/end-to-end-connectivity-with-nat -traversal-的.aspx
您的跟踪路由表明您的stream量正在飓风电气的networking上丢失。 他们很可能正在操作您的计算机已连接到的Teredo中继。
数据包无法通过的事实表明您的PC与Teredo中继之间的通信故障。 最可能的原因是您的NAT设备由于不活动超时而放弃了Teredo UDPstream量的连接状态。 在这种情况下,连接不会再回来,直到您的PC通过隧道发送更多stream量,导致NAT设备再次开始跟踪连接。
这是Teredo在实践中极其不可靠的一个原因,尽pipe它理论上承诺穿越NAT设备。 如果在这种情况下需要更可靠的隧道,请尝试使用具有自己的穿越NAT的隧道协议的SixXS ,并保持连接(即使在连接闲置时偶尔也会发送stream量)。 您也可以使用Hogricane Electric的 proto-41隧道,但是在这种情况下,如果您的IPv4地址发生变化,您必须手动进行干预。