我在很大程度上一直忽略STUN协议,但是我一直在不断地遇到它,而且我想知道它是一般的可用性。
如果我理解正确的话,STUN只有在最外层的NAT允许从addr:port对发送的数据包比在build立映射时使用源的情况下才有用。
我有一个明显的妄想的理解,一个理智的NAT将只允许从相同的addr:port对build立连接(terminal相关的过滤)的数据包。 不强制执行这似乎是一个严重的安全问题本身。 build立整个协议和RFC的顶部似乎是疯狂的。
问题:
NAT不是作为一项安全function,它是避免使用IPv4地址的一种手段,作为在IPv6完全部署之前的权宜之计。 因此,以最大化效用而不是安全的方式来实施它是有意义的。
因此,您的问题2的前提是错误的,因为NAT不是作为安全设备。 如果强制远程端点始终保持相同的状态,即使是一个应用程序,我也会认为在给定技术目标的情况下,不强制执行相同的远程端点更为合理。
对等IP电话(如Skype)将成为合法应用程序的一个显着示例,如果没有在NAT中打洞的能力,这种应用将无法正常工作:无论是由STUN还是类似的利用NAT:s,或通过像UPnP这样的技术。