admin 管理员组文章数量: 887021
2024年2月19日发(作者:哔哩哔哩下载电脑版官方)
使用show ip route查看某个指定网段的所有内容
show ip route可以说是网络工程师最常用的命令之一,对于查看路由指向、诊断网络问题很有帮助。对于一个大型网络,常常有成百数千条路由,如何才能找到自己需要的路由条目是一件很头疼的事情。
为了解决这个办法,我们常用show ip route | include +网络前缀 的方法来找到匹配的条目。
1. 10.0.0.0/24 is subnetted, 11 subnets
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
3. O 10.2.1.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
4. O 10.1.2.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
5. O 10.2.2.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
6. C 10.1.1.0 is directly connected, Ethernet0/0
7. O 10.3.2.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
8. O 10.2.3.0 [110/20] via 10.1.1.1, 00:13:28, Ethernet0/0
9. O 10.4.2.0 [110/20] via 10.1.1.1, 00:13:30, Ethernet0/0
10. O 10.1.4.0 [110/20] via 10.1.1.1, 00:13:30, Ethernet0/0
11. C 10.1.30.0 is directly connected, Ethernet0/0
12. C 10.1.20.0 is directly connected, Ethernet0/0
13. O 192.168.1.0/24 [110/20] via 10.1.1.1, 00:13:30, Ethernet0/0
14. C 192.168.2.0/24 is directly connected, Ethernet0/0
例如,在上面这张路由表中,我们可以用show ip route | i 192.168.1 很轻易地找到以192.168.1开头的所有条目。
1. R2#show ip route | i 192.168.1
2. O 192.168.1.0/24 [110/20] via 10.1.1.1, 00:15:46, Ethernet0/0
但是对于目的地址也包含我们所需查找的网段时,这条命令就不这么好用了。
例如查找以10.1开头的所有网段:
1. R2#show ip route | i 10.1
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
3. O 10.2.1.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
4. O 10.1.2.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
5. O 10.2.2.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
6. C 10.1.1.0 is directly connected, Ethernet0/0
7. O 10.3.2.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
8. O 10.2.3.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
9. O 10.4.2.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
10. O 10.1.4.0 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
11. C 10.1.30.0 is directly connected, Ethernet0/0
12. C 10.1.20.0 is directly connected, Ethernet0/0
13. O 192.168.1.0/24 [110/20] via 10.1.1.1, 00:18:32, Ethernet0/0
由于大部分路由的目的地址都是10.1.1.1,所以结果中包含了很多条我们不需要的路由。
在这种情况下我们可以使用show ip route的longer-prefixes参数来匹配我们的网段:show ip
route 10.1.0.0 255.255.0.0 longer-prefixes
1. 10.0.0.0/24 is subnetted, 11 subnets
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:21:16, Ethernet0/0
3. O 10.1.2.0 [110/20] via 10.1.1.1, 00:21:16, Ethernet0/0
4. C 10.1.1.0 is directly connected, Ethernet0/0
5. O 10.1.4.0 [110/20] via 10.1.1.1, 00:21:16, Ethernet0/0
6. C 10.1.30.0 is directly connected, Ethernet0/0
7. C 10.1.20.0 is directly connected, Ethernet0/0
结果显示出了10.1.0.0/16及其子网的所有路由条目,符合我们的要求。
当然我们也可利用show ip route list + 访问控制列表(ACL) 的方法来实现网段的匹配。
1. R2(config)#access-list 1 per 10.1.0.0 0.0.255.255
2. R2#sh ip route list 1
3. O 10.1.3.0 [110/20] via 10.1.1.1, 00:35:15, Ethernet0/0
4. O 10.1.2.0 [110/20] via 10.1.1.1, 00:35:15, Ethernet0/0
5. C 10.1.1.0 is directly connected, Ethernet0/0
6. O 10.1.4.0 [110/20] via 10.1.1.1, 00:35:15, Ethernet0/0
7. C 10.1.30.0 is directly connected, Ethernet0/0
8. C 10.1.20.0 is directly connected, Ethernet0/0
使用ACL,我们可以实现多个网段的匹配。但是在工作环境中,仅仅为了查看路由表就在客户的机器上添加ACL也不太好,万一看完忘记删,或者改写了已有的ACL,也是一件很麻烦的事情。
终极方法:正则表达式
正则表达式可以说是字符匹配的终极工具,思科的管道符“|”命令也支持正则表达式。下面将介绍如何使用正则表达式来匹配路由条目。
1. 10.0.0.0/24 is subnetted, 11 subnets
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
3. O 10.2.1.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
4. O 10.1.2.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
5. O 10.2.2.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
6. C 10.1.1.0 is directly connected, Ethernet0/0
7. O 10.3.2.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
8. O 10.2.3.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
9. O 10.4.2.0 [110/20] via 10.1.1.1, 00:42:53, Ethernet0/0
10. O 10.1.4.0 [110/20] via 10.1.1.1, 00:42:55, Ethernet0/0
11. C 10.1.30.0 is directly connected, Ethernet0/0
12. C 10.1.20.0 is directly connected, Ethernet0/0
13. O 192.168.1.0/24 [110/20] via 10.1.1.1, 00:42:55, Ethernet0/0
14. C 192.168.2.0/24 is directly connected, Ethernet0/0
仔细观察这张路由表,我们发现所有路由条目之前都至少有两个空格,我们就利用这个特点进行匹配。在正则表达式中我们可以利用“_”来匹配空格。
例如,匹配10.1网段,我们可以使用如下命令:show ip route | i __10.1.
1. R2#sh ip route | i __10.1.
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:46:29, Ethernet0/0
3. O 10.1.2.0 [110/20] via 10.1.1.1, 00:46:29, Ethernet0/0
4. C 10.1.1.0 is directly connected, Ethernet0/0
5. O 10.1.4.0 [110/20] via 10.1.1.1, 00:46:29, Ethernet0/0
6. C 10.1.30.0 is directly connected, Ethernet0/0
7. C 10.1.20.0 is directly connected, Ethernet0/0
由于“.”在正则表达式中是有特殊含义的(代表任意单个字符),我们必须用转义符“”,让系统认为这是一个普通字符,否则会导致匹配不精确。
我们还可以利用正则表达式实现多个网段的匹配,例如同时匹配10.1和10.2网段:show ip route
| i __10.(1|2).
1. R2#sh ip route | i __10.(1|2).
2. O 10.1.3.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
3. O 10.2.1.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
4. O 10.1.2.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
5. O 10.2.2.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
6. C 10.1.1.0 is directly connected, Ethernet0/0
7. O 10.2.3.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
8. O 10.1.4.0 [110/20] via 10.1.1.1, 00:01:02, Ethernet0/0
9. C 10.1.30.0 is directly connected, Ethernet0/0
10. C 10.1.20.0 is directly connected, Ethernet0/0
以上只是正则表达式的一些简单应用,本人也只是正则表达式的初学者,要更加系统地了解cisco的正则表达式书写方法,请参阅:/en/US/docs/ios/12_2/termserv/configuration/guide/tcfaapre_ps1835_TSD_Products_Configuration_Guide_
当然,正则表达式也是有局限性的(例如根据掩码长度匹配较难)。
版权声明:本文标题:show ip route 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708275555h518463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论