hcia datacom学习(8):静态NAT、动态NAT、NAPT、Easy IP、NAT server

embedded/2024/9/25 5:27:06/

1.私网地址

在现实环境中,企业、家庭使用的网络是私网地址(内网),运营商维护的网络则是公网地址(外网)。私网地址是在局域网(LAN)内使用的,因此无法被路由,不能直接用于互联网通信。但利用网络地址转换(NAT),可以让这些私网地址进行互联网通信。

*私有IP地址分为以下几个范围:

10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

私网地址可以被任何组织或个人在其内部网络中自由使用,无需向全球互联网注册机构申请。

家里的路由器往往集成了NAT、DHCP、缺省路由(直接向wan口传送数据包)

2. NAT种类

NAT的原理就是把内网ip映射为公网ip(更改发送的ip数据包中的源ip,更改接受的ip数据包的目的ip),只是不同种类的NAT映射方式不一样

2.1静态NAT

一对一映射,一个公网ip对应一个私网ip。用于一些需要对外映射的服务器,并没有起到节省公网ip的作用

配置代码:

nat static enable
#开启nat静态功能。需要先进入接口,才能敲入此命令
nat static global 公网地址 inside 私网地址
#公网地址、私网地址一一映射
display nat static
#显示静态nat设置

2.2动态NAT

使用公有地址池,以先到先得的原则分配公网地址。

当内网主机请求访问公网时,动态 NAT 会从地址池中选择一个未被占用的公网 IP 地址一对一转化。直到会话结束,NAT才会把公网ip释放回地址池中。

*路由器中设置动态NAT的步骤如下

(1)创建动态地址池:

nat address-group 编号 公网ip地址范围
#创建一个公网ip地址池
#编号一般是1到7任选一个display nat address-group
#显示当前路由器内的公网地址池

(2)创建ACL

*什么是ACL

ACL是访问控制列表,通过设置规则来限制哪些报文可以通过,哪些报文则被禁止通过。

在动态NAT中,ACL则是用来限制哪些内网ip可以使用公网池进行映射的

在路由器界面输入acl ?后,可以看到下图所示的提示界面

其中2000-2999是基础acl标号,动态NAT使用基础acl标号即可。

动态NAT中acl的设置命令如下:

acl 2000
#设置一个编号为2000的acl
rule permit source 192.168.20.0 0.0.0.255
#设置192.168.20.0可以被映射。0.0.0.255代表前24位相同,后8位0到255的匹配范围,刚好与掩码相反
#如果只输入rule permit,代表所有内网ip都被允许映射 

(3)关联acl与动态NAT池

进入公网端口下,输入下述命令

nat outbound 2000 address-group 1 no-pat
#2000是acl编号,1是动态NAT池的编号dis nat outbound
#查看当前端口动态NAT池与acl的绑定表

(4)实例

关于AR1的端口ip设置就略过了,下面给出路由和NAT设置(AR2不需要额外设置)

AR1:

ip route-s 0.0.0.0 0 5.0.0.254
#配置一条静态路由nat address-group 1 5.0.0.50 5.0.0.60        
acl 2000                                                                       rule permit source 192.168.0.0 0.0.0.255
int g0/0/1nat outbound 2000 address-group 1 no-pat    

我一开始实验用的路由器是AR1220,结果是静态NAT能通,动态NAT不通,换成AR2220后,动态NAT就通了,也不知道为什么

2.3 NAPT(PAT)

同时对ip与端口号进行转换(不同的内网ip可以对应同一个公网ip,只是端口号不一样),实现公网ip与私网ip的1比N映射

NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个公网IP后面。

*NAPT的设置与动态NAT的设置步骤基本相同,只需要去掉最后绑定acl命令中的no-pat

再次以之前的实例为样本设置NAPT:

关于AR1的端口ip设置就略过了,下面给出路由和NAT设置(AR2不需要额外设置)

AR1:

ip route-s 0.0.0.0 0 5.0.0.254
#配置一条静态路由nat address-group 1 5.0.0.50 5.0.0.60        
acl 2000                                                                       rule permit source 192.168.0.0 0.0.0.255
int g0/0/1nat outbound 2000 address-group 1  

2.4 Easy IP

Easy IP 可以算是NAPT的一种特例,可以自动根据路由器上WAN 接口的公网IP 地址实现与私网IP 地址之间的映射(无需创建公网地址池)。
Easy IP 主要应用于将路由器WAN 接口IP 地址作为要被映射的公网IP 地址的情形,特别适合小型局域网接入公网的情况。

*Easy IP由于不需要动态池,所以步骤更简单,只需要设置acl即可,其公网口是哪个,acl就自动与公网口绑定,甚至插拔更换公网口,路由器也会再自动匹配,这也是家用路由器使用Easy IP的原因。

再以上示图例为例

关于AR1的端口ip设置就略过了,下面给出路由和NAT设置(AR2不需要额外设置)

AR1:

ip route-s 0.0.0.0 0 5.0.0.254
#配置一条静态路由acl 2000                                                                       rule permit source 192.168.0.0 0.0.0.255
int g0/0/1nat outbound 2000 

2.5 NAT server(端口映射)

将内网中的某个服务的内网ip与端口映射为一对固定的公网ip与端口,优先级比NAPT更高

*配置方式以下图为例:

关于AR4的端口ip设置就略过了,下面给出路由和NAT设置(AR5不需要额外设置)

AR4:

ip route-s 0.0.0.0 0 5.0.0.1
#配置一条静态路由int g0/0/1
进入公网口
nat server protocol tcp global 5.0.0.150 8080 inside 192.168.20.50 80
#将内网中ip为192.168.20.50的端口为80的服务,映射为公网ip为5.0.0.150同时端口为8080的服务
#tcp是http使用的应用层协议,在需要的情况下也可以填udp、icmp

完成配置后,在客户端的http部分输入服务器http服务映射出的公网ip,同时使用冒号加上新映射的端口8080,可以看到能够访问服务器的http服务

NAT server还可以像Easy IP那样直接使用wan口ip进行映射,设置方法如下:

nat server protocol tcp global current-interface 8080 inside 192.168.20.50 80
#将内网中ip为192.168.20.50的端口为80的服务,映射为wan口ip同时端口为8080的服务

*2.6覆盖wan口ip的报错

出现上图错误是因为NAT设置的公网ip与wan口ip冲突了。以下是出现该错误的几种情况:

(1)动态NAT或NAPT的动态NAT池内包含了wan口ip

(2)NAT server映射的公网ip设置成了wan口ip(没有使用current-interface参数,直接输入wan口ip)


http://www.ppmy.cn/embedded/42195.html

相关文章

世界电信日 | 紫光展锐以科技创新支撑数字经济可持续发展

专注科技创新,打造全球数字经济技术基石 紫光展锐坚持科技创新,为数字经济蓬勃发展提供基石力量。 面对5G-A技术的巨大潜力,紫光展锐与众多生态伙伴紧密合作,积极推动5G-A的商用进程。紫光展锐提出的两项R18 eRedCap演进方案已被3GPP标准采…

【Shell脚本】文本三剑客之sed编辑器

目录 一.sed编辑器的相关介绍及执行过程 1.sed介绍 2.sed编辑器的执行过程 二.sed命令格式 1.基本格式 2.在一个脚本文件里定义操作命令 3.常用操作 三.打印功能 1.默认打印方式 2.防止出现重复打印 2.1. 2.2. 2.3. 2.4. 3.使用地址打印 3.1.以数字形式打印行区…

cuda 内核启动

C 使用 __global__ 声明说明符定义内核&#xff0c;并使用新的 <<<...>>> 执行配置语法指定内核调用的 CUDA 线程数&#xff08;请参阅 C 语言扩展&#xff09;。 每个执行内核的线程都有一个唯一的线程 ID&#xff0c;可以通过内置变量在内核中访问。 示例…

教程:在 Apifox 中将消息通知集成到钉钉、飞书等应用

Apifox 支持将「消息通知」集成到第三方应用平台&#xff0c;包括企业微信、钉钉、飞书、Webhook 和 Jenkins。具体可在项目的【项目设置 -> 通知设置 -> 外部通知】里新建一个通知事件&#xff0c;然后在弹出的界面中配置即可。 在配置界面可以选择需要的触发事件&#…

SSH反向代理是什麼?有什麼用?

SSH反向代理&#xff0c;也被稱為SSH隧道&#xff0c;是一種利用SSH協議的端口轉發功能&#xff0c;將網路數據通過加密的SSH連接進行傳輸的技術。它的工作原理是&#xff0c;通過SSH連接將本地的一個端口與遠程伺服器的一個端口進行綁定&#xff0c;所有發往本地端口的數據都會…

E5063A是德科技e5063a网络分析仪

181-2461-8938产品概述&#xff1a; 简  述&#xff1a; E5063A 是低成本网络分析仪&#xff0c;可提供优化的性能和功能&#xff0c;适用于测试简单的无源器件&#xff0c;例如天线、电缆、滤波器和 PCB 等。它利用工业标准 ENA 系列始终如一的测量架构&#xff0c;能够极…

YOLOv5 AssertionError: “XXX” acceptable suffix is [‘.pt‘]

使用终端训练YOLOv5模型报错&#xff0c;原命令为&#xff1a; “python train.py --img 640 --batch 1 --epochs 25 --data "C:\Users\GRT\PycharmProjects\yolov5-7.0\animal_training\dataset.yaml " --weights “C:\Users\GRT\PycharmProjects\yolov5-7.0\MyFunc…

04-Json/Ajax/Vue的知识

1. Json结构 1.1 Json概述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;实现数据前后端交互。 它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。 JSON采用完全独立于程序语言的文本格式。这些特性使JSON成为理想的数据交换…