David is 3 years old.
He weights 60 pounds.
He is 4 feet, 6 inches tall.
He has brown hair.
His love is real.
But he is not. ———人工智能
NAT 地址转换协议
什么是 IP?用于表示一个设备的网络地址,设备只要想上网,都需要有IP 地址。
ipv4可用地址:2的 32 次方,43 亿个地址
iot 物联网(internet of things)
ip地址的分类:
公有地址:可以直接在 internet 上传输的(需要收费,花钱向运营商购买)
私有地址:免费的,只能在局域网内进行传输(飞秋/单机游戏的局域网对战)
因为 iPv4 地址不足,企业内部使用私有IP地址。由于私有地址不能直接在互联网上进行传输,所以在与外网通讯时,需要将私有地址转化为共有地址。
对数据包中的私有地址和公有地址进行转化,实现内网到外网的访问
通过“手动配置”的方式添加,私有 IP 地址和公有 IP 地址都是 1 对 1 的关系
数据包在从内网到外网时,先查看路由表,再查看 NAT 表
数据包在从外网到内网时,先查看 NAT 表,再查看路由表
静态的 NAT 配置简单,但是由于私有地址和公有地址是一对一的对应关系,所以并不能节省公网 IP。
静态 NAT 可以实现双向访问
动态 NAT -no pat 本质上还是一个公网地址同时对应一个私有地址,并没有很好的起到节省公有IP 地址的作用,地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。
动态的 NAT 是单向的
端口地址转换(PAT),是一种特殊类型的动态网络地址转换(NAT),它允许多个网络设备通过单一的公有IP地址与外部网络(如互联网)通信。PAT的核心原理在于使用不同的端口号来区分经过同一个公有IP地址的多个内部设备的流量。
PAT 端口地址转换分为两种,一种是基于地址池,一种是基于 接口(easy-ip)
在内部网络中,每个设备都有其私有IP地址。当这些设备尝试与外部网络通信时,它们的请求会首先发送到配置了PAT的路由器或防火墙。
PAT设备接收到内部设备的请求后,会将源私有IP地址和源端口号映射到路由器的公有IP地址和一个唯一的端口号上。这样,即使多个内部设备使用相同的私有IP地址范围,它们的流量也可以通过附加不同的端口号来区分。
PAT设备维护一个映射表,记录内部设备的私有IP地址和端口号与公有IP地址和唯一端口号之间的映射关系。这样,当来自互联网的响应返回到公有IP地址时,PAT设备可以查看映射表,确定响应应该转发给哪个内部设备。
对于从外部网络返回的数据包,PAT设备查看目的端口号,并根据映射表将数据包转发到正确的内部IP地址和端口号。这样,即使多个内部设备共享同一个公有IP地址,它们的会话也能被正确地区分和处理。
由于端口号的数量有限(每个IP地址有65535个可用端口),PAT设备需要有效地管理端口号的使用,以支持尽可能多的并发连接。当一个会话结束后,所使用的端口号可以被释放,供新的会话使用。
发送:
| 经过 PAT 转换前数据包 | PAT 转换后 | PAT 转换后的数据包 | ||
|---|---|---|---|---|
| 源IP 地址 | 192.168.10.1 | 源IP | 200.1.1.1(公有地址) | |
| 源端口 | 12345(随机打开) | 源端口 | 54321(PAT 指定) | |
| 目的 IP | 210.1.1.1(服务器地址) | 目的 IP | 210.1.1.1(服务器地址) | |
| 目的端口 | 80(http) | 目的端口 | 80(http) | |
| 其他信息 | 协议类型、序列号、确认号等 | 其他信息 | 协议类型、序列号、确认号等 |
形成映射表
映射表是用于追踪内部设备与外部世界通信会话的关键数据结构。这个映射表记录了内部网络中每个设备的私有IP地址和端口号与分配给该会话的公网IP地址和端口号之间的对应关系。
| 简化的 PAT 映射表 | |||||
|---|---|---|---|---|---|
| 内部源地址 | 内部源端口 | 转换后的公网 IP 地址 | 转换后的公网端口 | 目的IP 地址 | 目的端口 |
| 192.168.10.1 | 12345 | 200.1.1.1 | 53321 | 210.1.1.1 | 80 |
| 192.168.20.1 | 12346 | 200.1.1.1 | 64321 | 210.1.1.1 | 80 |
| 192.168.30.1 | 12347 | 200.1.1.1 | 74321 | 210.1.1.1 | 80 |

回流:
| 经过 PAT 转换前数据包 | PAT 转换后 | PAT 转换后的数据包 | ||
|---|---|---|---|---|
| 源IP 地址 | 210.1.1.1(服务器地址) | 源IP | 210.1.1.1(服务器地址) | |
| 源端口 | 80(http) | 源端口 | 80(http) | |
| 目的 IP | 200.1.1.1(公网 IP) | 目的 IP | 192.168.10.1(私有 IP) | |
| 目的端口 | 54321(PAT 指定端口) | 目的端口 | 12345(http) | |
| 其他信息 | 协议类型、序列号、确认号等 | 其他信息 | 协议类型、序列号、确认号等 |
是一种特殊的静态 NAT,主要应用于外网用户访问内网服务器的场景
NAT Server的对应关系,也是一对一的。
静态 NAT 是 地址的一对一转换,允许外部主机访问内网主机的所有端口,可以双向互访,不安全。
NAT Server 是地址和端口的 一对一转换,只能让外部主机访问内网服务器的特定端口,更加的安全,仅支持单项互访,及外网主动访问内网。一般用于提供外网主机访问内网服务器的场景。

出口路由器:
interface g0/0/1 //进入连接公网的接口
nat static global 200.1.1.2 inside 192.168.1.1. //写一条NAT
//将内部的 1.1 地址转换为 200.1.1.2 地址

1.先使用 ACL ,匹配到想要进行 NAT 地址转换的主机 IP
2.创建动态 NAT 地址池
3.在连接公网的接口上联动 ACL使用 NAT 转换
NAT 设备配置:
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255 //先抓取想要进行地址转换的 PC机IP
quit
nat address-group 1 200.1.1.2 200.1.1.8 //创建公网地址池1,设定起始和结束范围
quit
interface g0/0/1 //进入连接公网的接口
nat outbound 2000 address-group 1 no-pat//ACL2000 里的主机,从
//该接口往外发的时候,通通转换为group1里的公网地址
display nat session all //查看NAT 转换信息
display nat address-group verbose //查看 NAT 的地址池信息
使用 “IP 地址+端口号”的形式进行转换,一个公有地址可以供大量的私有地址同时去使用访问外网。也称 1对多地址转换。是目前应用最广放,最主流的 NAT 解决方案
nat outbound 2000 address-group 1 //ACL2000 里的主机,从
//该接口往外发的时候,通通转换为group1里的公网地址(默认 PAT)
利用出接口 IP 地址做 NAT 转换,是最节约公网 IP 地址的的一种 NAT 解决方案。
配置思路
1.使用 ACL 抓取要转换的主机 IP
2.直接在连接公网的接口上使用 nat,调用 acl
nat outbound 2000. //开启 NAT,转换 2000 抓到的IP为公网地址。

NAT server 的配置前提,是你需要有一个固定的公网 IP
interface g0/0/1 //进入网关接口
nat server protocol tcp global 200.1.1.2 80 inside 192.168.10.88 80
//将私有 IP 地址 192.168.10.88 的 80 端口,映射给公网地址 200.1.1.5 的 80 端口
//这样,外界访问200.1.1.2:80就相当于是访问了我们的 192.168.10.88:80,实现映射
interface g0/0/1 //进入网关接口
nat server protocol tcp global 200.1.1.2 21 inside 192.168.10.88 21
//将私有 IP 地址 192.168.10.88 的 21 端口,映射给公网地址 200.1.1.2 的 21 端口
//这样,外界访问200.1.1.2:21就相当于是访问了我们的 192.168.10.88:21,实现映射
quit
nat alg ftp enable //如果ftp数据想通过nat来透传,需要nat中开启alg功能
NAT 在IP 地址节约和网络安全性方面带来了显著的好处,但是同时带来的,还有生活中的各种不变,如:
1.端到端连接问题
NAT 改变了数据包的源或目的地址(还有端口号),摧毁了互联网的端到端原则,对于一些需要直接 IP 连接的应用如某些 P2P 应用(下载),NAT 会导致连接建立困难、性能下降或完全无法使用。


2.IP 地址不透明
NAT 使内部网络设备对外部世界不可见,虽然一定程度上提高了安全性,但同时意味着,外部用户不能直接访问内部网络中的服务(如 FTP 服务、WEB 服务等),除非通过特定的 NAT 配置如端口转发(NAT server),才能实现。
3.性能瓶颈和延迟
所有出入的数据包都必须通过 NAT 设备进行地址转换,在网络流量高的情况下,NAT 设备会成为性能瓶颈