1 NAT简介:
NAT(Network Address Translation,网络地址转换)是一种将 IP 地址转换为另一个 IP 地址的技术,常用于解决 IP 地址短缺问题,以及在不同网络间实现通信。
以下是关于 NAT 的详细介绍:
1.1 NAT 的基本概念:
- 核心功能:在网络层将数据包中的 IP 地址(源地址或目标地址)进行替换,使得多个设备可通过一个公网 IP 访问互联网,或让内部网络与外部网络通信。
- 应用场景:家庭网络、企业局域网、数据中心等需要共享公网 IP 的场景。
1.2 NAT 的工作原理:
1.2.1 基本流程:
- 内部设备(私有 IP)向外部网络发送请求时,NAT 设备(如路由器)将数据包的源 IP 替换为自身的公网 IP,并记录映射关系。
- 外部网络响应时,数据包到达 NAT 设备,NAT 根据映射关系将目标 IP 还原为内部设备的私有 IP,转发给对应设备。
1.2.2 关键术语:
- 私有 IP 地址:如
192.168.x.x
、10.x.x.x
,仅在内部网络有效,无法直接被公网访问。 - 公网 IP 地址:全球唯一的 IP,可被互联网识别。
- NAT 映射表:记录私有 IP、端口与公网 IP、端口的对应关系,用于数据包转发。
1.3 NAT 的类型:
根据映射方式不同,NAT 主要分为以下几类:
类型 | 特点 | 应用场景 |
---|---|---|
静态 NAT | 一对一映射:私有 IP 固定映射到公网 IP,需手动配置。 | 企业服务器对外提供服务(如 Web 服务器)。 |
动态 NAT | 从公网 IP 池中动态分配 IP 给内部设备,映射关系非固定。 | 小型企业网络,需临时访问公网的场景。 |
网络地址端口转换(NAPT/PAT) | 最常用的类型,通过端口号区分不同设备,实现多个私有 IP 共享一个公网 IP。 | 家庭路由器(如 1 个公网 IP 供多台设备上网)。 |
双向 NAT | 同时转换源 IP 和目标 IP,用于双向通信场景(如内部网络访问特定外部服务时转换目标地址)。 | 复杂网络架构中的安全隔离与访问控制。 |
1.4 NAT 的优缺点:
-
优点:
- 节省公网 IP:通过 NAPT,一个公网 IP 可支持数十到数百台设备联网。
- 增强安全性:隐藏内部网络结构,外部无法直接访问私有 IP 设备,降低攻击风险。
- 简化网络管理:无需为每个设备分配公网 IP,减少 IP 地址管理复杂度。
-
缺点:
- 通信限制:外部网络无法主动向内部设备发起连接(需通过端口转发等特殊配置)。
- 兼容性问题:部分网络应用(如 P2P、VPN)可能因 NAT 映射导致连接失败。
- 性能开销:NAT 设备需处理数据包转换,可能带来延迟或丢包。
1.5 NAT 与 IPv6 的关系:
- IPv4 时代的必要性:由于 IPv4 地址数量有限(约 43 亿个),NAT 是解决 IP 短缺的核心技术。
- IPv6 的影响:IPv6 理论上可提供
2^128
个地址,几乎无需 NAT 即可为每个设备分配公网 IP,但 NAT 仍可能因安全需求继续存在。
1.6 NAT 的典型应用:
- 家庭网络:路由器通过 NAPT 将家用设备的私有 IP 转换为运营商分配的公网 IP,实现共享上网。
- 企业防火墙:通过 NAT 隔离内部网络与公网,同时允许特定服务(如邮件服务器、Web 服务器)通过端口转发对外提供服务。
- 云计算与数据中心:多台虚拟机可通过 NAT 共享物理服务器的公网 IP,降低成本。
1.7 NAT 穿透(NAT Traversal):
- 问题:当两个位于不同 NAT 后的设备需要通信时(如 P2P 文件传输),直接连接会因 NAT 限制失败。
- 解决方案:
- STUN(会话遍历 NAT 的 UDP 服务):通过服务器获取公网 IP 和端口,辅助建立连接。
- TURN(中继 NAT 的 UDP):当 STUN 无法穿透时,通过服务器中继数据。
- ICE(交互式连接建立):整合 STUN 和 TURN,自动选择最佳连接方式。
1.8 总结:
NAT 是现代网络架构中的基础技术,通过 IP 地址转换解决了 IPv4 地址短缺问题,并在网络安全和管理中发挥重要作用。尽管 IPv6 的普及可能减少其必要性,但在未来较长时间内,NAT 仍将是网络部署中的关键组件。
2 具体配置:
2.1 实验拓扑图:
2.2 实验要求:
10.1.1.2~10.1.1.254转换为合法的地址61.159.62.131/24,以便访问Internet
2.3 实验具体步骤:
1.R1设置外部端口的IP地址
R1>en
R1#conf t
R1(config)#int g0/0
R1(config-if)#ip add 61.159.62.131 255.255.255.0
R1(config-if)#no shutdown
2.R1设置内部端口的IP地址
R1(config)#int g0/1
R1(config-if)#ip add 10.1.1.1 255.0.0.0
R1(config-if)#no shutdown
R1(config-if)#exit
3.定义访问控制列表
R1(config)#access-list 1 permit 10.0.0.0 0.255.255.255
R1(config)#ip nat inside source list 1 int g0/0 overload # 注:可以将第四步和第五步合并成一步(复用路由器外部接口地址)
4.定义合法IP地址池
R1(config)#ip nat pool abcd 61.159.62.131 61.159.62.131 netmask 255.255.255.0
5.实现网络地址转换
R1(config)#ip nat inside source list 1 pool abcd overload
6.在内部和外部端口上启用NAT,以及配置默认路由(与静态NAT配置相同)
R1(config)#int g0/0
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#int g0/1
R1(config-if)#ip nat inside
R1(config-if)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 61.159.62.129
7.ISP设置端口的IP地址
Router>en
Router#conf t
Router(config)#hostname ISP
ISP(config)#int g0/0
ISP(config-if)#ip add 61.159.62.129 255.255.255.0
ISP(config-if)#no shutdown
ISP(config-if)#exit
ISP(config)#ip route 0.0.0.0 0.0.0.0 61.159.62.131
8.客户机测试验证
PC0:
客户机PC0:10.1.1.2测试验证ping 61.159.62.129
客户机PC0:10.1.1.2成功访问61.159.62.129端口
PC1:
客户机PC1:10.1.1.254测试验证ping 61.159.62.129
客户机PC1:10.1.1.254成功访问61.159.62.129端口
到此实验成功结束!!!