STUN 能在大多数 NAT 上起作用吗?

STUN 能在大多数 NAT 上起作用吗?

一段时间以来,我基本上一直将 STUN 协议视为噪音,但我还是时不时地遇到它,并且我对它的一般可用性感到疑惑。

如果我理解正确的话,STUN 仅在最外层 NAT 允许从对发送的数据包addr:port比建立映射时源使用的数据包多时才有用。

我有一个明显错误的认识,认为一个合理的 NAT 只允许从addr:port建立连接的同一对中返回数据包(端点相关过滤)。不执行这个规定本身似乎是一个严重的安全问题。在此基础上构建整个协议和 RFC 似乎很疯狂。

问题:

  1. 是否真的有很多 NAT 只进行端点独立过滤?
  2. 除了懒惰、危及背后的系统以及为“p2p 友好”功能收取额外费用之外,在 NAT 上进行端点独立过滤还有什么好的理由吗?

答案1

NAT 并非旨在作为一种安全功能 - 它是一种避免 IPv4 地址耗尽的手段,在 IPv6 完全部署之前作为权宜之计。因此,以最大化实用性而非安全性的方式实施它是有意义的。

因此,您的问题 2 的前提是错误的,因为 NAT 并非旨在用作安全设备。如果强制远程端点始终相同甚至会破坏一个应用程序,那么考虑到该技术的目标,我认为不强制使用相同的远程端点更为明智。

点对点 IP 电话(例如 Skype)是一个著名的例子,如果不能在 NAT 中打洞,合法应用程序就无法正常工作,无论是通过 STUN 或利用 NAT 行为的类似技术,还是通过 UPnP 之类的技术。

相关内容