一、题目
ICMP报文不包含端口号,所以无法使用NAPT
A. 对
B. 错
二、答案
B
三、解析
ICMP虽然没有端口号,但是ICMP协议是可以使用NAPT的。NAPT会利用ICMP协议里面的Identifier字段的值当做端口号来进行转换。
当NAPT设备收到一个出站的ICMP消息(例如ping请求)时,它会记录数据包的源IP地址和ICMP的Identifier字段的值,然后分配一个唯一的端口号。随后,NAPT设备会修改出站ICMP消息,将源IP地址更改为NAPT设备的公共IP地址,同时将ICMP的Identifier字段更改为分配的端口号。这样,NAPT设备可以在内部网络中跟踪多个ICMP会话,同时使用唯一的端口号进行地址转换。
当目标服务器收到经过NAPT设备处理的ICMP消息时,它会将响应返回给NAPT设备。NAPT设备查找之前记录的映射表,将目标IP地址和端口号还原为原始的内部IP地址和ICMP的Identifier字段的值,然后将响应消息路由回到内部主机。
四、扩展–NAT
随着互联网的用户增多,IP的公网地址资源显得越发的短缺。NAT(Network Address Translation,网络地址转换)技术可以将局域网IP地址转换为公网IP地址,从而实现互联网的访问。除此之外,NAT技术还能够帮助我们隐藏内网主机的真实IP地址,从而防止外网对内网主机的攻击,提高内网的安全性。
NAT技术包含有以下几种分类:
1.1.1 静态NAT
静态NAT建立起局域网私网地址与公网地址一对一的映射关系。有多少私网地址就需要有多少个公网地址来建立起映射。NAT技术解决的是公网IPv4地址不足的问题,如果所有私网IP都进行一对一转换的话,那NAT就没有任何的意义。因此静态 NAT实际应用中使用的情景并不多,一般是使用在内网服务器需要被外网用户访问的场景中,如图所示。
配置静态NAT的方式很简单,只需在互联网出接口上通过nat static命令配置即可,如下所示:
[RouterA] interface gigabitethernet 0/0/0 [RouterA-GigabitEthernet0/0/0] nat static global 202.100.8.8 inside 192.168.1.1 //配置静态nat,将局域网内部地址192.168.1.1 映射为公网地址202.100.8.8 |
配置完毕后,在出口路由器上可使用命令display nat static命令查看地址池映射关系,如下所示:
<RouterA> display nat static Static Nat Information Interface : GigabitEthernet 0/0/0 Global IP/Port : 202.100.8.8/—- Inside IP/Port : 192.168.1.1/—- Protocol : —- VPN instance-name : —- Acl number : —- Netmask : 255.255.255.255 Description : —- Total : 1 |
1.1.2 动态NAT
动态NAT,顾名思义,其中的私网IP地址与公网IP地址之间的转换不是固定的,具有动态性。通过把需要访问外网的私网IP地址动态地与公网IP地址建立临时映射关系,并将报文中的私网IP地址进行对应的临时替换,待返回报文到达设备时再根据映射表“反向”把公网IP地址临时替换回对应的私网IP地址,然后转发给主机,实现内网用户和外网的通讯。当映射关系超时后,该流量对应的公网地址将进行回收,不再与该私网地址对应,而是可以分配给其他私网地址来进行映射,如图所示。
动态NAT的实现方式有两种,一种是Basic NAT,另一种是NAPT。Basic NAT是一种“一对一”的动态地址转换,即一个私网IP地址与一个公网IP地址进行映射;而NAPT则是通过引入“端口”变量,实现“多对一”的动态地址转换,即多个私网IP地址可以与同一个公网IP地址进行映射。目前使用最多的是NAPT方式,因为它能够提供多对一的映射功能。
- NAPT实现原理
NAPT使用“IP地址+端口号”的形式进行转换,相当于增加了一个变量,最终可以使多个私网IP地址共用一个公网IP地址访问外网。如图 所示为NAPT的实现原理,具体过程如下。
动态NAT的配置遵循以下步骤:
① 在出口路由器上配置ACL,从而确定允许进行NAT的网段或流量
[RouterA] acl 2000 [RouterA -acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255 [RouterA -acl-basic-2000] quit |
②在出口路由器上定义地址池
[RouterA]nat address-group 1 218.85.157.10 218.85.157.20 //创建NAT地址池,编号为1,公网地址包括218.85.157.10 – 218.85.157.20,共计10个地址 |
③在出口路由器的出接口上绑定ACL和地址池
[RouterA] interface g0/0/1 [RouterA -GigabitEthernet0/0/1] nat outbound 2000 address-group 1 |
④在出口路由器上执行【display nat session all】命令,查看NAPT会话信息进行验证
[RouterA]disp nat session all NAT Session Table Information: Protocol : ICMP(1) SrcAddr Vpn : 192.168.1.1 DestAddr Vpn : 200.10.1.201 Type Code IcmpId : 0 8 16411 NAT-Info New SrcAddr : 218.85.157.10 New DestAddr : —- New IcmpId : 10263 Protocol : ICMP(1) SrcAddr Vpn : 192.168.1.2 DestAddr Vpn : 200.10.1.201 Type Code IcmpId : 0 8 16416 NAT-Info New SrcAddr : 218.85.157.10 New DestAddr : —- New IcmpId : 10265 ……(省略部分) Total : 9 |
在NAPT转换中有一种特例叫做Easy IP,它可以实现自动根据路由器广域网接口的公网IP地址实现与私网IP地址之间的映射,不需要创建公网地址池。
Easy IP主要应用在将路由器广域网接口IP地址作为要被映射的公网IP地址的情形,特别适用于中小企业局域网接入到互联网的情况。一般中小型企业具有以下特点:内网主机较少、出接口通过拨号方式获取临时公网IP以供内网主机访问互联网,如图 所示。
Easy IP的配置遵循以下步骤:
① 在出口路由器上配置ACL,从而确定允许进行NAT的网段或流量
[RouterA] acl 2000 [RouterA -acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255 [RouterA -acl-basic-2000] quit |
②在出口路由器的出接口上绑定ACL
[RouterA] interface g0/0/1 [RouterA -GigabitEthernet0/0/1] nat outbound 2000 |
③在出口路由器上进行验证
<RouterA> display nat outbound NAT Outbound Information: ————————————————————————————— Interface Acl Address-group/IP/Interface Type ————————————————————————————— Dialer1 2000 1.1.1.1 easyip —————————————————————————————– Total : 1 |