如何在对称 NAT 下向客户端发送数据包
Posted
技术标签:
【中文标题】如何在对称 NAT 下向客户端发送数据包【英文标题】:How to send packets to a client under Symmetric NAT 【发布时间】:2014-10-04 13:49:55 【问题描述】:我正在尝试将 UDP 数据包从 对称 nat 中的 客户端 发送到 公共服务器。我能够向服务器发送数据包但是我希望服务器在对称锥形 nat 下向客户端发送数据包。我该如何解决这个问题?请帮帮我。
【问题讨论】:
客户端只能发送到对方的公共 IP/端口,因为这些通常是您可用的唯一可路由 IP。 【参考方案1】:使服务器将数据包发送到客户端的外部IP +端口,服务器在客户端的第一个数据包到达时检测到该端口。
基本上,路由器允许来自与其连接的设备的任何传出 UDP 流量,并阻止所有传入的 UDP 流量。但是,每当发送 UDP 数据包时,它都会维护一个源和目标 IP+端口表。它允许来自路由器外部设备的回复,前提是路由器必须具有外部设备 IP+端口的条目。
因此,您现在只需在表格中使用此映射即可。 只需让您的服务器从它从客户端接收的数据包中检测客户端的外部 IP+端口,然后让服务器在该外部 IP+端口上将数据包发送回客户端。
这将在路由器的防火墙上打一个洞,即路由器防火墙现在将允许传入的 UDP 数据包,因为它的表中已经包含一个条目。这个过程称为打孔。
您可以在各种发布的 RFC 中了解所有这些 NAT 穿越过程。
【讨论】:
以上是关于如何在对称 NAT 下向客户端发送数据包的主要内容,如果未能解决你的问题,请参考以下文章