Skip to content
hev edited this page Oct 24, 2022 · 1 revision

NATMap

源起

NATMap项目的技术思路来源于 @mikeWang000000 在V2EX发布的文章:

《Natter: 在 NAT1 下开放公网 TCP 端口》

NATMap是该技术方案的C语言实现,聚焦于简单、轻量,适应路由器等嵌入式环境。

用途

NATMap实现与拥有动态公网IP同等的访问效果,它通过打通完全锥型(Full cone)类型NAT的TCP、UDP端口,实现任意主机在无需客户端的情况下进行直连访问。

原理

在4种典型NAT实现中,完全锥型(Full cone)类型NAT(简称为NAT-1),是访问限制最为宽松的NAT实现。具体定义为:

所有从同一个私网IP地址和端口(IP1:Port1)发送过来的报文都会被映射成同一个公网IP地址和端口(IP2:Port2)。并且任意外部主机通过向映射的公网IP2和端口Port2发送报文,都可以实现和内部主机IP1:Port1通信。

依据上述原理,当NATMap从内网侧主动建立一路TCP连接或发起UDP访问,就能触发NAT建立私网侧与公网侧地址间的端口映射关系。并在NATMap的维护下NAT会话能持续保持,也就能允许公网侧任意主机访问内部主机。访问效果上等同于拥有了一组公网IP:端口。

示例

TCP

UDP

FAQ

FAQ

Clone this wiki locally