我们能否找到主机可以传输的数据包序列来确定它是否位于 NAT 盒后面?
我的意思是,没有任何像 STUN 这样的特殊服务器支持。
答案1
好吧,如果您的接口具有 RFC 1918 私有地址,但您仍然可以访问常见的 Internet 主机,则您的主机位于某处的 NAT 后面。:-)
答案2
不会,除非对端端点(称为 B)有意(或无意)包含对其对等点(称为 A)IP 的引用。除上述要求外,另一个要求是 B 点本身不得使用 NAT。
简而言之,你要么需要标准/非标准服务器的帮助(例如 STUN 或“自制”),要么需要通信抽象中的漏洞。后者应被视为设计缺陷,并被认为是不可靠的(在某些时候,某些人可能会修理它)。
答案3
显然可以使用 IP 数据包中的 TTL 字段来完成:http://www.sflow.org/detectNAT/。
答案4
我认为这不可能。据我所知,没有真正的方法可以判断是否使用了 NAT。