• 路由与交换--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 规则里面都有源主机地址,不论是标准还是扩展,都会写上源地址,那么从源地址出发到目标主机,看它经过的设备,这样能够一目了然看出应该应用在接口的出还是进。

  • 相关阅读:
    java-selenium三种等待方式
    java-selenium八种元素定位方式
    java-selenium浏览器常用操作命令
    ELK日志分析平台搭建全过程
    详解Oracle架构、原理、进程
    Oracle建立约束、删除约束
    OGG基础知识整理
    由浅入深解读Redis高级能力及性能调优
    《收获,不止Oracle》读书笔记
    转:一条sql语句在mysql中是如何执行的
  • 原文地址:https://www.cnblogs.com/chenjin2018/p/10163712.html
走看看 - 开发者的网上家园