09 华为设备配置3 NAT与BFD
网络地址转换NAT
NAT概述
NAT的产生背景
- 随着互联网用户的增多,IPv4的公有地址资源显得越发短缺。
- 同时IPv4公有地址资源存在地址分配不均的问题,这导致部分地区的IPv4可用公有地址严重不足。
- 为解决该问题,使用过渡技术解决IPv4公有地址短缺就显得尤为必要。
私网IP地址
| 地址类型 | 说明 |
|---|---|
| 公有地址 | 由专门的机构管理、分配,可以在Internet上直接通信的iP地址。 |
| 私有地址 | 组织和个人可以任意使用,无法在Internet上直接通信,只能在内网使用的iP地址。 |
A、B、C类地址中各预留了一些地址专门作为私有IP地址:
| 类型 | 起始地址 | 结束地址 |
|---|---|---|
| A类 | 10.0.0.0 | 10.255.255.255 |
| B类 | 172.16.0.0 | 172.31.255.255 |
| C类 | 192.168.0.0 | 192.168.255.255 |
这个表格简洁明了地列出了A类、B类和C类私有IP地址的范围。私网地址在公网上无法被路由,具体来说是能够路由至目的地址,但返回数据无法找到原来的源IP地址,因而双方通信无法实现。
NAT技术原理
NAT:对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的技术,一般部署在网络出口设备,例
如路由器或防火墙上。
NAT的典型应用场景:在私有网络内部(园区、家庭)使用私有地址,出口设备部署NAT,对于”从内到外”
的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于“从外到内的”流量,则对数据包的目的地址进行转换。
通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。

静态NAT
静态NAT原理
静态NAT:每个私有地址都有一个与之对应并且固定的公有地址,即私有地址和公有地址之间的关系是一对一映射。
支持双向互访:私有地址访问Internet经过出口设备NAT转换时,会被转换成对应的公有地址。同时,外部网
络访问内部网络时,其报文中携带的公有地址(目的地址)也会被NAT设备转换成对应的私有地址。

静态NAT转换示例

静态NAT配置示例
如下图所示,在R1上配置静态NAT将内网主机的私有IP地址一对一映射到公有地址

配置命令如下:(注意关键字,会考察)
1 | [R1]interface GigabitEthernet0/0/1 |
动态NAT
动态NAT原理
动态NAT:静态NAT严格地一对一进行地址映射,这就导致即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态。为了避免地址浪费,动态NAT提出了地址池的概念:所有可用的公有地址组成地址池。
当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为”In Use”。当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”。

动态NAT转换示例
去程如下图所示:

回程如下图所示:

动态NAT配置介绍
- 创建地址池:配置公有地址范围,其中group-index为地址池编号,start-address、end-address分别为地址池起始地址、结束地址。
1 | [Huawei] nat address-group group-index start-address end-address |
- 配置地址转换的ACL规则:配置基础ACL,匹配需要进行动态转换的源地址范围。
1 | [Huawei] acl number |
- 接口视图下配置带地址池的NAT Outbound:接口下关联ACL与地址池进行动态地址转换,no-pat参数指定不进行端口转换。
1 | [Huawei-GigabitEthernet0/0/0] nat outbound acl-number address-group group-index [ no-pat ] |
动态NAT配置示例
如下图所示,在R1上配置动态NAT将内网主机的私有地址动态映射到公有地址

配置命令如下:
1 | [R1]nat address-group 1 122.1.2.1 122.1.2.3 |
NAPT和Easy-IP
NAPT
NAPT原理
动态NAT选择地址池中的地址进行地址转换时不会转换端口号,即No-PAT(No-Port Address Translation,非端口地址转换)公有地址与私有地址还是1:1的映射关系,无法提高公有地址利用率。
NAPT(Network Address and Port Translation,网络地址端口转换):从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。即一个公网IP地址可以供多个私网IP地址使用,具体方式是将不同私网IP地址映射到该公网IP的不同端口,这是实际项目使用最多的技术

NAPT转换示例
去程如下图所示:

回程如下图所示:

NAPT配置示例
如下图所示,在R1上配置NAPT让内网所有私有地址通过122.1.2.1访问公网。

配置命令如下:
1 | [R1]nat address-group 1 122.1.2.1 122.1.2.1 //NAT地址池仅定义了1个公网IP |
Easy IP
Easy IP原理
Easy IP:实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于**EasyIP没有地址池的概念,使用接口地址作为NAT转换的公有地址。**即将所有私有IP地址:端口号转换为出口IP:端口号,即出接口的NAT
EasyIP适用于不具备固定公网IP地址的场景:如通过DHCP、PPPoE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换。

Easy IP配置示例
如下图所示,在R1上配置EaSy-IP让内网所有私有地址通过122.1.2.1访问公网

配置命令如下:
1 | //无需定义NAT地址池 |
NAT Server(端口映射)
NAT Server使用场景
NATServer:指定**[公有地址:端口]与[私有地址:端口]**的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用。
外网主机主动访问实现对内网服务器的访问。当外网用户访问该**[公有地址:端口]时,配置了端口映射的端口会将此请求映射至内网的[私有地址:端口]**,访问其他端口时则不进行转换,无法访问到

NAT Server端口映射转换示例

NAT Server端口映射配置示例
如下图所示,在R1上配置NATServer将内网服务器192.168.1.10的80端口映射到公有地址122.1.2.1的8080端口。

配置命令如下:
1 | [R1]interface GigabitEthernet0/0/1 |
NAT配置命令小结
| 技术 | 关键命令 | 含义 | 备注 |
|---|---|---|---|
| 静态NAT | [R1-GigabitEthernet0/0/1]nat static global122.1.2.3 inside 192.168.1.3 |
配置静态NAT表项 | 静态 一对一 |
| 动态NAT | [R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat |
配置动态NAT,且只进行一对一的IP地址转换,不进行端口转换NAPT | 动态 一对一 |
| 动态NAPT | [R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 |
配置动态NAPT,IP和端口都参与转换 | 动态 二对二 |
| Easy IP | [R1-GigabitEthernet0/0/1]nat outbound 2000 |
私网IP都转换为出口IP地址。直接匹配ACL,无需指定NAT地址池 | 动态 多对一 : 多 |
| NAT Server | [R1-GigabitEthernet0/0/1]nat server protocol tcp global 202.10.10.1 www inside 192.168.1.1 8080 |
端口映射,将私网服务映射至公网 | 端口映射提供服务 |
NAPT配置实验

为各个设备以及接口配置如图中所示的IP地址,
假设AR2和AR3之间执行OSPF动态路由协议,为二者配置OSPF
AR2上配置OSPF
1 | [AR2]ospf 1 //进入OSPF 1 |
命令含义解释:
这些命令是在华为路由器上配置OSPF(Open Shortest Path First,开放式最短路径优先)协议的示例。下面是对每条命令含义的解释:
[AR2]ospf 1:这条命令用来启用OSPF进程,并指定进程号为1。OSPF进程号是一个本地标识符,用于区分同一设备上的多个OSPF实例,进程号可以是1到65535之间的任意整数。
[AR2-ospf-1]area 0:在OSPF进程中创建一个区域,区域ID为0。区域0通常被称为骨干区域(backbone area),是所有其他区域必须连接的区域,用以交换外部路由信息。区域ID用点分十进制表示,区域0写作0.0.0.0。
[AR2-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255:**在区域0中宣告一个网络。**这条命令指定了网络地址12.1.1.0,掩码0.0.0.255(等同于255.255.255.0),意味着宣告了从12.1.1.1到12.1.1.254的整个网段。这意味着路由器接口配置在这个网段的IP地址会参与OSPF的路由计算。
[AR2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255:同上,这是在区域0中额外宣告的一个网络。网络地址为23.1.1.0,同样使用255.255.255.0作为子网掩码,宣告了从23.1.1.1到23.1.1.254的网段参与OSPF。综上所述,这些命令完成了在路由器AR2上配置OSPF协议,定义了一个OSPF进程,声明了骨干区域,并在该区域内宣告了两个网络,以便这些网络的路由信息能够通过OSPF协议在OSPF域内传播。
AR3上配置OSPF
1 | [AR3]ospf 1 //进入OSPF 1 |
在AR3上查看路由表,确认OSPF是否成功运行
1 | [AR3]diaplay ip routing-table |
显示出了AR2左侧直连网络说明OSPF配通
图
- 在出口路由器配置NAT地址转换
未配置NAT,测试使用PC去ping AR3可见ping不通,因为私网地址无法在出口路由器以外进行路由。
图
因此我们需要在AR1上配置NAPT
第一步:配置公网IP地址池12.1.1.2-12.1.1.5
1 | [AR1]nat address-group 1 12.1.1.2 12.1.1.5 |
第二步:配置ACL规则匹配需要转换的私有地址
1 | [AR1]acl 2000 |
第三步:在路由器出接口上配置NAPT规则(含ACL匹配)
1 | [AR1]int g0/0/1 |
在AR1上查看nat配置,如下图所示可见接口G0/0/1上的NAT已经生效
1 | [AR1]display nat outbound |
1 | [AR1]display nat session //该命令查看NAT映射表,华为模拟器无法执行该命令,机器上可以 |
再次测试使用PC去ping AR3可见仍然不能ping通,因为AR1的出接口并没有到达AR3的路由,
图
我们在AR1上配置一条默认路由如下,使得AR1能够知道到达AR3的下一跳地址
1 | [AR1]ip route-static 0.0.0.0 12.1.1.2 //配置一条默认路由,指向12.1.1.2 |
再次测试使用PC去ping AR3可见能够ping通
图
ping -t持续ping,在AR2上抓包查看数据包的源IP地址,可见ping来的数据包源IP已经转换为了公网IP地址
图;另外还有OSPF报文,其目的地址为特殊的240.0.0.5
网络质量探测技术
BFD和NQA网络质量探测技术,常用来作为备份链路的执行条件,如默认走电信出口链路,如果探测到电信出口故障,切换至联通出口;如默认走有限链路,如果探测到有限链路故障,切换至无线访问
BFD监测网络状态
BFD概述
BFD(Bidrectional Forwarding Detection双向转发检测)用于快速检测系统设备之间的发送和接受两个方向的通信故障,并在出现故障时通知生成应用。BFD广泛用于链路故障检测,并能实现与接口、静态路由、动态路由等联动检测。bfd使用的默认组播地址(默认就是224.0.0.184)。
BFD配置示例
如下图所示,假设R1上配置了默认路由
1 | [R1]ip route-static 2.2.2.0 24 10.1.12.2 |

某一时刻,R2的GE0/0/0端口损坏不通,希望R1能在不通时删掉上述静态路由。此时可在R1上配置BFD检测对端状态。即在R1-R2之间部署BFD来检测对端的状态。
1 | [R1]ip route-static 2.2.2.0 24 10.1.12.2 track bfd-session bfd12 |

若对端不支持BFD,也可以通过BFD单臂回声监测对端状态,模拟器无法实现单臂回声
BFD详细配置项如下所示:

实验解析BFD工作
实验拓扑如下图所示

配置各接口IP地址,注意为R2的LoopBack0接口配置IP地址,模拟其直连网络
环回地址配置如下所示:
1 | [AR2]int lo0 |
- 配置路由:现在AR1无法ping通2.2.2.2,因为没有路由,我们手动为AR1配置一条到达2.2.2.2的静态路由。配置之后即可ping通2.2.2.2
1 | [AR1]ip route-static 2.2.2.0 255.255.255.0 12.1.1.1.2 |
- 将AR2的GE0/0/0接口shutdown,则AR1无法ping通2.2.2.2
1 | [AR2]int g0/0/0 |
- 此时查看AR1的路由表
diaplay ip routing-table,前面配置的静态路由仍然存在
1 | [AR1]display ip routing-table |
将AR2的GE0/0/0接口恢复,则AR1可以再次ping通2.2.2.2
为了实现自动监测对端状态,可以配置BFD探测对端状态,一旦对端不通,则删除相应路由
R1上配置如下
1 | [AR1]bfd R1R2 bind peer-ip 12.1.1.2 source-ip 12.1.1.1 auto |
R2上配置如下
1 | [AR2]bfd R1R2 bind peer-ip 12.1.1.1 source-ip 12.1.1.2 auto //即将上面的对端IP和源IP对调 |
diaplay bfd session all查看bfd状态,up意为已经启动bfd
1 | [AR2]diaplay bfd session all |
现在R1和R2在互相通信各自BFD状态,一旦一方不通,BFD状态即变为down
- 在AR1静态路由中配置BFD跟踪:如果bfd检测到对端已经不通,就删除对应路由表项
1 | [AR1]undo ip route-static 2.2.2.0 255.255.255.0 12.1.1.1.2 |
这时查看路由表,可见静态路由已经在路由表中
如果此时挂掉R2的GE0/0/0口,display bfd session all查看R1的BFD状态,可见其已经为down状态
再display ip routing-table查看R1路由表,可见上述静态路由表项已被删除
NQA监测网络状态
NQA概述
NQA(NetworkQualityAnalysis,网络质量分析)是系统提供的一个特性,位于链路层之上,覆盖网络层、传输层、应用层,独立于底层硬件,可实现实时监视网络性能状况,在网络发生故事进行故障诊断和定位。
NQA通过发送测试报文,对网络性能或服务质量进行分析,NQA支持的测试包括多种协议,例如http的延迟、TCP延迟、DNS错误、ICMP消息等,下面以ICMP为例简单
NQA配置示例

AR1配置如下:

AR2配置如下:

在AR1上使用检测命令display nqa results,可以看到测试结果,看到网络性能



静态路由或默认路由后面可以trackBFD,也可以track NQA。
ip route-static 0.0.0.0 0.0.0.0 12.1.1.2 track nqa root icmp //在主默认路由上挂接NQA
掩码和反掩码使用总结
| 掩码/反掩码 | 使用场景 | 示例 |
|---|---|---|
| 使用掩码的场景 | IP地址强相关 | - 场景—:IP地址配置 ip address 192.168.1.1 255.255.255.0 或ip address 192.168.1.1 24- 场景二:DHCP配置 network 192.168.1.0 mask 255.255.255.0或network 192.168.1.0 mask 24 |
| 使用反掩码的场景 | ACL、OSPF路由宣告 | - 场景—: ACLrule 10 permit source 192.168.1.1 0 或 rule 10 permit source 192.168.1.1 0.0.0.0 或rule 10 permit source 192.168.1.0 0.0.0.255- 场景二:OSPF路由宣告 network 192.168.1.0 0.0.0.255 //宣告192.168.1.0网段 |
| 不需要掩码或反掩码 | RIP路由宣告 | RIP路由宣告不需要掩码或反掩码,只需要宣告主类网络(ABC类主类IP地址掩码分别为/8/16/24): - network 10.0.0.0- network 172.16.0.0- network 192.168.1.0 |