1.0 ACL概述
ACL(Acess Control List)的全称是访问控制列表,是由一系列permit和deny语句组成的(每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作),有序规则的列表,它是一个匹配工具,能够对报文进行匹配和区分,一般在路由器以及交换机的接口上面设置。
1.1规则编号
ACL的匹配规则为由上而下依次匹配,一旦匹配成功立即停止,因此一个ACL中的每一条规则都有一个相应的编号,而系统自动为ACL规则分配编号时,每个相邻的两个编号之间的差值会被设定为5,这个差值被称为步长(步长为5,首规则编号为5,下一个编号必须是当前ACL内最大规则编号且是步长整数倍的最小整数),以便用户做后续修改。
1.2通配符掩码
通配符掩码是一个32比特位长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,通常用"0"和"1"穿插表示,"0"表示"匹配","1"表示"随机分配",例如单个地址192.168.1.1,其所有比特位皆不可变,所以其通配符为0.0.0.0;单个网段192.168.1.0/24,其网络段比特位不可变,主机位比特位可变,因此其通配符为0.0.0.255。
上图中,同一个网段中所有奇数和偶数都可以用0.0.0.254表示,因为其IP地址32比特位网络位和主机位的最后一位都是固定的(0或1)。
1.3ACL的分类和标识
1.3.1基本/高级ACL创建案例(在路由器各端口设置)
基础ACL规则创建
|---------------------------------------------------------------------|---------------------------------------------|
| 创建命令及顺序(路由器内) | 命令作用 |
| acl 2000(2000-2999) | 创建一个编号为2000或者(2000-2999)的ACL表 |
| rule 5(不设立默认为5) deny/permit source 192.168.1.1 0(通配符0.0.0.0) | 创建规则编号为5内容为拒绝或同意192.168.1.1源IP地址发送的数据包经过的规则 |
| int g0/0/1 | 进入g0/0/1端口 |
| traffic-filter outbound/inbound(接口发送数据包执行ac/接口收到数据包时执行acl) acl 2000 | 在该接口下调用设立的ACL表 |
cpp
<Huawei>u t m
Info: Current terminal monitor is off.
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.1.254 24
[R1-GigabitEthernet0/0/1]int g0/0/1
[R1-GigabitEthernet0/0/1]undo ip add 192.168.1.254 24
[R1-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[R1-GigabitEthernet0/0/1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[R1-GigabitEthernet0/0/0]int g0/0/2
[R1-GigabitEthernet0/0/2]ip add 192.168.3.254 24
[R1-GigabitEthernet0/0/2]q
[R1]acl 2000
[R1-acl-basic-2000]rule deny source 192.168.1.1 0.0.0.0
[R1-GigabitEthernet0/0/1]traffic-filter outbound acl 2000
高级ACL规则创建
|-----------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
| 创建命令及顺序(路由器内) | 命令作用 |
| acl 3000(3000-2999) | 创建一个编号为3000或者(3000-3999)的ACL表 |
| rule 5(不设立默认为5) tcp deny/permit source 192.168.1.1 0(通配符0.0.0.0) destination 192.168.2.1 0 destination-port gt/lt/eq www/80 | 创建规则编号为5内容为拒绝或者同意协议为tcp源IP地址为192.168.1.1目的地址为192.168.2.1目的端口为80的数据包经过的规则 |
| int g0/0/1 | 进入g0/0/1端口 |
| traffic-filter outbound/inbound(接口发送数据包执行acl/接口收到数据包时执行acl) acl 3000 | 在该接口下调用设立的ACL表 |
cpp
<Huawei>u t m
Info: Current terminal monitor is off.
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.2.254 24
[R2-GigabitEthernet0/0/1]int g0/0/2
[R2-GigabitEthernet0/0/2]ip add 192.168.3.254 24
[R2-GigabitEthernet0/0/2]q
[R2]acl 3000
[R2-acl-adv-3000]rule 5 tcp deny source 192.168.1.1 0 destination 192.168.2.1 0 dest
ination-port eq www(80)
2.0 NAT技术概述
NAT(Nation Adress translation)的全称是网络地址转换技术,对IP数据报文中IP地址进行转换,一般部署在网络出口设备上,一般是路由器或者防火墙,一方面可以缓解IPV4地址短缺的问题,一方面可以让外网设备无法直接与内网设备进行通信,提高了内网的安全性。
2.1静态NAT的定义及创建
每一个私有地址都有一个与之对应并且固定的公有地址,且私有地址与公有地址的关系为一对一映射,支持双向互访,缺点是会需要大量的公网IP地址,一般不会使用。
cpp
<Huawei>u t m
Info: Current terminal monitor is off.
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]int e0/0/0
[R1-Ethernet0/0/0]ip add 192.168.1.254 24
[R1-Ethernet0/0/0]int e0/0/1
[R1-Ethernet0/0/1]ip add 200.0.0.1 24
[R1-Ethernet0/0/1]nat static enable
[R1-Ethernet0/0/1]nat static global 200.0.0.2 inside 192.168.1.1
[R1-Ethernet0/0/1]nat static global 200.0.0.3 inside 192.168.1.2
2.2动态NAT的定义及创建
由于静态NAT造成的映射是一对一的,所以在内网设备不访问外部网络时,公网IP地址依然会处于使用状态,为了避免此种情况造成资源浪费,动态NAT提出了地址池的概念,在内网设备访问外网时临时从地址池中分配一个公网IP地址给设备,并将此地址标志为"in use",在设备不再访问网络时将地址标志位"not use"。
|------------------------------------------|-------------------------------------------------------------------------------|
| 命令(按顺序) | 作用 |
| nat adress-group 1 200.0.0.2 200.0.0.5 | 创建一个200.0.0.2到200.0.0.5的地址池 |
| acl number 2000 | 创建编号为2000的ACL列表 |
| rule permit source 192.168.1.0 0.0.0.255 | 创建规则允许192.168.1.0网段的IP地址发送的数据包通过(进行地址转换) |
| int e0/0/1 | 进入e0/0/1接口 |
| nat static enable | 配置静态映射/启动静态nat |
| nat 2000 outbound adress-group 1 no-pat | 为编号为2000的NAT规则配置一个出站NAT策略,该策略将引用地址组1中的IP地址,并且在进行NAT转换时,只转换源IP地址,而不转换端口号和传输层协议 |
2.3NAPT与easy-ip
动态NAT地址池中的地址在进行地址转换时只会转换IP地址,不会转换端口与协议,即no-pat(非端口地址转换),公有地址和私有地址还是1对1的映射关系,无法提高公有地址的利用率。
NAPT(Network Adress and Port Translation),地址池中的地址在进行IP地址转换时也会转换端口,可以实现公网地址与私网地址的1对n映射,可以有效提高公网地址的利用率。
Easy-IP:原理与NAPT相同,区别在于没有地址池的概念,直接使用接口地址作为NAT转换的公网地址。
cpp
acl 2000
rule permit source 192.168.1.0 0
int g0/0/1
nat 2000 outbound
2.4NAT-Server使用场景
指定公网地址端口与内网地址端口的一对一映射关系,将内网服务器映射到外网中,在内网服务器需要对公网提供服务时使用。
cpp
nat server protocol tcp global current-interface 80 inside 192.168.1.1 80