无需挂起路由器即可编辑 Cisco IOS ACL

网络工程 思科 路由器 思科-ios 故障排除 ACL
2021-07-02 23:56:49

我有一个 Cisco 路由器 1941 系列,我想对路由器上的访问列表进行一些更改。我知道我将不得不删除列表中的一个,然后重新添加所有内容,包括我的其他内容,同时在结尾处声明拒绝的内容。在删除时,它进行得很顺利,但在添加时,它在第一条语句之后挂起。每当我尝试立即粘贴代码时,它也会挂起。

我尝试将文件复制到 tftp,进行一些编辑,然后将其带回,我在证书签名方面遇到了一些错误,并提出了一些投诉。我该如何解决 ACL 的问题?

[编辑]

目前,这就是我所拥有的,

interface GigabitEthernet0/0
 description ### WAN INTERFACE ###
 ip address xxx.xxx.xxx.xxx 255.xxx.xxx.xxx
 ip flow ingress
 ip nat outside
 ip virtual-reassembly
 duplex full
 speed 100
 no cdp enable
!
interface GigabitEthernet0/1
 description ### LAN INTERFACE ###
 no ip address
 ip flow ingress
 ip virtual-reassembly
 duplex auto
 speed auto
!
interface GigabitEthernet0/1.1
 description ### 1st FLR NETWORK ###
 encapsulation dot1Q 1 native
 ip address 192.168.1.1 255.255.255.0
 ip access-group 110 in
 ip accounting output-packets
 ip flow ingress
 ip nat inside
 ip virtual-reassembly
!
interface GigabitEthernet0/1.2
 description ### GROUND FLR NETWORK ###
 encapsulation dot1Q 2
 ip address 192.168.2.1 255.255.255.0
 ip access-group 110 in
 ip accounting output-packets
 ip flow ingress
 ip nat inside
 ip virtual-reassembly
!
ip forward-protocol nd
!
ip http server
ip http access-class 23
ip http authentication local
ip http secure-server
ip http timeout-policy idle 60 life 86400 requests 10000
ip flow-export source GigabitEthernet0/1
ip flow-export version 9
ip flow-export destination 192.168.1.120 9996
ip flow-top-talkers
 top 10
 sort-by bytes
!
ip nat source static 192.168.1.19 interface Loopback100
ip nat inside source list NAT interface GigabitEthernet0/0 overload
ip route 0.0.0.0 0.0.0.0 xxx.vvv.vvv.vvv
!
ip access-list standard NAT
 permit 192.168.1.0 0.0.0.255
 permit 192.168.2.0 0.0.0.255
!
access-list 110 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
access-list 110 permit ip host 192.168.2.44 192.168.1.0 0.0.0.255
access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.18
access-list 110 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
access-list 110 deny   ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 110 permit udp any any
access-list 110 permit ip any any

我想添加额外的……像这样……

access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.120
access-list 110 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.222
access-list 110 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
3个回答

您的路由器挂起的原因是您正在通过应用它的同一接口编辑 ACL。通常发生的事情是你不小心挡住了自己。

请注意,我在此答案的底部提出了重新组织 ACL 的建议,尽管大多数人会对第一部分(更改 ACL 的最简单方法)感兴趣。


更改 Cisco IOS ACL 的最简单方法

较新的 Cisco IOS 映像(例如 Cisco 1941 上的映像)支持IP 访问列表行编号,这意味着您可以修改 ACL 而不将其删除...

我将使用原始 ACL 110 的示例,尽管正如我提到的,您确实应该考虑将 ACL 重新组织为两个不同的 ACL。

第 1 步,ACL 110 已经在路由器上

LAB_RTR#sh access-list 110
Extended IP access list 110
    10 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
    20 permit ip host 192.168.2.44 192.168.1.0 0.0.0.255
    30 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.18
    40 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
    50 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
    60 permit udp any any
    70 permit ip any any

记下 Cisco 自动添加到 ACL 110 的行号。请记住,由于拒绝语句,您需要在第 50 行之前添加 ACL 条目。

步骤 2,使用新条目修改 ACL 110,从第 40 行开始

LAB_RTR#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
LAB_RTR(config)#ip access-list extended 110
LAB_RTR(config-ext-nacl)#41 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.120
LAB_RTR(config-ext-nacl)#42 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
LAB_RTR(config-ext-nacl)#43 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.222
LAB_RTR(config-ext-nacl)#44 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
LAB_RTR(config-ext-nacl)#end
LAB_RTR#
LAB_RTR#
LAB_RTR#
LAB_RTR#sh access-list 110
Extended IP access list 110
    10 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
    20 permit ip host 192.168.2.44 192.168.1.0 0.0.0.255
    30 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.18
    40 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
    41 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.120
    42 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
    43 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.222
    44 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
    50 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
    60 permit udp any any
    70 permit ip any any
LAB_RTR#

第 3 步,自动重新编号 ACL

自动行号很好,因为 Cisco 还为您提供了一种重新编号配置的方法...

LAB_RTR#conf t
LAB_RTR(config)#! Renumber ACL 110, from line 10... increment in steps of 10
LAB_RTR(config)#ip access-list resequence 110 10 10
LAB_RTR(config)#end
LAB_RTR#

LAB_RTR#sh access-list 110
Extended IP access list 110
    10 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
    20 permit ip host 192.168.2.44 192.168.1.0 0.0.0.255
    30 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.18
    40 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
    50 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.120
    60 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
    70 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.222
    80 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
    90 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
    100 permit udp any any
    110 permit ip any any
LAB_RTR#

更改 Cisco IOS ACL 的原始方法

最初,更改 ACL 的最安全方法是将其从有问题的接口中删除(如果您通过应用它的同一接口更改 ACL,这可以防止出现问题)。

如果您的 IOS 不支持IP 访问列表行编号,请使用此技术

interface GigabitEthernet0/1.1
 no ip access-group 110 in
!
interface GigabitEthernet0/1.2
 no ip access-group 110 in

现在您可以添加新的 ACL 行,但在其他允许任何条目之前执行此操作...

! Reset the ACL
no access-list 110
!
access-list 110 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
access-list 110 permit ip host 192.168.2.44 192.168.1.0 0.0.0.255
access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.18
access-list 110 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
!! New ACL lines before the deny statement
access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.120
access-list 110 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
access-list 110 permit ip 192.168.2.0 0.0.0.255 host 192.168.1.222
access-list 110 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
!! Deny statement
access-list 110 deny   ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 110 permit udp any any
access-list 110 permit ip any any

最后,将ACL重新应用到交换机...

interface GigabitEthernet0/1.1
 ip access-group 110 in
!
interface GigabitEthernet0/1.2
 ip access-group 110 in

ACL重组

您真的应该考虑对 Gigabit0/1.1 和 GigabitEthernet0/1.2 使用两个不同的 ACL ……这是对您尝试做的事情的猜测,但不清楚我是否正确解释了事情……

access-list 111 permit ip 192.168.1.0 0.0.0.255 host 192.168.2.44
access-list 111 permit ip host 192.168.1.18 192.168.2.0 0.0.0.255
access-list 111 permit ip host 192.168.1.120 192.168.2.0 0.0.0.255
access-list 111 permit ip host 192.168.1.222 192.168.2.0 0.0.0.255
access-list 111 deny   ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 111 permit udp any any
access-list 111 permit ip any any
!
interface GigabitEthernet0/1.1
 no ip access-group 110 in
 ip access-group 111 in
!
interface GigabitEthernet0/1.2
 no ip access-group 110 in

它可能会挂起,因为在粘贴“第一条语句生效,随后的隐式拒绝语句可能会导致您立即出现访问问题”。

创建 IP 访问列表的有用提示¹

•在将其应用于接口之前创建访问列表。应用了空访问列表的接口允许所有流量。

•在应用之前配置访问列表的另一个原因是,如果您将不存在的访问列表应用于接口,然后继续配置访问列表,则第一个语句生效,随后的隐式拒绝语句可能会导致您即时访问问题。

¹来源思科

ACL 应在实施后调整以节​​省处理器周期。路由器必须处理 ACL 的每一行,直到它匹配其中一个条件,否则将始终匹配所有 ACLS 末尾的隐式“拒绝任何”。使用 show 命令查看每个 ACL 语句的命中率。对语句重新排序,以便在 ACL 中命中最多的行位于更高的位置。使用记事本重写您的 ACL。