原理概述
访问控制列表ACL(Access Control List)是由permit或deny语句组成的一些列有顺序的规则集合,这些规则根据数据包的原地址、目的地址、源端口、目的端口等信息来描述。ACL规则通过匹配报文中的信息对数据包进行分类,路由设备根据这些规则判断哪些数据包可以通过,哪些数据包需要拒绝。
按照访问控制列表的用途,可以分为基本的访问控制列表和高级的访问控制列表,基本ACL可以使用报文的源IP地址、时间段等信息来定义规则,编号范围为2000~2999。
一个ACL可以由多条“deny/permit”语句组成,每一条语句描述一条规则,每条规则有个一个Rule-ID。Rule-ID可以由用户进行配置,也可以由系统自动根据步长生成,默认步长为5,Rule-ID默认按照配置先后顺序分配0、5、10、15等,匹配顺序按照ACL的Rule-ID的顺序,从小到进行匹配。
实验目的
- 理解基本访问控制列表的应用场景
- 掌握配置基本访问控制列表的方法
实验内容
本实验模拟企业网络环境,R1为分支机构A管理员所在IT部门的网关,R2为分支机构A用户部门的网关,R3为分支机构A去往总部出口的网关设备,R4为总部核心路由器设备。整网络运行OSPF协议,并在区域0内。企业设计通过远程方式管理核心网路由器R4,要求只能由R1所连的PC(本实验使用换回接口模拟)访问R4,其他设备均不能访问。
实验编址
设备 | 接口 | IP地址 | 子网掩码 | 默认网关 |
R1 | GE0/0/0 | 10.0.13.1 | 255.255.255.0 | N/A |
Loopback0 | 1.1.1.1 | 255.255.255.255 | N/A | |
R2 | GE0/0/0 | 10.0.23.2 | 255.255.255.0 | N/A |
R3 | GE0/0/0 | 10.0.13.3 | 255.255.255.0 | N/A |
GE0/0/1 | 10.0.23.3 | 255.255.255.0 | N/A | |
GE0/0/2 | 10.0.34.3 | 255.255.255.0 | N/A | |
Loopback0 | 3.3.3.3 | 255.255.255.255 | N/A | |
R4 | GE0/0/0 | 10.0.34.4 | 255.255.255.0 | N/A |
Loopback0 | 4.4.4.4 | 255.255.255.255 | N/A |
实验拓扑
实验步骤
1.基本配置
根据实验编址表进行相应的IP配置,并检测各直连链路的连通性。
2.配置OSPF网络
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 10.0.23.0 0.0.0.255
[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.0.23.0 0.0.0.255
[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.0.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[R4]ospf 1
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
配置完成后,在R1的路由表上查看OSPF路由信息。
<R1>dis ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 4 Routes : 4
OSPF routing table status : <Active>
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
3.3.3.3/32 OSPF 10 1 D 10.0.13.3 GigabitEthernet
0/0/0
4.4.4.4/32 OSPF 10 2 D 10.0.13.3 GigabitEthernet
0/0/0
10.0.23.0/24 OSPF 10 2 D 10.0.13.3 GigabitEthernet
0/0/0
10.0.34.0/24 OSPF 10 2 D 10.0.13.3 GigabitEthernet
0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
路由器R1已经学习到了相关网段的路由条目,测试R1的环回口与R4的环回口间的连通性。
ping -a 1.1.1.1 4.4.4.4
PING 4.4.4.4: 56 data bytes, press CTRL_C to break
Reply from 4.4.4.4: bytes=56 Sequence=1 ttl=254 time=40 ms
Reply from 4.4.4.4: bytes=56 Sequence=2 ttl=254 time=30 ms
Reply from 4.4.4.4: bytes=56 Sequence=3 ttl=254 time=30 ms
Reply from 4.4.4.4: bytes=56 Sequence=4 ttl=254 time=30 ms
Reply from 4.4.4.4: bytes=56 Sequence=5 ttl=254 time=20 ms
--- 4.4.4.4 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/30/40 ms
3.配置基本ACL控制访问
在总部核心路由器R4上配置Telnet相关配置,配置用户密码为huawei。
[R4]user-interface vty 0 4
[R4-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):huawei
配置完成后尝试在IT部门网关设备R1上建立Telnet连接。
The device is running!
<R1>telnet 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
Connected to 4.4.4.4 ...
Login authentication
Password:
<R4>
R1成功登录R4。再尝试在普通员工部门网关设备R2上建立连接。
The device is running!
<R2>telnet 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
Connected to 4.4.4.4 ...
Login authentication
Password:
<R4>
R2成功登录R4。只要是路由可达的设备,并且拥有Telnet的密码,都可以成功访问核心设备R4。通过配置标准ACL来实现访问过滤禁止普通员工登录。
基本的ACL可以针对数据包的源IP地址进行过滤,在R4上使用acl命令创建一个编号型ACL,基本ACL的范围是2000~2999。
[R4]acl 2000
[R4-acl-basic-2000]
接下来在ACL视图中,使用rule命令配置ACL规则,指定规则ID为5,允许数据包源地址为1.1.1.1的报文通过,反掩码全为0,即精确匹配。
[R4-acl-basic-2000]rule 5 permit source 1.1.1.1 0
使用命令rule配置第二条规则,指定规则ID为10.拒绝任意源地址的数据包通过。
[R4-acl-basic-2000]rule 10 deny source any
在上面的ACL配置中,第一条规则的规则ID定义为15,并不是1;第二条定义为10,也不与5连续,这样的配置的好处是能够方便后续的修改或插入新的条目。并且在配置的时候也可以不采用手工方式指定规则ID,ACL会自动分配规则ID,第一条为5,第二条为10,......以此类推,即默认步长为5,该步长参数也是可以修改的。
ACL配置完成后,在VTY中调用。使用inbound参数,即在R4的数据入方向上调用。
[R4]user-interface vty 0 4
[R4-ui-vty0-4]acl 2000 inbound
配置完成后,使用R1的环回口地址1.1.1.1 测试4.4.4.4的连通性。
<R1>telnet -a 1.1.1.1 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
Connected to 4.4.4.4 ...
Login authentication
Password:
<R4>
然后尝试在R2上访问R4。
<R2>telnet 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
可以发现,R2已经无法访问R4,即上述ACL已经配置生效。
4.基本ACL的语法规则
ACL的执行是有顺序性的,如果规则ID小的规则已经被命中,并且执行了允许或者拒绝的动作,那么后续的规则就不再继续匹配。
在R4上使用 display acl all 命令查看设备上所有的所有访问控制列表。
<R4>dis acl all
Total quantity of nonempty ACL number is 1
Basic ACL 2000, 2 rules
Acl's step is 5
rule 5 permit source 1.1.1.1 0 (2 matches)
rule 10 deny (3 matches)
以上是目前ACL的所有配置信息。根据上一步骤中的配置,R4中存在一个基本的ACL,有两个规则rule 5 permit source 1.1.1.1 0 和 rule 10 deny source any ,并且已经根据这个规则将R2的访问拒绝。现出现新的需求,需要R3能够使用其环回口地址访问R4。
首先尝试使用规则ID15来添加允许3.3.3.3的访问权限。
<R4>sys
Enter system view, return user view with Ctrl+Z.
[R4]acl 2000
[R4-acl-basic-2000]rule 15 permit source 3.3.3.3 0
配置完成后使用R3的3.3.3.3访问R4。
<R3>telnet -a 3.3.3.3 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
Error: Can't connect to the remote host
发现无法访问。根据ACL匹配顺序,这是由于规则10的条目是拒绝所有行为,后续所有的允许规则都不会被匹配。若要此规则生效,必须添加在拒绝所有的规则ID之前。
在R4上修改ACL2000,将规则ID修改为8.
[R4-acl-basic-2000]undo rule 15
[R4-acl-basic-2000]rule 8 permit source 3.3.3.3 0
配置完成后,再次尝试使用R3的环回口访问R4。
<R3>telnet -a 3.3.3.3 4.4.4.4
Press CTRL_] to quit telnet mode
Trying 4.4.4.4 ...
Connected to 4.4.4.4 ...
Login authentication
Password:
<R4>
此时访问成功,证明配置已经生效。