网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

在计算机网络中,NAT Hole Punching指的是一种利用NAT机制进行攻击的行为。

更新时间:2026年03月27日   作者:spoto   标签(Tag):

先决条件:网络地址转换(NAT)

什么是NAT漏洞利用? 

对于采用NAT技术的设备来说,其主要限制或缺点在于:它无法接受外部的连接请求。 如果有人试图这样做的话,NAT会确保消息能够被正确地送到“垃圾桶”里。 这种限制可以通过一种称为“孔冲切”的方法来克服。 在这种方法中,会使用一个位于NAT之外的节点,该节点拥有可公开访问的静态IP地址。这样的节点被称为“ rendezvous服务器”。 它用于在两个节点之间建立连接。这些节点可能都位于不同的NAT之后,或者都位于同一个NAT之后;或者一个节点位于NAT之后,另一个节点则不在NAT之后;又或者这些节点属于多个NAT的管辖范围。

它用于什么目的呢? 

由于世界上大多数计算机都使用了某种类型的NAT技术,因此这种方法被广泛使用。P2P(点对点)架构建立P2P网络需要任意两个节点之间直接进行连接。在创建P2P网络时,最关键的概念就是“穿孔”。利用这一概念,可以绕过网络防火墙。穿孔方式非常安全,因为连接必须由双方共同发起,因此需要双方的同意才能建立连接。

这是如何做到的呢? 

本文详细介绍了如何利用传输控制协议(TCP)、用户数据报协议(UDP)以及互联网控制消息协议(ICMP)来实现“hole punching”功能。同时,文章还阐述了“hole punching”的基本概念。

我们将讨论如何利用NAT hole punching技术,在以下情况下实现两个节点之间的连接。

  1. 背后的对手们常见的NAT方式
  2. 背后的对手们不同的NAT类型
  3. 背后的对手/竞争对手多种层次的NAT机制

NAT Hole Punch的基本运作原理是:当希望相互连接的节点都向服务器发送消息时,系统才会开始处理这些请求。 服务器以双方各自的IP地址和端口(即端点)来回应这两个节点之间的通信。 这两个节点都试图通过互相发送消息来建立连接。这些消息会被接收方的NAT系统丢弃,但发送方的NAT系统会记录下消息的发送地址。因此,来自该地址的任何消息都会被视为对该消息的回复,并会被路由到源端点。 这两个节点再次尝试通过发送消息来相互连接。 但现在,这些消息已经成功接收到了。因为NAT认为,这些消息其实是对之前那些被拒绝的请求的回复。于是,连接就建立起来了。洞已经被挖出来了。

术语/词汇:

  • A:节点1
  • B:节点2
  • S:rendezvous服务器

步骤:

  1. 向B发送请求连接请求。
  2. S将A的地址发送给B,同时将B的地址发送给A。
  3. A向B发送了垃圾信息,而B也向A发送了垃圾信息。(这两条消息都被各自的NAT系统丢弃了。)
  4. 步骤3被重复执行了一次。
  5. 连接已建立。

上述的自然地址转换漏洞修复方法,可以适用于各种情况。无论是两个节点都位于同一个自然地址转换层之后,还是两个节点分别位于不同的自然地址转换层之后,又或者两个节点都位于多个自然地址转换层之后,该方法都依然适用。

也许,NAT穿透技术唯一的缺点就是:必须拥有一个可以通过公共网络访问的、拥有静态IP地址的服务器。为了解决这个问题,有人提出了一种名为“pwnat”的解决方案。不过,这种解决方案只有在两个节点中的任何一个不处于NAT网络环境下时才能发挥作用。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料