私网设备如何访问互联网
私网设备如何访问互联网
引言:为什么我们需要 NAT?
在互联网中,IP 地址分为两类:
地址类型 | 用途 | 地址范围 | 是否可被公网路由 |
---|---|---|---|
私有地址(Private) | 用于局域网通信 | 192.168.0.0/16 、10.0.0.0/8 、172.16.0.0/12 |
❌ 不可被公网转发 |
公共地址(Public) | 全球唯一,面向公网 | 除保留段以外的所有地址 | ✅ 可被公网转发 |
私有地址可以用于构建局域网,像家用 Wi-Fi、公司内网、校园网络等都是如此。多个私网之间通过路由器连接,也可以相互通信。比如,在下图这个实验拓扑中:
- 左边是一个家庭网络(
192.168.1.0/24
) - 右边是一个“神秘网络”(
192.168.2.0/24
) - 中间通过一段公网地址段(
100.0.0.0/30
)连接两个路由器
只要双方配置了静态路由,这两个私有网段之间是可以成功通信的。
举个例子:
家庭路由器添加静态路由,将发往右侧
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)→ 全球互联网主干网络。所有这些路径都要求数据包具有合法的公网地址,否则根本无法转发出去。
比如在下面简化的网络拓扑中,假设神秘电脑是一个位于公网的真实主机,ISP 路由器也是运营商设备:
这时你会发现,家庭电脑无法再 ping 通神秘电脑了。即使中间用的是公网地址段,我们无法控制 ISP 路由器去添加“回家的路”。因为:
- 私有地址
192.168.1.0/24
是很多人都在用的 - 运营商没有能力也没有义务去维护成千上万个私网的路由信息
NAT 的诞生:让私网“出门”的通行证
在这样的背景下,NAT(Network Address Translation,网络地址转换)技术就应运而生了。NAT 的作用就是:
📌 把内网设备的私有 IP 映射成一个合法的公网 IP,让它们可以顺利访问互联网,或者接收外网对其服务的访问。
NAT 解决了两个核心问题:
- 打破私网地址的封闭性,让内网主机能够与公网通信
- 缓解 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 | interface FastEthernet0/0 |
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 | interface g0/0/0 |
解释一下命令结构:
inside
表示源地址来自内网source static
表示建立一个静态映射192.168.1.1
是要被映射的私有 IP203.0.113.1
是其“在公网上的身份”
配置完成后,无论是家庭电脑主动访问外网,还是公网主机主动访问 203.0.113.1
,数据都会正确转发到 192.168.1.1
上,从而实现了内外互通。📡 可以在实验中尝试用家庭电脑 ping 公网主机,同时在 NAT 路由器上观察数据包的变化:
- 入站方向:源地址是
192.168.1.1
- 出站方向:源地址已被转换为
203.0.113.1
🧩 场景二:映射多个公网 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.17
⟷192.168.1.1
(Web 服务器)203.0.113.19
⟷192.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 | interface g0/0/0 |
ISP 路由器配置:
1 | interface s0/1/0 |
这里 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 的工作流程大致是:
- 管理员提前配置一个公网地址池(如
203.0.113.3 ~ 203.0.113.5
) - 当内网主机(如
192.168.1.10
)访问外网:- NAT 路由器会从地址池中分配一个可用 IP(如
203.0.113.3
) - 建立一条临时的地址映射记录(NAT 表项)
- NAT 路由器会从地址池中分配一个可用 IP(如
- 外部服务器返回响应时,NAT 路由器根据映射表将其正确转发回内网设备
- 通信结束后,该公网 IP 自动回收,供下一个主机使用
📌 需要注意的是:公网 IP 资源有限,地址池不足时,新主机将暂时无法访问外网。
动态 NAT 的配置也比较容易:
1 | bash复制编辑! 步骤 1:定义公网地址池 |
在这里,
命令 | 含义说明 |
---|---|
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 | interface g0/0/0 |
依然需要标明“谁是 inside,谁是 outside”,否则 NAT 转换无法生效。
🚫 动态 NAT 的局限是仅支持内网 → 外网的访问,不支持公网 → 内网的访问(因为公网 IP 是临时绑定,外部无法感知)。因此,它非常适合普通员工、家庭用户、学生机房等“临时出网”需求,而不适合托管网站、邮件服务器等需要公网可访问的场景。
PAT(端口地址转换):共享公网的巧妙方式
前面我们已经看到,静态 NAT 和动态 NAT 都基于“IP 地址”的一对一或多对多映射。而在公网地址极其紧张的今天,更广泛使用的是 PAT(Port Address Translation),也称作“端口映射”。PAT 的核心思想是:📌 让多个内网主机共享同一个公网 IP,通过“端口号”来区分不同主机的连接。它可以分为两种典型应用场景:
🔄 动态 PAT(overload):多个设备同时上网
这是最常见的 PAT 应用形式。比如在家庭宽带场景中,路由器只获得一个公网 IP,却要支持家中多个设备同时访问互联网。这时就使用 动态 PAT,即“地址 + 端口”的动态复用。动态 PAT 的工作机制大致是:
- 当内网主机访问外部网络时,路由器会分配一个公网 IP 和一个唯一端口号;
- 多个主机共用同一个公网 IP,但使用不同的端口(如 10001、10002)标识;
- 外部回应时,NAT 路由器根据端口还原连接,转发至正确的内网主机。
配置方式和动态 NAT 基本一致,只不过需要在最后加一个 overload
:
1 | ip nat pool NATPOOL 203.0.113.3 203.0.113.5 netmask 255.255.255.248 |
1 | bash复制编辑interface g0/0/0 |
这是家庭/小型企业最常用的 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 | ip nat inside source static tcp 192.168.1.1 80 203.0.113.1 8080 |
- 外部访问
203.0.113.1:8080
→ 转发至192.168.1.1:80
- 外部访问
203.0.113.1:2222
→ 转发至192.168.1.2:22
但需要注意的是静态 PAT 不支持 ICMP 等无端口协议,这是因为静态 PAT 的映射必须指定端口号 → 只能用于 TCP / UDP。所以如果你尝试从外网 ping 内网主机会失败。
小结
💡 为什么会有 NAT?
因为 IPv4 地址不够用,我们把地址划分成了“私网”和“公网”:每个人家里都有私有地址,但这些地址是重复的、在公网中无法唯一识别。运营商无法也不会转发目的地是私有地址的数据包。于是,为了让私网设备能与公网通信、共享有限的地址资源,NAT(网络地址转换)就诞生了。NAT 就像网络边界上的“翻译员”,它让内网设备获得在公网中“说话的权利”,也让外部访问能够精准定位内网服务主机。
✅ NAT 类型功能对比表
类型 | 映射方式 | 典型用途 | 支持公网访问内网 | 支持内网访问公网 | 支持 ping |
---|---|---|---|---|---|
静态 NAT | IP → IP(固定一对一) | 公网访问内网服务器 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
动态 NAT | IP 池中临时分配 | 内网用户临时出网 | ❌ 不支持 | ✅ 支持 | ✅ 支持 |
PAT(动态) | IP + 端口(共享 IP) | 多用户共享公网 IP 上网(最常见) | ❌ 不支持 | ✅ 支持 | ✅ 支持 |
PAT(静态) | 公网端口 → 内网端口 | 一公网 IP 提供多个服务端口入口 | ✅ 支持(限端口) | ❌ 不支持 | ❌ 不支持 |