NAT UDP打洞初学者基础问答

NAT UDP打洞初学者基础问答

有没有简单的 UDP-NAT 打洞示例,能够为通过互联网进行 2 个对等通信打洞?
我正在尝试进行 UDP 打洞,以便可以进行 NAT 穿越。在浏览了互联网上的文本后,我们可以参考维基百科文章。我该怎么做?

首先,我已完成从公共端口 11235 到内部端口 11230 的 NAT 映射(虚拟服务器),这样如果我将任何 udp 数据包发送到 PublicIP:PublicPort,它应该到达 InternalIP:InternalPort。之后,我执行以下操作:
1. 我从浏览器通过 www.whatismyip.org 响应获取我的公共 IP 我现在知道我的公共 IP。假设它的四个八位字节是IA.IB.IC.ID
2. 我创建了一个应用程序,该应用程序将套接字 (UDP) 绑定到本地端口 11230,并将一些 UDP 数据包发送到端口 11235。3
. 然后,该应用程序作为服务器启动,在 UDP 端口 11230 上进行监听。从其他主机收到的任何请求都会通过几乎相同的消息主体进行回复。4
. 我在同一系统上运行另一个应用程序,将数据发送到我的公共 IP 端口 1135

如果我将数据包发送到 PublicIP:PublicPort,则发送到 UDP 应用程序监听的数据包不会收到任何数据包。但是,如果我将公共 IP 更改为 LAN 的内部 IP,则可以收到数据包。

我的网络配置如下:

  • DSL 调制解调器的 WAN 接口使用电话线连接至 ISP。
  • 调制解调器的以太网接口连接到路由器的 LAN 接口之一(共 8 个)
  • 笔记本电脑通过 WiFi 连接到路由器

为什么我的应用程序使用公共 IP 时无法连接。我还尝试循环将 UDP 数据包从客户端发送到服务器,所有端口号在 1000 到 65535 之间,这样如果任何端口被映射到内部 IP 端口,请求将至少从客户端发送到服务器一次。但这也没有用。应用程序的代码可以在这里找到:
客户,将数据包发送到服务器
服务器,监听来自客户端的数据包(请求)
任何线索,建议...

答案1

许多 NAT 系统只对来自公共互联网的传入流量起作用。当从网络内部访问公共 IP 时,它们不起作用。您应该让发送方机器位于 NAT 之外。

相关内容