一、NAT技术
1.1 NAT 转换表
NAT 设备(路由器/防火墙)内部维护一张状态表,表中每一条记录通常包含以下五元组信息:
| 字段 | 说明 |
|---|---|
| 内网 IP | 私有源地址 (如 192.168.1.100) |
| 内网端口 | 私有源端口 (如 54321) |
| 公网 IP | 转换后的全局地址 (如 203.0.113.1) |
| 公网端口 | 转换后的全局端口 (如 62000) |
| 协议类型 | TCP / UDP / ICMP 等 |
1.2 数据包处理流程

1.2.1 出站方向
当内网主机发起连接时,NAT 设备按以下步骤处理:
-
路由决策:确认数据包需要从 NAT 接口转发出去。
-
查表匹配:用 (内网IP, 内网端口, 目标IP, 目标端口, 协议) 查询现有表项。
-
命中:直接使用已有映射,执行地址/端口替换。
-
未命中:判定为新会话,进入下一步。
-
-
分配资源:从可用端口池中选择一个未被占用的公网端口。若使用多公网 IP 池,还需选择 IP 地址。
-
改写报文头:
-
将源 IP 替换为选定的公网 IP。
-
将源端口替换为选定的公网端口。
-
-
重新计算校验和:由于 IP 和端口发生变化,必须重新计算 IP 头部校验和、TCP/UDP 校验和(以及增量更新)。
-
创建表项:将新映射写入 NAT 表,启动超时计时器。
-
转发:将修改后的数据包送入出接口队列。
1.2.2 入站方向
当公网响应包到达 NAT 设备时:
-
查表匹配:用 (公网IP, 公网端口, 源IP, 源端口, 协议) 反向查询 NAT 表。
-
命中处理:
-
将目标 IP 还原为内网 IP。
-
将目标端口还原为内网端口。
-
重新计算校验和。
-
刷新该表项的超时计时器。
-
根据内网 IP 查找路由表,转发至内网。
-
-
未命中处理 :若无对应表项且无静态映射规则,默认丢弃该数据包(这就是 NAT 天然阻挡外部主动连接的原因)。
1.2.3 完整流程

二、代理服务器
代理服务器是:位于客户端与目标服务器之间的中间服务器。
客户端不直接访问目标资源,而是将请求发送给代理服务器,由代理服务器代为请求,再将结果返回给客户端。
2.1 正向代理
【正向代理】—— 代理"客户端"
用户 ──→ [正向代理] ──→ 互联网(各种网站)
目的:帮用户访问外部资源(翻墙、匿名、绕过限制)
工作流程
1. 客户端配置代理地址(如 192.168.1.100:8080)
2. 客户端发起请求 → 目标: proxy:8080,请求体中携带目标URL
3. 代理服务器解析目标URL
4. 代理服务器向目标服务器发起请求
5. 目标服务器返回响应给代理
6. 代理将响应转发给客户端
2.2 反向代理
【反向代理】—— 代理"服务端"
用户 ──→ [反向代理] ──→ 内部服务器集群(A、B、C...)
目的:保护后端、负载均衡、缓存加速
反向代理工作流程
1. 客户端正常发起请求 → 目标: proxy:80(客户端不知道代理存在)
2. 反向代理接收请求
3. 根据规则(URL、Header、负载均衡算法)选择后端服务器
4. 代理向后端服务器转发请求(可能修改/添加Header)
5. 后端返回响应
6. 代理将响应返回给客户端
三、内网穿透
3.1 内网穿透的认识
内网穿透 :将处于NAT/防火墙之后的内网设备或服务,通过某种技术手段暴露给公网用户访问的技术统称。
为什么需要内网穿透:让公网用户访问到私有ip的服务。
公网用户想访问你家里的电脑:
公网用户(8.8.8.8) ──→ ??? ──→ 你的电脑(192.168.1.100)
问题所在:
┌─────────────────────────────────────────────────────────┐
│ 1. 你的电脑没有公网IP(运营商分配的是内网IP或NAT后地址) │
│ 2. 192.168.1.100 是私有地址,公网路由不可达 │
│ 3. 路由器/防火墙默认拒绝入站连接 │
│ 4. 即使有公网IP,防火墙也会拦截未授权的入站请求 │
└─────────────────────────────────────────────────────────┘
网络层级:
┌──────────────────────────────────────────────────────────────┐
│ 公网 (Internet) │
│ 公网IP: 203.0.113.1 │
└───────────────────────────┬──────────────────────────────────┘
│ WAN口
┌────────▼────────┐
│ 家庭路由器 │ ← NAT设备
│ 192.168.1.1 │
└────────┬────────┘
│ LAN口
┌─────────────┼─────────────┐
│ │ │
┌────────▼───┐ ┌─────▼──────┐ ┌──▼─────────┐
│ 电脑 │ │ NAS │ │ 智能家居 │
│192.168.1.2 │ │192.168.1.3 │ │192.168.1.4 │
└────────────┘ └────────────┘ └────────────┘
这些私有地址(192.168.x.x / 10.x.x.x / 172.16~31.x.x)
公网完全无法直接路由到达
3.2 内网穿透的原理
核心原理:
内网设备【主动】向公网服务器建立【出站】连接(NAT允许出站)
然后利用这条已建立的连接,反向传输外部请求
┌──────────┐ ┌──────────────────┐ ┌──────────┐
│ 公网用户 │ │ 公网中继服务器 │ │ 内网设备 │
│ │ │ (有公网IP) │ │ │
│ │────────→│ │←────────│ │
│ 请求 │ ②访问 │ s通过已有隧道 │ ①主动 │ 服务 │
│ │ │ 转发请求 │ 连接 │ │
│ │←────────│ │────────→│ │
│ 响应 │ ⑥返回 │ ⑤返回响应 │ ④处理 │ 响应 │
└──────────┘ └──────────────────┘ └──────────┘
关键:步骤③是内网设备【主动发起】的出站连接
NAT对此完全放行(因为NAT允许出站)
之后所有通信都复用这条连接