路由与交换--ACL基本命令及其实验配置

1 ACL 的配置

1.1 创建 ACL

      标准 ACL

router(config)#access-list <ACL表号> {permit|deny}{<源IP|host><反掩码>|any}  //表号1~99

      扩展 ACL

router(config)#access-list <ACL表号> {permit|deny}{<协议名称>|<端口号>}{<源IP><反掩码>}{<目的IP><反掩码>}{<关系><协议名称>}   //表号101~199

1.2 应用 ACL

router(config-if)#{协议栈} access-group <ACL表号> {in|out}   //协议栈可以为IP或IPX

 

2 ACL 上机实验

2.1 ACL 配置举例 1

router(config)#access-list 1 deny 10.0.0.1 0.0.0.0   //ACL表号为1,丢弃10.0.0.1发出的数据包,相当于 deny host 10.0.0.1
router(config)#access-list 1 permit any
router(config)#access-list 2 permit any   //ACL表号为2,可以转发任意数据包
router(config)#int s0/0
router(config-if)#ip access-group 1 in   //该接口输入方向应用ACL列表组1,拒绝来自10.0.0.1的数据包
router(config-if)#ip access-group 2 out   //该接口输出方向应用ACL列表组2,允许发出流经该路由器的所有数据包

 

2.2 ACL 配置举例 2

router(config)#access-list 101 deny tcp 172.16.0.0 0.0.255.255 host 192.168.1.1 eq telnet   //不允许172.16.0.0网络的数据包telnet主机192.168.1.1
router(config)#access-list 101 permit ip any any   //允许转发其他任何数据包
router(config)#int s0/0
router(config-if)#ip access-group 101 in

 

2.3 ACL 配置举例 3

      限制只允许 192.168.2.2 访问 192.168.1.2 的 80 端口,192.168.3.2 访问 192.168.1.2 的 DNS。

router(config)#ip access-list extended cj
router(config ext-nacl)#permit udp host 192.168.3.2 host 192.168.1.2 eq 53
router(config ext-nacl)#permit tcp host 192.168.2.2 host 192.168.1.2 eq 80
router(config ext-nacl)#exit
router(config)#int f0/0
router(config-if)#ip access-group cj out

 

2.4 ACL 配置举例 4

要求:只允许 172.16.4.0/24 网络的主机通过端口 E0 进入网络 172.16.3.0/24,其他的被禁止。

      为了实现上面的实验要求,我们将网络拓扑进行简化,PC1 的 IP 设置为 172.16.4.2,PC2 的 IP 设置为 172.16.0.2,PC3 的 IP 设置为 172.16.3.2,最终要达到的要求为 PC1 网段的主机可以访问 PC3 网段的主机,PC2 网段的主机不能访问 PC3 网段的主机。需要注意的是这里的路由器的选择,如果选择不恰当会导致端口不够用,可以参照下面的网络拓扑图中所选路由器。 

      先对路由器进行配置,让三台 PC 之间都可以通信。

Router>enable
Router#conf t
Router(config)#int gig0/0
Router(config-if)#ip add 172.16.4.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int gig0/1
Router(config-if)#ip add 172.16.0.1 255.255.255.0
Router(config-if)#no shut
Router(config)#int gig0/2
Router(config-if)#ip add 172.16.3.1 255.255.255.0
Router(config-if)#no shut

      路由器配置完成后给各台 PC 分配 IP,并设置其网关,先来验证 PC1 和 PC2 都能 ping 通 PC3 。

      上述结果表明,在没有做 ACL 限制前,PC 之间是可以相互通信的,现在来设置 ACL 规则,让 PC1 可以 ping 通 PC3,而 PC2 不能 ping 通 PC3。

Router(config)#access-list 5 permit 172.16.4.0 0.0.0.255
Router(config)#int gig0/2
Router(config-if)#ip access-group 5 out

      现在再来验证 PC 之间的通信。

      PC1 可以 ping 通 PC3,但 PC2 不能 ping 通 PC3,达到实验要求。这里并没有 deny any 的语句,是因为路由隐含在每个 ACL 列表的最后有一句拒绝所有数据包访问的语句,所以不用再专门写出了。

 

2.5 ACL 配置举例 5 

要求:

      (1)禁止从 172.16.4.0/24 通过 FTP 访问 172.16.3.0/24;

      (2)除此以外的其他访问和数据流都允许。

      为了验证上述实验,这里将网络拓扑图进行简化,由于 172.16.3.0 网段涉及 FTP 登录,这里用一台服务器来代替该网段,并设置 FTP 的登录账号和密码。

      以下是简化的网络拓扑图和对 server 的 FTP 的配置 。

      对路由器进行配置,配置好后为 PC 和 server 分配 IP,并设置其网关,然后验证 PC1 在没有做 ACL 限制前可以访问 FTP。

Router>enable
Router#conf t
Router(config)#int gig0/0
Router(config-if)#ip add 172.16.4.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int gig0/1
Router(config-if)#ip add 172.16.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int gig0/2
Router(config-if)#ip add 172.16.3.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit 

      现在对路由器做 ACL 限制,让 PC1 无法再登录 server 的 FTP。

Router(config)#access-list 105 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20
Router(config)#access-list 105 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21
Router(config)#access-list 105 permit ip any any
Router(config)#int gig0/0
Router(config-if)#ip access-group 105 in

      验证 PC1 是否还能继续登录 server 的 FTP,由结果可以看出已经达到实验要求 。

      列表最后要有一句 permit ip any any,这个必须加上,因为一个列表中至少要有一句 permit 语句。

 

2.6 ACL 配置举例 6 

要求:

      (1)拒绝 172.16.2.0/24 这个网段的主机访问 SERVER1;

      (2)拒绝 PC1 访问 SERVER1;

      (3)只允许 PC1 对 R2 进行远程连接管理。

R2(config)#access-list 1 deny 172.16.2.0 0.0.0.255
R2(config)#access-list 1 deny host 172.16.1.10
R2(config)#access-list 1 permit any
R2(config)#access-list 2 permit host 172.16.1.10
R2(config)#int f0/0
R2(config-if)#ip access-group 1 out   //对端口
R2(config)#line vyt 0 4
R2(config-line)#password fsh
R2(config-line)#access-class 2 in   //对线模式

 

2.7 ACL 配置举例 7 

要求:

      (1)211.12.3.0/24 这个网段不能访问 SEREVER2 的网页和 FTP,其他服务可以访问;

      (2)所有设备都能 ping 通 PC4,但反之不行(单向 ping)。

      控制访问类别

R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 80
R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 20
R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 21

      控制单向 ping

R2(config)#access-list 101 permit icmp 211.12.3.0 0.0.0.255 any echo-reply   //echo-reply表示ICMP响应
R2(config)#access-list 101 deny icmp 211.12.3.0 0.0.0.255 any   //拒绝211.12.3.0/24到其他任何网络的icmp包
R2(config)#access-list 101 permit ip any any
R2(config)#int f0/1
R2(config-if)#ip access-group 101 in

 

2.8 ACL 配置举例 8

要求:

      (1)VLAN 10 不能访问 VLAN 30;

      (2)其余 VLAN 之间可以自由访问。

1、划分 VLAN,并将各接口分配至 VLAN中。

Switch>enable
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#vlan 30
Switch(config-vlan)#exit
Switch(config)#int fa0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int fa0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int fa0/3
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 30
Switch(config-if)#exit

2、开启交换机路由功能,并给各虚拟 VLAN 接口配置 IP 地址,此接口和地址将成为 vlan 中主机的网关。

Switch(config)#ip routing
Switch(config)#int vlan 10
Switch(config-if)#ip add 10.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20
Switch(config-if)#ip add 20.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 30
Switch(config-if)#ip add 30.0.0.1 255.255.255.0
Switch(config-if)#exit

3、配置访问控制列表,并应用。

Switch(config)#access-list 1 deny 10.0.0.0 0.0.0.255
Switch(config)#access-list 1 permit any
Switch(config)#int vlan 30
Switch(config-if)#ip access-group 1 out

4、配置各主机的 IP 地址及网关,通过 ping 检验各 vlan 之间的通信情况。

      PC1 去 ping 另外两台 PC 。

      另外两台 PC 的通信 。

 

2.9 ACL 单向 ping 

实验要求:

      (1)配好设备 IP 后,先相互 ping,能 ping 通;

      (1)设置 ACL,使得:

            1. 所有设备能 ping 通 PC3,即 PC3 能对所有 ping 请求作响应;

            2. PC3 不能 ping 其他设备。

      对交换机进行设置,将交换机与路由器相连的接口设置为 trunk 模式。

Switch>enable
Switch#conf t
Switch(config)#int fa0/3
Switch(config-if)#switchport mode trunk

      对路由器进行设置。

Router>enable
Router#conf t
Router(config)#int fa0/0
Router(config-if)#ip add 10.0.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int fa1/0
Router(config-if)#ip add 20.0.0.1 255.255.255.0
Router(config-if)#no shut

      上述配置完成后给各台 PC 分配 IP,并设置它们的网关,然后验证它们之间的通信。这里的通信比较简单,自行去验证。

      ping 的动作总共分为两部分,一是源主机将数据包发送给目标主机,二是目标主机收到数据包后给源主机响应。由于 PC3 不能 ping 通其他 PC,而其他 PC 能够 ping 通 PC3,说明 PC3 能给其他所以 PC 响应,为了简化 ACL 配置,这里以 PC3 为源主机,允许它的所有 icmp 的响应,其他的 icmp 被限制,由于 PC3 为源主机,则数据包是经过路由器的 fa1/0 进入网络的,下面是 ACL 规则的配置。

Router(config)#access-list 101 permit icmp 20.0.0.0 0.0.0.255 any echo-reply
Router(config)#access-list 101 deny icmp 20.0.0.0 0.0.0.255 any
Router(config)#access-list 101 permit ip any any
Router(config)#int fa1/0
Router(config-if)#ip access-group 101 in

      对结果进行验证,用 PC3 去 ping 其他两台 PC 。

      其他两台 PC 去 ping 主机 PC3 。

 

2.10 ACL 控制 VLAN 之间的访问 

实验要求:

      (1)开启三层交换机路由功能,PC1,PC2,PC3,PC4 和 server 分别在 vlan10,vlan20,vlan30,vlan40 和 vlan50;

      (2)查看路由表,确实各 VLAN 之间可以互通;

      (3)设置访问控制列表,使 VLAN 10 和 VLAN 20 之间不可以相互访问,VLAN 30 和 VLAN 40 与服务器所在的 VLAN 50 不可以相互访问;

      (4)其余所有的访问都是允许的。

      1、划分 VLAN,并将各接口分配至 VLAN 中。

Switch>enable
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#vlan 30
Switch(config-vlan)#exit
Switch(config)#vlan 40
Switch(config-vlan)#exit
Switch(config)#vlan 50
Switch(config-vlan)#exit
Switch(config)#int fa0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int fa0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int fa0/3
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 30
Switch(config-if)#exit
Switch(config)#int fa0/4
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 40
Switch(config-if)#exit
Switch(config)#int fa0/5
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 50
Switch(config-if)#exit

      2、开启交换机路由功能,并给各虚拟 VLAN 接口配置 IP 地址,此接口和地址将成为 vlan 中主机的网关。

Switch(config)#int vlan 10
Switch(config-if)#ip add 10.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20
Switch(config-if)#ip add 20.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 30
Switch(config-if)#ip add 30.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 40
Switch(config-if)#ip add 40.0.0.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 50
Switch(config-if)#ip add 50.0.0.1 255.255.255.0
Switch(config-if)#exit

      3、配置 vlan 10 与 vlan 20 不能相互访问的控制列表,并应用。

Switch(config)#access-list 1 deny 20.0.0.0 0.0.0.255
Switch(config)#access-list 1 permit any
Switch(config)#int vlan 10 
Switch(config-if)#ip access-group 1 out
Switch(config-if)#exit
Switch(config)#access-list 2 deny 10.0.0.0 0.0.0.255
Switch(config)#access-list 2 permit any
Switch(config)#int vlan 20
Switch(config-if)#ip access-group 2 out
Switch(config-if)#exit

      4、验证设置 ACL 后 vlan 10 与 vlan 20 之间的通信,结果表明设置的 ACL 已经生效,vlan 10 与 vlan 20之间不能相互访问 。

      5、配置 vlan 30 和 vlan 40 与 vlan 50 不能相互访问的控制列表,并应用。

Switch(config)#access-list 3 deny 50.0.0.0 0.0.0.255
Switch(config)#access-list 3 permit any
Switch(config)#int vlan 30
Switch(config-if)#ip access-group 3 out
Switch(config-if)#exit
Switch(config)#int vlan 40
Switch(config-if)#ip access-group 3 out
Switch(config-if)#exit
Switch(config)#access-list 4 deny 30.0.0.0 0.0.0.255
Switch(config)#access-list 4 deny 40.0.0.0 0.0.0.255
Switch(config)#access-list 4 permit any
Switch(config)#int vlan 50
Switch(config-if)#ip access-group 4 out

      6、验证设置 AC L后 vlan 30 和 vlan 40 与 vlan 50 之间的通信,结果表明设置的 ACL 已经生效,vlan 30 和 vlan 40 与 vlan 50 之间不能相互访问。这里以 vlan 50 去访问 vlan 30 与 vlan 40为例,其他的通信情况自行测试 。

 

2.11 ACL 综合练习 

实验要求:

      (1)PC1 和 PC2 在 10.0.0.0 网段,server 在 20.0.0.0 网段,PC3 在 30.0.0.0 网段。在服务器 server 开启 HTTP 和 FTP 功能,设置 FTP 登录用户名、密码和访问权限;

      (2)10.0.0.0 网段可以访问 server 的 FTP,其他访问均被拒绝;

      (3)PC3 可以访问 server 的 HTTP,但不可以访问 server 的 FTP;

      (4)服务器 server 可以 ping 通所有设备,但所有设备不可以 ping 服务器 sever。

      对交换机进行配置。

Switch>enable
Switch#conf t
Switch(config)#int fa0/3
Switch(config-if)#switchport mode trunk

      对路由器进行配置,设置各台 PC 的网关及其掩码。

Router>enable
Router#conf t
Router(config)#int gig0/0 
Router(config-if)#ip add 10.0.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int gig0/1
Router(config-if)#ip add 30.0.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#int gig0/2
Router(config-if)#ip add 20.0.0.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit

      配置访问控制列表,并应用。

Router(config)#access-list 101 permit tcp 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 20
Router(config)#access-list 101 permit tcp 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 21
Router(config)#access-list 101 permit tcp 30.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 80
Router(config)#access-list 101 permit icmp any 20.0.0.0 0.0.0.255 echo-reply
Router(config)#access-list 101 deny icmp any 20.0.0.0 0.0.0.255
Router(config)#int gig0/2
Router(config-if)#ip access-group 101 out

      给所有 PC 和 server 分配 IP,并设置其网关,对 server 进行设置,开启 FTP 并添加用户,FTP 的设置可以参考前面的配置。验证 10.0.0.0 网段可以访问 server 的 FTP,其他访问被拒绝是否生效。由结果可以看出配置已经成功 。

      验证 PC 可以访问 server 的 HTTP,但不能访问 server 的 FTP 是否生效,结果表明 ACL 配置已经成功 。

      验证 server 可以 ping 通所有设备,所有设备不能 ping 通 server:

      server 去 ping 其他网段的 PC ;

      10.0.0.0 网段的 PC ping server ;

      30.0.0.0 网段的 PC ping server 。

      上述结果表明,已经达到实验要求。

      对 ACL 设置的小结:在应用 ACL 的时候,大部分同学可能会在判断是进入接口还在出接口的地方感到疑惑,解决这个问题最好的办法就是去看自己写的 ACL 规则,ACL 规则里面都有源主机地址,不论是标准还是扩展,都会写上源地址,那么从源地址出发到目标主机,看它经过的设备,这样能够一目了然看出应该应用在接口的出还是进。

 

posted @ 2018-12-23 11:29  Chenjin2018  阅读(15739)  评论(0编辑  收藏  举报