首页 > 解决方案 > 一台机器上的两个客户端之间的 UDP 打孔

问题描述

我使用以下方法进行UDP 打孔:我有一个大厅服务器 L,以及一个(共享)NAT 后面的两个客户端 A 和 B。

现在,A 和 B 在同一台机器上运行。它们都向服务器 L 发送数据报。

服务器 L 告诉 A 和 B 对方的 IP+PORT。请注意,服务器看到的 A 和 B 的 IP 相同,但端口不同,正如预期的那样。

然后 A 和 B 使用服务器提供的 addr+port 相互发送数据报。

然而,他们彼此之间的数据报永远不会到达。

我的问题:如果两个客户端都在同一台机器上,UDP 打孔是否有效?如果他们只是在同一个局域网上,在同一个 NAT 后面怎么办?

注意:我试图降低路由器的严格性,但不幸的是, Archer C7似乎没有选择锥形/对称/不对称。我确实关闭了状态数据包检查。

更新:当我尝试发送打孔数据报时,我确实看到这是通过网络设备发送的:

ICMP dest unrch (port)

更新: stunclient 输出:

$ stunclient --mode full stun.stunprotocol.org
Binding test: success
Local address: 10.0.1.2:49703
Mapped address: 209.161.250.218:49703
Behavior test: success
Nat behavior: Endpoint Independent Mapping
Filtering test: success
Nat filtering: Address and Port Dependent Filtering

标签: udpnathole-punching

解决方案


推荐阅读