Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
hev edited this page Oct 24, 2022 · 1 revision

NATMap

背景

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

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

NATMap是该技术方案的C语言实现,重点在于简洁轻量,适用于路由器等嵌入式环境。此外,NATMap相关软件包已被收录进OpenWrt官方软件仓库。

用途

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

AltStyle によって変換されたページ (->オリジナル) /