私网设备如何访问互联网

私网设备如何访问互联网

引言:为什么我们需要 NAT?

在互联网中,IP 地址分为两类:

地址类型 用途 地址范围 是否可被公网路由
私有地址(Private) 用于局域网通信 192.168.0.0/1610.0.0.0/8172.16.0.0/12 ❌ 不可被公网转发
公共地址(Public) 全球唯一,面向公网 除保留段以外的所有地址 ✅ 可被公网转发

私有地址可以用于构建局域网,像家用 Wi-Fi、公司内网、校园网络等都是如此。多个私网之间通过路由器连接,也可以相互通信。比如,在下图这个实验拓扑中:

  • 左边是一个家庭网络(192.168.1.0/24
  • 右边是一个“神秘网络”(192.168.2.0/24
  • 中间通过一段公网地址段(100.0.0.0/30)连接两个路由器

只要双方配置了静态路由,这两个私有网段之间是可以成功通信的。

image-20250505151627794

举个例子:

  • 家庭路由器添加静态路由,将发往右侧 192.168.2.0 的流量转发给外部路由器:

    1
    ip route 192.168.2.0 255.255.255.0 100.0.0.2
  • 神秘网络的路由器添加静态路由,将发往左侧 192.168.1.0 的流量转发回左侧路由器:

    1
    ip route 192.168.1.0 255.255.255.0 100.0.0.1

实验中你会发现,两端设备可以成功互 ping。这是因为在这个封闭网络中,我们掌握了所有设备,可以自由添加路由表,让两个私网段通过中间链路转发数据。

🛑 但现实互联网不是这么工作的

在真实互联网中,私有地址并不能直接用于通信。这些地址是保留用于局域网的,不会在全球互联网骨干网中传播。比如,如果运营商(ISP)骨干路由器收到一个目的地址是 192.168.1.1 的数据包,它不会去尝试“猜”这是哪户家庭的电脑,而是会直接丢弃这个包。因为:

  • 私有地址在全球范围内是非唯一的
  • 公网路由器根本无法判断该包应转发到哪一户
  • 对运营商而言,它就是一个无效目标

可以参考下面这张经典的网络结构示意图,清晰地看到数据包从家庭网络出发,如何逐级经过本地路由器 → 区域运营商(ISP)→ 全球互联网主干网络。所有这些路径都要求数据包具有合法的公网地址,否则根本无法转发出去。

image-20250504214949234

比如在下面简化的网络拓扑中,假设神秘电脑是一个位于公网的真实主机,ISP 路由器也是运营商设备:

image-20250505151608713

这时你会发现,家庭电脑无法再 ping 通神秘电脑了。即使中间用的是公网地址段,我们无法控制 ISP 路由器去添加“回家的路”。因为:

  • 私有地址 192.168.1.0/24 是很多人都在用的
  • 运营商没有能力也没有义务去维护成千上万个私网的路由信息

NAT 的诞生:让私网“出门”的通行证

在这样的背景下,NAT(Network Address Translation,网络地址转换)技术就应运而生了。NAT 的作用就是:

📌 把内网设备的私有 IP 映射成一个合法的公网 IP,让它们可以顺利访问互联网,或者接收外网对其服务的访问。

NAT 解决了两个核心问题:

  1. 打破私网地址的封闭性,让内网主机能够与公网通信
  2. 缓解 IPv4 地址枯竭问题,支持多个内网设备共享一个公网地址

这意味着:

  • 家庭电脑可以通过 NAT 上网,访问外部网站、使用在线服务
  • 企业可以通过 NAT 将内部服务器(如 Web、FTP)暴露给公网用户
  • 网络管理员也可以通过端口映射等方式实现灵活的访问控制

🧭 接下来我们就将一步步揭开 NAT 的原理与应用方式,看看它是如何悄无声息地工作在我们每天的上网行为背后。

网络地址转换(NAT)概述

上一节我们提到,私有地址无法直接在互联网中使用,而 NAT(Network Address Translation,网络地址转换)正是为此诞生的关键技术。它通常部署在网络的边缘设备上(如家庭或企业的路由器),负责在内网和公网之间“翻译” IP 地址,让内网设备可以“拥有”一个对外可通信的身份。可以这样理解 NAT:它就像一个“网络翻译官”——

  • 当内网设备要访问外网时,它把源地址中的私有 IP 转换为公网 IP;
  • 当外部请求访问内网服务时,它把目标地址中的公网 IP 映射回指定的内网设备。

根据 IP 和端口转换的方式不同,NAT 的基本实现可以分为以下几类:


1️⃣ 静态 NAT(Static NAT)

  • 映射方式:一对一的固定映射

  • 用途:内网设备需要被公网长期访问(如 Web/FTP/邮件服务器)

  • 优点:映射关系稳定,公网用户可直接访问

  • 示例

    192.168.1.100 映射为 203.0.113.10,无论何时访问 203.0.113.10,都转发到这台内网主机


2️⃣ 动态 NAT(Dynamic NAT)

  • 映射方式:从预设的公网 IP 地址池中动态分配
  • 用途:内网主机临时访问外网
  • 限制:只支持内网 → 外网,不能从外网主动访问内网
  • 特征:通信结束后,公网 IP 会被释放供下一个主机使用

3️⃣ PAT(Port Address Translation,端口地址转换)

  • 映射方式:多个内网主机共享一个公网 IP,通过不同的端口号区分

  • 优点:极大节省公网 IP,是家庭/中小企业网络的首选方案

  • 两种典型用途

    类型 用途 能否公网访问
    静态 PAT(端口映射) 手动绑定公网 IP+端口 → 内网主机 ✅ 可以
    动态 PAT(overload) 内网多个设备共用一个公网 IP 上网 ❌ 不可

    静态 PAT 主要用于外网访问内网服务,动态 PAT 主要用于内网机器访问外网。


无论是哪种 NAT 方式,都必须先标记清楚路由器的“内网接口”和“外网接口”。这就是 NAT 中的两个关键概念:

概念 含义
inside 指连接私有地址(内网)的接口
outside 指连接公网或 ISP 的接口
1
2
3
4
5
6
7
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside

interface FastEthernet0/1
ip address 203.0.113.1 255.255.255.0
ip nat outside
  • ip nat inside:告诉路由器,这个接口连接的是私有网络设备
  • ip nat outside:告诉路由器,这个接口连向公网或上级 ISP

配置好了接口的内外侧后,就可以进行静态、动态或者 PAT 的配置了。实际上也非常简单,只需要1-2行命令就可以了。

静态 NAT:公网身份的专属名片

在 NAT 的三种形式中,静态 NAT(Static NAT)是最基础的一种。它提供一种一对一的固定映射关系:将一个内网设备的私有 IP 永久绑定到一个公网 IP,使其可以长期作为“对外可访问的服务节点”存在于互联网中。

🧩 场景一:将内网主机映射为路由器的公网接口 IP

最常见的一种静态 NAT 应用,就是把某个内网设备的私有地址映射为路由器公网接口自身的 IP 地址

例如,在我们之前的实验拓扑中,若希望让公网主机能够访问家庭电脑(192.168.1.1),就可以将它静态绑定为家庭路由器的外网口 IP 203.0.113.1。配置如下:

1
2
3
4
5
6
7
8
9
interface g0/0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside

interface s0/1/0
ip address 203.0.113.1 255.255.255.252
ip nat outside

ip nat inside source static 192.168.1.1 203.0.113.1

解释一下命令结构:

  • inside 表示源地址来自内网
  • source static 表示建立一个静态映射
  • 192.168.1.1 是要被映射的私有 IP
  • 203.0.113.1 是其“在公网上的身份”

配置完成后,无论是家庭电脑主动访问外网,还是公网主机主动访问 203.0.113.1数据都会正确转发到 192.168.1.1,从而实现了内外互通。📡 可以在实验中尝试用家庭电脑 ping 公网主机,同时在 NAT 路由器上观察数据包的变化:

  • 入站方向:源地址是 192.168.1.1
  • 出站方向:源地址已被转换为 203.0.113.1

image-20250505154436537

🧩 场景二:映射多个公网 IP,支持多台内网主机

在家庭网络中通常只有一个公网地址,而在企业、数据中心等场景中,运营商往往会为你分配一整个公网地址段。这时你可以将不同公网 IP 静态映射到多台内网主机,实现多服务对公网开放。现实中,当我们向 ISP 申请多个公网地址时,ISP会向我们提供一个IP 地址块和子网掩码,例如:

ISP 分配公网段:203.0.113.16/29

子网掩码:255.255.255.248

可用地址:203.0.113.17 ~ 203.0.113.22(共 6 个)

默认网关(ISP 接口):203.0.113.18

可以将这些地址映射给多台内网设备:

  • 203.0.113.17192.168.1.1(Web 服务器)
  • 203.0.113.19192.168.1.2(邮件服务器)

🧠 注意:.16 是网络号、.23 是广播地址,不能分配。

假设在 Packet Tracer 环境中,我们“虚拟设定”ISP给你分配了 203.0.113.0/29 这一小段公网地址:

用途 地址
家庭路由器公网接口 203.0.113.1
ISP 路由器接口 203.0.113.2
NAT 映射地址 203.0.113.3.4
1
2
3
4
5
6
7
8
9
10
11
12
interface g0/0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside

interface s0/1/0
ip address 203.0.113.1 255.255.255.248
ip nat outside

ip nat inside source static 192.168.1.1 203.0.113.3
ip nat inside source static 192.168.1.2 203.0.113.4

ip route 0.0.0.0 0.0.0.0 203.0.113.2

ISP 路由器配置:

1
2
interface s0/1/0
ip address 203.0.113.2 255.255.255.248

这里 ISP 不需要额外配置静态路由,因为接口 IP 为 203.0.113.2/29,自动直连 203.0.113.0/29 网段,会生成以下路由条目:

1
C    203.0.113.0/29 is directly connected, Serial0/1/0

这样,公网主机访问 203.0.113.3 时,ISP 路由器能自动识别它属于该直连网段,转发到接口 .2,从而进入家庭 NAT 路由器,最终转发给 192.168.1.1

动态 NAT:灵活的临时身份

相比静态 NAT 一对一的固定绑定,动态 NAT 提供了一种自动化、临时性的地址转换方式,更适合内网设备主动访问外部网络的场景。它的核心思想是:🧠 当内网主机发起对公网的通信请求时,路由器会从一个公网地址池中动态分配一个可用 IP,作为该主机在公网中的“临时身份”。 通信结束后,这个公网 IP 就会释放,供其他设备使用。动态 NAT 的工作流程大致是:

  1. 管理员提前配置一个公网地址池(如 203.0.113.3 ~ 203.0.113.5
  2. 当内网主机(如 192.168.1.10)访问外网:
    • NAT 路由器会从地址池中分配一个可用 IP(如 203.0.113.3
    • 建立一条临时的地址映射记录(NAT 表项)
  3. 外部服务器返回响应时,NAT 路由器根据映射表将其正确转发回内网设备
  4. 通信结束后,该公网 IP 自动回收,供下一个主机使用

📌 需要注意的是:公网 IP 资源有限,地址池不足时,新主机将暂时无法访问外网

动态 NAT 的配置也比较容易:

1
2
3
4
5
6
7
8
bash复制编辑! 步骤 1:定义公网地址池
ip nat pool NATPOOL 203.0.113.3 203.0.113.5 netmask 255.255.255.248

! 步骤 2:定义允许使用 NAT 的内网地址
access-list 1 permit 192.168.1.0 0.0.0.255

! 步骤 3:将 ACL 和地址池绑定,实现 NAT 动态分配
ip nat inside source list 1 pool NATPOOL

在这里,

命令 含义说明
ip nat pool 创建名为 NATPOOL 的公网地址池,供动态分配使用
access-list 1 permit ... 创建编号为 1 的 ACL,选出哪些私网主机可以做 NAT
ip nat inside source list 1 ... 将 ACL 选中的主机映射到地址池中的公网 IP(动态分配)

📚 这里的 ACL(Access Control List,访问控制列表)是 NAT 的“筛选器”,用来指定哪些私有地址可以参与 NAT 操作。0.0.0.255 是对 255.255.255.0 的反掩码写法,表示 /24 网段。接口方向设置与静态 NAT 相同:

1
2
3
4
5
6
7
interface g0/0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside

interface s0/1/0
ip address 203.0.113.1 255.255.255.248
ip nat outside

依然需要标明“谁是 inside,谁是 outside”,否则 NAT 转换无法生效。

🚫 动态 NAT 的局限是仅支持内网 → 外网的访问,不支持公网 → 内网的访问(因为公网 IP 是临时绑定,外部无法感知)。因此,它非常适合普通员工、家庭用户、学生机房等“临时出网”需求,而不适合托管网站、邮件服务器等需要公网可访问的场景。

PAT(端口地址转换):共享公网的巧妙方式

前面我们已经看到,静态 NAT 和动态 NAT 都基于“IP 地址”的一对一或多对多映射。而在公网地址极其紧张的今天,更广泛使用的是 PAT(Port Address Translation),也称作“端口映射”。PAT 的核心思想是:📌 让多个内网主机共享同一个公网 IP,通过“端口号”来区分不同主机的连接。它可以分为两种典型应用场景:

🔄 动态 PAT(overload):多个设备同时上网

这是最常见的 PAT 应用形式。比如在家庭宽带场景中,路由器只获得一个公网 IP,却要支持家中多个设备同时访问互联网。这时就使用 动态 PAT,即“地址 + 端口”的动态复用。动态 PAT 的工作机制大致是:

  1. 当内网主机访问外部网络时,路由器会分配一个公网 IP 和一个唯一端口号;
  2. 多个主机共用同一个公网 IP,但使用不同的端口(如 10001、10002)标识;
  3. 外部回应时,NAT 路由器根据端口还原连接,转发至正确的内网主机。

配置方式和动态 NAT 基本一致,只不过需要在最后加一个 overload

1
2
3
ip nat pool NATPOOL 203.0.113.3 203.0.113.5 netmask 255.255.255.248
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 pool NATPOOL overload
1
2
3
4
5
6
7
bash复制编辑interface g0/0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside

interface s0/1/0
ip address 203.0.113.1 255.255.255.248
ip nat outside

这是家庭/小型企业最常用的 NAT 方案,支持多个用户同时访问互联网,仅占用一个公网地址。动态 PAT 支持 TCP / UDP / ICMP 等协议,这是因为动态 PAT 使用 NAT 表记录临时映射,能处理 ICMP(如 ping)等无端口协议,所以从内网向外网 ping 是可以的

📬 静态 PAT(端口映射):一个公网 IP,多种服务

当我们需要从公网访问内网服务,但公网地址只有一个时,静态 PAT(即端口映射) 就派上用场了。静态 PAT 的典型场景是多台内网主机提供不同服务,但只能使用一个公网 IP。例如:

  • 203.0.113.1:8080 → 内网 Web 服务 192.168.1.1:80
  • 203.0.113.1:2222 → 内网 SSH 服务 192.168.1.2:22

配置方式和静态 NAT 基本一致,只不过需要再增加要映射的端口号:

1
2
ip nat inside source static tcp 192.168.1.1 80 203.0.113.1 8080
ip nat inside source static tcp 192.168.1.2 22 203.0.113.1 2222
  • 外部访问 203.0.113.1:8080 → 转发至 192.168.1.1:80
  • 外部访问 203.0.113.1:2222 → 转发至 192.168.1.2:22

image-20250505173733715

但需要注意的是静态 PAT 不支持 ICMP 等无端口协议,这是因为静态 PAT 的映射必须指定端口号 → 只能用于 TCP / UDP。所以如果你尝试从外网 ping 内网主机会失败。

小结

💡 为什么会有 NAT?

因为 IPv4 地址不够用,我们把地址划分成了“私网”和“公网”:每个人家里都有私有地址,但这些地址是重复的、在公网中无法唯一识别。运营商无法也不会转发目的地是私有地址的数据包。于是,为了让私网设备能与公网通信、共享有限的地址资源,NAT(网络地址转换)就诞生了。NAT 就像网络边界上的“翻译员”,它让内网设备获得在公网中“说话的权利”,也让外部访问能够精准定位内网服务主机。

✅ NAT 类型功能对比表

类型 映射方式 典型用途 支持公网访问内网 支持内网访问公网 支持 ping
静态 NAT IP → IP(固定一对一) 公网访问内网服务器 ✅ 支持 ✅ 支持 ✅ 支持
动态 NAT IP 池中临时分配 内网用户临时出网 ❌ 不支持 ✅ 支持 ✅ 支持
PAT(动态) IP + 端口(共享 IP) 多用户共享公网 IP 上网(最常见) ❌ 不支持 ✅ 支持 ✅ 支持
PAT(静态) 公网端口 → 内网端口 一公网 IP 提供多个服务端口入口 ✅ 支持(限端口) ❌ 不支持 ❌ 不支持