NAT 实验
一.实验拓扑
1.NAT背景:
- IPv4 地址枯竭: 互联网早期采用的 IPv4 协议仅能提供约 43 亿个唯一地址。随着互联网爆炸式增长,这些地址远远不够分配。
- 地址分配不均: 早期 A、B 类地址块分配给了大型机构,导致大量地址浪费,而后来者(尤其是小型企业和家庭用户)可用的 C 类地址严重不足。
- 私有地址空间的出现: IETF 在 RFC 1918 中定义了私有 IP 地址范围(如 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)。这些地址可以在不同的内部网络中重复使用,但不能在公共互联网上被路由。
- 需求: 需要一种机制,让使用私有地址的内部网络设备能够访问使用公有地址的公共互联网资源。
NAT 应运而生,成为解决 IPv4 地址短缺问题的关键技术之一(与 CIDR、IPv6 等并列)。2
2.作用:
NAT 的核心功能是在 IP 数据包经过路由器或防火墙时,修改其源或目标 IP 地址(有时也包括端口号)。其主要作用体现在:
- 节省公有 IPv4 地址: 这是最主要的目的。一个组织(如家庭、公司)只需要一个或少量公有 IP 地址,就能让内部成百上千台使用私有 IP 地址的设备同时访问互联网。内部设备使用私有 IP,出口处由 NAT 设备将其转换成公有 IP。
- 隐藏内部网络结构: NAT 作为内部网络和外部互联网之间的“中间人”,对外部网络隐藏了内部网络的实际拓扑结构和主机的真实 IP 地址(仅暴露 NAT 设备的公网 IP),提供了一定程度的基础安全隔离(但这不是防火墙的主要功能,不能替代防火墙)。
- 解决地址重叠: 当两个使用相同私有地址范围的网络需要互联时(例如公司并购),NAT 可以在边界处进行地址转换,避免冲突。
- 简化网络管理: 在内部网络中使用私有地址,使得网络扩展和重新编址更加灵活,无需申请额外的公有 IP。
3.主要类型:
主要类型
- 静态 NAT (Static NAT):
- 一对一固定映射: 将一个私有 IP 地址永久映射到一个公有 IP 地址。
- 用途: 主要用于内部服务器(如 Web 服务器、邮件服务器)需要对外提供服务的情况。外部用户通过访问固定的公网 IP 来访问该服务器。
- 动态 NAT (Dynamic NAT):
- 多对多动态映射: 定义一组公网 IP 地址(地址池)。当内部主机需要访问外网时,NAT 设备从地址池中动态分配一个未被使用的公网 IP 地址进行一对一的映射。会话结束或超时后,该公网 IP 被释放回地址池。
- 限制: 同时访问外网的主机数量不能超过地址池中公网 IP 的数量。
- PAT / NAPT (端口地址转换 / 网络地址端口转换): 这是目前最常用、最主流的 NAT 类型(家用路由器就是这种)。
- 多对一(或多对少)映射: 多个内部私有 IP 地址共享**一个(或少量)**公网 IP 地址。
- 关键: 不仅转换 IP 地址,还转换传输层端口号(如 TCP/UDP 端口)。NAT 设备通过跟踪内部主机的“源 IP + 源端口”与转换后的“公网 IP + 新源端口”的映射关系来区分不同主机的连接。
- 优点: 极大地提高了单一公网 IP 地址的利用率,理论上一个公网 IP 可以支持数万个并发连接(受限于端口号和设备性能)。
- Easy IP: 可以看作是 PAT 的一种特例。它直接使用 NAT 设备连接公网的接口(如拨号获得的 IP 或配置的公网 IP)作为转换后的公网 IP 地址池,无需额外配置地址池。非常适用于家庭宽带接入或小型企业。
- ALG (应用层网关): 严格来说不是一种独立的 NAT 类型,而是一种辅助机制。某些应用协议(如 FTP、SIP、H.323、IPsec)在应用层数据中嵌入了 IP 地址或端口信息(载荷)。标准的 NAT 只能修改 IP 和 TCP/UDP 头部,无法修改应用层数据,这会导致通信失败。ALG 模块能识别这些特定协议,在修改 IP/UDP/TCP 头的同时,也修改应用层数据中的地址信息,确保这些协议能穿越 NAT 正常工作。但 ALG 实现复杂且可能引入安全风险。
4.优缺点:
- 优点:
- 极大缓解 IPv4 地址枯竭: 这是 NAT 最核心、最成功的贡献。
- 成本低廉,部署简单: 无需升级整个网络基础设施(相比 IPv6),只需在网络边界设备(路由器、防火墙)上启用 NAT 即可。
- 一定程度隐藏内部网络: 增加了内部网络对外部的不可见性,提供了基本的安全屏障(但非绝对安全)。
- 简化内部网络管理: 内部使用私有地址,编址灵活。
- 缺点:
- 破坏端到端通信模型: 这是 NAT 最根本的缺点。互联网最初设计是端到端透明的。NAT 作为中间设备修改了 IP 地址,使得外部主机无法主动发起与内部主机的直接连接(除非配置端口映射/静态 NAT),破坏了 IP 的全局唯一性,对 P2P 应用(如 VoIP、文件共享、在线游戏)造成障碍,需要 STUN、TURN、ICE 等技术辅助。
- 增加复杂性: NAT 设备需要维护转换表(状态),增加了处理负担和延迟。网络调试和故障排查变得更加困难(需要查看 NAT 设备的转换日志)。
- 影响某些协议: 如前所述,需要 ALG 才能支持某些嵌入地址信息的协议,而 ALG 并非支持所有协议,且实现可能不完善或有安全风险。IPsec 等端到端加密协议在穿越 NAT 时也可能遇到问题。
- 潜在的性能瓶颈和单点故障: 所有内网访问外网的流量都必须经过 NAT 设备,可能成为性能瓶颈。NAT 设备故障会导致整个内网无法访问外网。
- 地址转换带来困扰: 日志记录、审计追踪变得复杂,因为公网 IP 后面可能对应多个内部用户。某些基于 IP 的身份验证或地理位置服务可能不准确。
- 并非真正的安全解决方案: NAT 提供的“隐藏”是有限的,不能替代防火墙的安全策略(状态检测、访问控制、入侵防御等)。一旦内部主机感染恶意软件,它仍然可以对外发起攻击
总结
NAT 是应对 IPv4 地址枯竭的关键技术,通过将内部私有地址转换为外部公有地址,实现了大量设备共享少量公网 IP 访问互联网,极大地延长了 IPv4 的寿命。其主要类型包括静态 NAT(服务器映射)、动态 NAT(地址池映射)和 PAT/NAPT(端口复用,最常用)。虽然 NAT 在节省地址和提供基本隔离方面非常成功,但它破坏了网络的端到端透明性,增加了复杂性和延迟,对某些应用和协议造成兼容性问题,并且其安全性有限。随着 IPv6 的部署(提供近乎无限的地址空间,旨在恢复端到端通信),NAT 的重要性在理论上会降低,但在 IPv4 和 IPv6 长期共存的过渡期内,NAT(尤其是 NAPT)仍将是互联网基础设施中不可或缺的一部分。
二.实验需求
1.如图所示配置IP地址
2.私网1通过R1接入互联网,私网2通过R3接入互联网
3.私网1内部存在的VLAN10,VLAN20,通过R1上的单臂路由访问外部网络
4.私网1通过NAPT使VLAN 10 VLAN 20都能够使用R1的公网地址访问互联网
5.私网2通过R3上配置EASY IP 访问互联网
6.私网1配置NAT SERVER 把 FTP-A的FTP服务发布到公网,使PCB可以访问FTP
三.实验步骤
1.配置IP地址 (略)
2.私网1通过R1接入互联网,私网2通过R3接入互联网(略)
3…私网1内部存在的VLAN10,VLAN20,通过R1上的单臂路由访问外部网络(略)
4.私网1通过NAPT使VLAN 10 VLAN 20都能够使用R1的公网地址访问互联网
在R1上创建基本ACL,选中192.168.1.0网段和192.168.2.0网段
[R1]acl basic 2000
[R1-acl-ipv4-basic-2000]rule permit source 192.168.1.0 0.0.0.255
[R1-acl-ipv4-basic-2000]rule permit source 192.168.2.0 0.0.0.255
在R1上创建NAT地址池,设置公网地址
[R1]nat address-group 1
[R1-address-group-1]address 100.1.1.1 100.1.1.1
在R1的公网接口上配置NAPT
[R1]int g0/1
[R1-GigabitEthernet0/1]nat outbound 2000 address-group 1
在PCA上pingR3的地址,查看是否能够访问公网
<PCA>ping 100.2.2.3
Ping 100.2.2.3 (100.2.2.3): 56 data bytes, press CTRL+C to break
56 bytes from 100.2.2.3: icmp_seq=0 ttl=253 time=1.245 ms
56 bytes from 100.2.2.3: icmp_seq=1 ttl=253 time=1.076 ms
56 bytes from 100.2.2.3: icmp_seq=2 ttl=253 time=1.505 ms
56 bytes from 100.2.2.3: icmp_seq=3 ttl=253 time=1.862 ms
56 bytes from 100.2.2.3: icmp_seq=4 ttl=253 time=1.041 ms
5.私网2通过R3上配置EASY IP 访问互联网
使用EASU IP无需配置NAT地址池,直接在公网接口上配置
在R3上创建基本ACL,选中192.168.1.0/24网段
[R3]acl basic 2000
[R3-acl-ipv4-basic-2000]rule permit source 192.168.1.0 0.0.0.255
在R3的公网接口上配置EASY IP
[R3]int g0/0
[R3-GigabitEthernet0/0]nat outbound 2000
在PCB上pingR1的公网地址,查看是否能够访问公网
<PCB>ping 100.1.1.1
Ping 100.1.1.1 (100.1.1.1): 56 data bytes, press CTRL+C to break
56 bytes from 100.1.1.1: icmp_seq=0 ttl=253 time=1.100 ms
56 bytes from 100.1.1.1: icmp_seq=1 ttl=253 time=1.844 ms
56 bytes from 100.1.1.1: icmp_seq=2 ttl=253 time=1.157 ms
56 bytes from 100.1.1.1: icmp_seq=3 ttl=253 time=0.749 ms
56 bytes from 100.1.1.1: icmp_seq=4 ttl=253 time=0.847 ms
6.私网1配置NAT SERVER 把 FTP-A的FTP服务发布到公网,使PCB可以访问FTP
在FTP-A上配置FTP服务
[FTP-A]ftp server enable
[FTP-A]local-user kami class manage
[FTP-A-luser-manage-kami]password simple 123456.com
[FTP-A-luser-manage-kami]service-type ftp
[FTP-A-luser-manage-kami]authorization-attribute user-role level-15
在R1的公网接口上配置NAT SERVER 映射端口20 21
[R1-GigabitEthernet0/1]nat server protocol tcp global current-interface 20 21 in
side 192.168.1.1 20 21
在PCB上尝试能够通过R1的公网地址访问FTP服务
<PCB>ftp 100.1.1.1
Press CTRL+C to abort.
Connected to 100.1.1.1 (100.1.1.1).
220 FTP service ready.
User (100.1.1.1:(none)): kami
331 Password required for kami.
Password:
230 User logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>