如何在Linux下使用Ncat体验UDP打洞?

d33*_*tah 5 linux nat udp

我希望看到UDP 打洞的实际效果。我在 Linux 下使用 Ncat 进行了测试。这是我尝试过的:

  1. 在主机 A 上打开端口 1234/UDP,在主机 B 的防火墙上打开端口 12345/UDP(我仍然位于 NAT 之后,但如果数据包到达我,至少内核不会丢弃它)
  2. 在主机 A 上 sudo ncat -u -p 1234 B 12345,然后尝试发送数据包打孔
  3. 主机 B 上 sudo ncat -u -p 12345 A 1234,然后尝试发送另一个数据包来打孔
  4. 尝试从主机 A 到 B 以及相反的通信,看看没有数据包到达另一端。

我可能做错了什么?我知道主机 A 可以为主机 B 创建一个漏洞,因为我观察到 P2P 通信器这样做,但我还没有检查其他方式。

小智 1

我建议首先将主机 B 从防火墙中取出,或者只是对主机 B 进行一对一的 NAT(所有协议,包括 TCP 和 UDP)以完全暴露它。或者至少在主机 B 上公开端口 12345/UDP。将主机 A 留在防火墙内,无需打开任何端口。将数据包从 A 发送到 B,然后从 B 返回到 A。如果 A 收到来自 B 的 UDP 数据包,则您已成功在主机 A 的防火墙上经历了打洞。

所以我的建议是首先尝试对防火墙进行打孔。

我认为不可能在完全被 NAT 覆盖的两台主机之间打洞,除非有第三台主机 C 可以被两台机器访问并欺骗防火墙在网络内转发 UDP 数据包。

我希望这有帮助