☰
【Linux笔记】NAT与内网穿透
2026/10/8 8:26:32 网站建设 项目流程

一、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 设备按以下步骤处理:

  1. 路由决策:确认数据包需要从 NAT 接口转发出去。

  2. 查表匹配:用 (内网IP, 内网端口, 目标IP, 目标端口, 协议) 查询现有表项。

    • 命中:直接使用已有映射,执行地址/端口替换。

    • 未命中:判定为新会话,进入下一步。

  3. 分配资源:从可用端口池中选择一个未被占用的公网端口。若使用多公网 IP 池,还需选择 IP 地址。

  4. 改写报文头:

    • 将源 IP 替换为选定的公网 IP。

    • 将源端口替换为选定的公网端口。

  5. 重新计算校验和:由于 IP 和端口发生变化,必须重新计算 IP 头部校验和、TCP/UDP 校验和(以及增量更新)。

  6. 创建表项:将新映射写入 NAT 表,启动超时计时器。

  7. 转发:将修改后的数据包送入出接口队列。

1.2.2 入站方向

当公网响应包到达 NAT 设备时:

  1. 查表匹配:用 (公网IP, 公网端口, 源IP, 源端口, 协议) 反向查询 NAT 表。

  2. 命中处理:

    • 将目标 IP 还原为内网 IP。

    • 将目标端口还原为内网端口。

    • 重新计算校验和。

    • 刷新该表项的超时计时器。

    • 根据内网 IP 查找路由表,转发至内网。

  3. 未命中处理:若无对应表项且无静态映射规则,默认丢弃该数据包(这就是 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允许出站) 之后所有通信都复用这条连接

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询