我的问题在某种程度上延伸了这一讨论:NAT 和 UDP 回复
场景:互联网上,机器 A 位于 NAT 机器 B 后面
- 机器 A:端口 M 向机器 B:端口 N 发送一个 UDP 数据包
- 机器 B:端口 N 向机器 A:端口 M 发送回复(我知道中间有一个 NAT 转换,对两台机器都是透明的)
如果机器 B 的源端口不同,机器 A 的公共路由器上的 NAT 机制是否有效。也就是说,将步骤 2 替换为以下内容仍然有效,并且机器 A 会收到来自机器 B 的 UDP 回复:
2. 机器 B:端口 Z 向机器 A:端口 M 发送回复
这可能不会起作用,否则会存在安全风险?或者取决于 NAT 的配置方式?
答案1
通常情况下,您有一个全状态检查路由器或防火墙。这意味着设备“看到”新连接并记住连接伙伴、端口和协议。因此,如果您发起新的连接请求,路由器会识别出这是 UDP 连接,并且会期待答复。因此,当答复返回时,路由器也会对回程进行 nat。因此,如果您更改机器 B 的源端口,重放将不起作用。
你好,赖德
答案2
NAT 并非完全标准化,因此无法说什么会起作用或不会起作用。话虽如此,但这类协议通常都是有效的。我建议使用 STUN(NAT 会话遍历实用程序)之类的工具来处理 NAT 框中的网络转换设置,以使您的通信正常工作。