访问列表(access list,ACL)的主要作用是过滤你不想要的数据包.设置 ACL 的一些规则: 1.按顺序的比较,先比较第一行,再比较第二行..直到最后 1 行 2.从第一行起,直到找到 1 个符合条件的行;符合以后,其余的行就不再继续比较下去 3.默认在每个 ACL 中最后 1 行
访问列表(access list,ACL)的主要作用是过滤你不想要的数据包.设置 ACL 的一些规则:
1.按顺序的比较,先比较第一行,再比较第二行..直到最后 1 行
2.从第一行起,直到找到 1 个符合条件的行;符合以后,其余的行就不再继续比较下去
3.默认在每个 ACL 中最后 1 行为隐含的拒绝(deny),如果之前没找到 1 条许可(permit)语句,意
味着包将被丢弃.所以每个 ACL 必须至少要有 1 行 permit 语句,除非你想想所有数据包丢弃
2 种主要的访问列表:
1.标准访问列表(standard access lists):只使用源 IP 地址来做过滤决定
2.扩展访问列表(extended access lists):它比较源 IP 地址和目标 IP 地址,层 3 的协议字段,层 4
端口号来做过滤决定
利用 ACL 来过滤,必须把 ACL 应用到需要过滤的那个 router 的接口上,否则 ACL 是不会起到
过滤作用的.而且你还要定义过滤的方向,比如是是想过滤从 Internet 到你企业网的数据包呢
还是想过滤从企业网传出到 Internet 的数据包呢?方向分为下面 2 种:
1.inbound ACL:先处理,再路由
2.outbound ACL:先路由,再处理
一些设置 ACL 的要点:
1.每个接口,每个方向,每种协议,你只能设置 1 个 ACL
2.组织好你的 ACL 的顺序,比如测试性的最好放在 ACL 的最顶部
3.你不可能从 ACL 从除去 1 行,除去 1 行意味你将除去整个 ACL,命名访问列表(named access
lists)例外(稍后介绍命名访问列表)
4.默认 ACL 结尾语句是 deny any,所以你要记住的是在 ACL 里至少要有 1 条 permit 语句
5.记得创建了 ACL 后要把它应用在需要过滤的接口上
6.ACL 是用于过滤经过 router 的数据包,它并不会过滤 router 本身所产生的数据包
7.尽可能的把 IP 标准 ACL 放置在离目标地址近的地方;尽可能的把 IP 扩展 ACL 放置在离源
地址近的地方
Standard Access Lists
介绍 ACL 设置之前先介绍下通配符掩码(wildcard masking).它是由 0 和 255 的 4 个 8 位位组
组成的.0 代表必须精确匹配,255 代表随意,比如:172.16.30.0 0.0.0.255,这个告诉 router 前 3 位
的 8 位位组必须精确匹配,后 1 位 8 位位组的值可以为任意值.如果你想指定 172.16.8.0 到
172.16.15.0,则通配符掩码为 0.0.7.255(15-8=7)
配置 IP 标准 ACL,在特权模式下使用 access-lists [ACL 号] [permit/deny] [any/host]命令.ACL
号为 1 到 99 和 1300 到 1999;permit/deny 分别为允许和拒绝;any 为任何主机,host 为具体某个
主机(需要跟上 IP 地址)或某 1 段
我们来看 1 个设置 IP 标准 ACL 的实例:
如图,router 有 3 个 LAN 的连接 1 个 Internet 的连接.现在,销售部的用户不允许访问金融部的
用户,但是允许他们访问市场部和 Internet 连接.配置如下:
Router(config)#access-list 10 deny 172.16.40.0 0.0.0.255
Router(config)#access-list 10 permit any
注意隐含的 deny any,所以末尾这里我们要加上 permit any,any 等同于 0.0.0.0 255.255.255.255.
接下来把 ACL 应用在接口上,之前说过了尽可能的把 IP 标准 ACL 放置在离目标地址近的地
方,所以使用 ip access-group 命令把 ACL 10 放在 E1 接口,方向为出,即 out.如下:
Router(config)#int e1
Router(config-if)#ip access-group 10 out
Controlling VTY(Telnet) Access
使用 IP 标准 ACL 来控制 VTY 线路的访问.配置步骤如下:
1.创建个 IP 标准 ACL 来允许某些主机可以 telnet
2.使用 access-class 命令来应用 ACL 到 VTY 线路上
实例如下:
Router(config)#access-list 50 permit 172.16.10.3
Router(config)#line vty 0 4
Router(config-line)#access-class 50 in
如上,进入 VTY 线路模式,应用 ACL,方向为进来,即 in.因为默认隐含的 deny any,所以上面的
例子,只允许 IP 地址为 172.16.10.3 的主机 telnet 到 router 上
Extended Access Lists
扩展 ACL:命令是 access-list [ACL 号] [permit/deny] [协议] [源地址] [目标地址] [操作符] [端
口] [log].ACL 号的范围是 100 到 199 和 2000 到 2699;协议为 TCP,UDP 等,操作符号有 eq(表
等于),gt(大于),lt(小于)和 neq(非等于)等等;log 为可选,表示符合这个 ACL,就记录下这些日志
来看 1 个配置扩展 ACL 的实例:
假如要拒 telnet 和 FTP 到绝位于金融部的主机 172.16.30.5,配置如下:
Router(config)#access-list 110 deny tcp any host 172.16.30.5 eq 21
Router(config)#access-list 110 deny tcp any host 172.16.30.5 eq 23
Router(config)#access-list 110 permit ip any any
记住默认隐含的 deny all.应用到 E1 接口,注意方向为 out,如下:
Router(config)#int e1
Router(config-if)#ip access-group 110 out
Named Access Lists
命名访问列表是创建标准和扩展访问列表的另外 1 种方法.它允许你使用命名的方法来创建
和应用标准或者扩展访问列表.使用 ip access-list 命令来创建,如下:
Router(config)#ip access-list ?
extended Extended Acc
logging Control access list logging
standard Standard Access List
Router(config)#ip access-list standard ?
<1-99> Standard IP access-list number
WORD Access-list name
Router(config)#ip access-list standard BlockSales
Router(config-std-nacl)#?
Standard Access List configuration commands:
default Set a command to its defaults
deny Specify packets to reject
exit Exit from access-list configuration mode
no Negate a command or set its default
permit Specify packets to forward
Router(config-std-nacl)#deny 172.16.40.0 0.0.0.255
Router(config-std-nacl)#permit any
Router(config-std-nacl)#exit
Router(config)#^Z
Router#sh run
(略)
!
ip access-list standard BlockSales
deny 172.16.40.0 0.0.0.255
permit any
!
(略)
接下来应用到接口上,如下:
Router(config)#int 1
Router(config-if)#ip access-group BlockSales out
Router(config-if)#^Z
Router#
Monitoring Access Lists
一些验证 ACL 的命令,如下:
1.show access-list:显示 router 上配置了的所有的 ACL 信息,但是不显示哪个接口应用了哪
个 ACL 的信息
2.show access-list [number]:显示具体第几号 ACL 信息,也不显示哪个接口应用了这个 ACL
3.show ip access-list:只显示 IP 访问列表信息
4.show ip interface:显示所有接口的信息和配置的 ACL 信息
5.show ip interface [接口号]:显示具体某个接口的信息和配置的 ACL 信息
6.show running-config:显示 DRAM 信息和 ACL 信息,以及接口对 ACL 的应用信息
NetWork • 评论 (0) • 引用 (0)
Chapter9 Managing a Cisco Internetwork-->Chapter9 Managing a Cisco Internetwork
kenshin | 08 五月, 2007 14:15
Chapter9 Managing a Cisco Internetwork
The Internal Components of a Cisco Router
Cisco Router 的一些组件:
bootstrap:存储在 ROM 中的微码(microcode)中,用来在初始化的时候启动 router,然后加载 IOS
POST:存储在 ROM 中的微码中,用来检查硬件基本配置是否正常,然后决定哪些接口可用
ROM monitor:存储在 ROM 中的微码中,作用是测试和排疑等
Mini-IOS:Cisco 叫它 RXBOOT 或 bootloader,它是存储在 ROM 中的,IOS 的简化版本,用来把
IOS 加载到闪存中
RAM(random-access memory):用来保存数据包缓存,ARP 缓存,路由表,和 running-config 配置
文件.某些 router 上,IOS 可以从 RAM 中运行
ROM(read-only memory):用来启动和维持 router 正常化
Flash memory(闪存):用来存放 IOS,当 router 重新启动的时候闪存是不会被擦除的,由 Intel 创
造的 EEPROM
NVRAM(nonvolatile RAM):存储 startup-config 配置文件,当 router 重新启动的后,这些文件是
不会被擦除的
configuration register:用来控制 router 如何启动,这个值可以使用 show version 来查看,一般为
0x2102(16 进制),含义是告诉 router 从闪存里加载 IOS 和从 NVRAM 里加载配置文件
The Router Boot Sequence
启动序列用来测试硬件和加载所必需的软件,包括以下几个步骤:
1.先进行 POST,测试硬件
2.bootstrap 查找和加载 IOS
3.IOS 在 NVRAM 中查找有效的 startup-comfig 配置文件
4.如果在 NVRAM 里查找到了这个配置文件,router 就可操作;如果文件不存在,router 进到
setup 模式
Managing Configuration Registers
Cisco 的 router 有 1 个存储在 NVRAM 中的,16 位长的 configuration register.默认这个值 0x2102
设置成从闪存中加载 IOS 和从 NVRAM 中查找启动配置文件
Understanding the Configuration Register Bits
一些常见的位的含义:
1.第 0 到 3 位:启动字段
2.第 6 位:忽略 NVRAM 内容
3.第 8 位:禁用 BREAK
启动字段(00 到 03):
1.设置成 00:ROM monitor 模式,进入到这个模式,configuration register 的值设置成 2100.然后
要启动 router 的话需要手动在命令行提示符 rommon>下输入 b(感觉有点类似 Solaris 的
OpenBoot 哈哈)
2.设置成 01:从 ROM 中的镜象启动,把 configuration register 的值设置成 2101,提示符为
router(boot)>
3.设置成 02 到 0F:定义默认启动文件名,在 NVRAM 中查找
Checking the Current Configuration Register Value
使用 show version 命令可以查看当前 configuration register 的值,在输出的最下部分.这个命令
将会显示硬件的配置信息,软件版本,配置文件信息,启动镜象等
Changing the Configuration Register
可以通过修改 configuration register 的值来决定 router 的启动和运行方式.在全局配置模式下
使用 config-register 的命令.修改值为 0x101,注意输出内容,如下:
Router(config)#config-register 0x101
Router(config)#^Z
Router#sh ver
(略)
Configuration register is 0x2102 (will be 0x0101 at next reload)
注意修改后的值和当前值,修改后的值只在重新启动后生效
Recovering Passwords
如果你把密码忘记了怎么办?之前提到过,位 6 可以忽略掉 NVRAM 里的储存的启动配置文件
的内容,默认是 0x2102,所以我们把值修改成 0x2142,就可以达到忽略 NVRAM 这个效果.下面
是密码恢复的主要几个步骤:
1.在启动 router 的时候使用 BREAK 中断启动
2.把 configuration register 的值设置成 0x2142
3.重新启动
4.进入特权模式
5.把 startup-config 文件复制到 running-config 文件中
6.修改密码
7.把 configuration register 的值还原为 0x2102
8.保存配置
9.重新启动
具体的修改,2500 系列和 2600 系列有一点不一样,我们先来看 2600 系列的修改实例,使用
Ctrl+BREAK 中断启动.注意提示 monitor: command “boot” aborted due to user interrupt.
如下:
System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE (fc1)
(略)
PC = 0xfff0a530, Vector = 0x500, SP = 0x80004374
monitor: command “boot” aborted due to user interrupt
rommon 1 >confreg 0x2142
You must reset or power cycle for new config to take effect
提示重新启动,如下:
rommon 1>reset
重新启动后,进入特权模式,把 startup-config 复制到 running-config 中,并修改密码.如下:
Router#copy start run
Router#conf t
Router(config)#enable secret noko
把 configuration register 的值还原,并保存,如下:
Router(config)#config-register 0x2102
Router(config)#^Z
Router#copy run start
2500 系列下的修改,在启动时输入 o 中断启动,再用 o/r 修改 configuration register 的值,如下:
System Bootstrap, Version 11.0(10c), SOFTWARE
(略)
Abort at 0x1098FEC (PC)
>o
(略)
>0x2142
重新启动,输入 I,如下:
>I
接下来的步骤和 2600 系列一样,如下:
Router#copy start run
Router#conf t
Router(config)#enable secret noko
把 configuration register 的值还原,并保存,如下:
Router(config)#config-register 0x2102
Router(config)#^Z
Router#copy run start
Backing Up and Restoring the Cisco IOS
把 IOS 备份到 TFTP 服务器前的准备工作:
1.确认你可以访问 TFTP 服务器
2.确认 TFTP 服务器是否有足够空间来保存 IOS 文件
3.确定名称和路径
Verifying Flash Memory
验证闪存信息,使用 show flash 命令,如下:
Router#sh flash
System flash directory:
File Length Name/status
1 8121000 c2500-js-l.112-18.bin
Backing Up the Cisco IOS
把 IOS 备份到 TFTP 服务器上,特权模式下使用 copy flash tftp 命令,记住备份之前最好对服务
器 ping 下看是否是通的
Restoring or Upgrading the Cisco Router IOS
从 TFTP 恢复或者升级 IOS,特权模式下使用 copy tftp flash 命令
Backing Up and Restore the Cisco Configuration
把配置文件备份到 TFTP 服务器,和把 IOS 备份到 TFTP 服务器的命令类似;恢复也是如此:
1.startup-config 文件的备份:copy startup-config tftp
2.startup-config 文件的恢复:copy tftp startup-config
3.running-config 文件的备份:copy running-config tftp
4.running-config 文件的恢复:copy tftp running-config
验证命令为 show running-config 和 show startup-config
Erasing the Configuration
擦除启动配置文件 startup-config 文件,在特权模式下使用 erase startup-config 命令,擦除了以后,
立即重新启动的话,router 将进到 setup 模式
Using Cisco Discovery Protocol(CDP)
Cisco 发现协议(CDP)是 Cisco 私有,帮助用来管理员收集本地相连和远程设备的信息.
Getting CDP Timers and Holdtime Information
之前提到过 CDP 的一些介绍,show cdp 命令提供 2 个信息给你:
1.CDP timer:CDP 包传给每个活跃接口的时间间隔,默认是 60 秒
2.CDP holdtime:某设备从相邻设备收到的包的保持时间,默认是 180 秒
如下:
Router#sh cdp
Global CDP information:
Sending CDP packets every 60 seconds
Sending a holdtime value of 180 seconds
Router#
可以修改默认的时间,分别在全局配置模式下使用 cdp timer 和 cdp holdtime 命令,如下:
Router#conf t
Router(config)#cdp timer 90
Router(config)#cdp holdtime 240
在所有接口上关闭 CDP,在全局配置模式下使用 no cdp run 命令;关闭某个接口的 CDP 使用
no cdp enable 命令.再次打开分别使用 cdp run 和 ccdp enable 命令.如下:
Router(config)#no cdp run
Router(config)#int fa0/1
Router(config-if)#no cdp enable
Gathering Neighbor Information
使用 show cdp neighbour 可以显示直接相连的设备的信息,如下:
Router#sh cdp nei
Capability Codes: R ? Router, T ? Trans Bridge,
B ? Source Route Bridge, S ? Switch, H ? Host,
I ? IGMP, r ? Repeater
Device ID Local Intrfce Holdtime Capability Platform Port ID
1900Switch Eth 0 238 T S 1900 2
2500B Ser 0 138 R 2500 Ser 0
Router#
一些选项的解释如下:
1.Device ID:直接相连的设备的主机名
2.Local Interface:接收 CDP 包的接口
3.Holdtime:某设备从相邻设备收到的包的保持时间,如果过了这个时间仍然没收到新的 CDP
包,就将被丢弃
4.Capability:见输出最顶部信息
5.Platform:Cisco 设备的类型
6.Port ID:相连设备的接受 CDP 包信息的接口
要查看更为详细的 CDP 信息可以使用 show cdp neighbor detail 或 show cdp entry *命令
Gathering Interface Traffic Information
使用 show cdp traffic 命令显示接口 CDP 包流量信息,如下:
Router#sh cdp traffic
CDP counters:
Packets output: 13, Input: 8
Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
No memory: 0, Invalid packet: 0, Fragmented: 0
Router#
Gathering Port and Interface Information
使用 show cdp interface 命令显示接口的 CDP 状态信息
Using Telnet
在特权模式下使用 telnet [IP 地址]的命令进行 telnet,如下:
Router#telnet 172.16.10.2
Trying 172.16.10.2 … Open
Password required, but none set
[Connection to 172.16.10.2 closed by foreign host]
Router#
由上面提示可以看出,VTY 没有密码配置的话是不允许你 telnet 的(除非你使用了 no login 命
令,但是安全性几乎为 0).所以在 telnet 前,记得先给目标设备的 VTY 线路配置密码
Telnetting into Multiple Devices Simultaneously
当你 telnet 到远程设备的时候,可以在任何情况下使用 exit 命令来终止连接.但是假如你想保
持这个连接,同时又对另外 1 个设备进行 telnet 的时候,使用 Ctrl+Shift+6,再按下 X 键,就可以
回到本地 console,再对另外 1 设备进行 telnet.如下:
2500#telnet 172.16.10.2
Trying 172.16.10.2 … Open
User Access Verification
Password:
2600>[Ctrl+Shift+6,X]
2500#telnet 192.168.0.32
(略)
Checking Telnet Connections
查看从本地到远程的连接会话,使用 show sessions 命令,如下:
2500#sh sessions
Conn Host Address Byte Idle Conn Name
1 172.16.10.2 172.16.10.2 0 0 172.16.10.2
*2 192.168.0.32 192.168.0.32 0 0 192.168.0.32
2500#
注意*所在的会话代表你的最后 1 个会话,可以直接敲 2 下 Enter 键回到*号会话,也可以输入
前面的数字,再敲 2 下 Enter 键回到相应会话
Checking Telnet Users
使用 show users 命令列举本地所有活动 console 和 VTY 端口,如下:
2500#sh users
Line User Host(s) Idle Location
* 0 con 0 172.16.10.2 00:07:52
192.168.0.32 00:07:18
注意上面输出的 con 代表本地 console,这个例子可以看到从本地 console 连接了远程的 2 个
设备.接下来在我们远程设备上使用这个命令,如下:
2600>sh users
Line User Host(s) Idle Location
0 con 0 idle 9
*2 vty 0
这个输出内容可以看出 console 是活动的,而且 VTY 端口 2 被使用
Closing Telnet Sessions
之前说过,要终止 telnet 会话,在远程(被 telnet)设备上使用 exit 命令.但是要从本地设备终止会
话的话,就需要在本地使用 disconnect 命令,如下:
2500#disconnect ?
<1-2> The number of an active network connection
WORD The name of an active network connection
2500#disconnect 1
Closing connection to 172.16.10.2 [confirm]
2500#
验证如下:
2600#sh users
Line User Host(s) Idle Location
*0 con 0 idle 0
1 aux 0 idle 0
2 vty 0 idle 172.16.10.1
清除连接,使用 clear line 命令,并验证,如下:
2600#clear line 2
[confirm]
[OK]
2600#sh users
Line User Host(s) Idle Location
*0 con 0 idle 0
1 aux 0 idle 1
2600#
Resolving Hostnames
2 种解析主机名到 IP 地址的办法:
1.在每个 router 上建立主机表(host table)
2.建立 DNS 服务器(Domain Name System server),这个类似动态主机表
Building a Host Table
主机表只提供包含其中的解析,建立主机表的命令是 ip host [主机名] [TCP 端口号] [IP 地址],
默认 TCP 端口号为 23.1 个主机可以对应最多 8 个 IP 地址.如下:
2500(config)#ip host 2501B 172.16.10.2
2500(config)#ip host 1900S 192.168.0.32
2500(config)#^Z
使用 show hosts 命令验证新建的主机表,如下:
2500#sh hosts
Default domain is not set
Name/address lookup uses domain service
Name servers are 255.255.255.255
Host Flags Age Type Address(es)
2501B (perm, OK) 0 IP 172.16.10.2
1900S (perm, OK) 0 IP 192.168.0.32
2500#
注意 Flags 选项的 perm,代表是手动输入的,如果这项是 temp 的话,表明是由 DNS 解析的
Using DNS to Resolve Names
假如你在 CLI 下输入了 1 个 Cisco 设备不能识别的命令,它会默认通过 DNS 来进行解析(它认
为是主机名).这个不好的地方是要花费额外的时间等待 DNS 解析完.可以在全局配置模式下
使用 no ip domain-lookup 命令关闭它
假如你在你的网络里有 DNS 服务器,可以使用 1 些命令使 DNS 解析开始工作:
1.第一条命令是 :ip domain-lookup, 这个命令默认是打开了的. 如果你之前使用了 no ip
domain-lookup 的话,就要用这条命令打开它
2.第二条命令是:ip name-server.设置 DNS 服务器的 IP 地址,可以使 1 个 IP 地址对应多达 6 个
服务器
3.最后条命令是:ip domain-name.虽然这个命令是可选的,但是最好还是设置 1 下
实例如下:
2500(config)#ip domain-lookup
2500(config)#ip name-server 192.168.0.23
2500(config)#ip domain-name noko.com
2500(config)#^Z
2500#
可以使用 ping 命令来严正下,如下:
2500#ping 1900S
Translating “1900S”…domain server (192.168.0.23) [OK]
(略)
使用 show hosts 命令验证下,如下:
2500#sh hosts
Default domain is noko.com
Name/address lookup uses domain service
Name servers are 192.168.023
Host Flags Age Type Address(es)
2501B (perm, OK) 0 IP 172.16.10.2
1900S.noko.com (temp, OK) 0 IP 192.168.0.32
2500#
Checking Network Connectivity
ping 和 traceroute 命令是检查网络连接是否完好的有利工具