0×1.ACL概述
ACL(Access Control List装黑,訪問控制列表)顾孽,是一系列運(yùn)用到路由器接口的指令列表达箍,路由根據(jù)ACL中指定的條件對經(jīng)過路由器接口的數(shù)據(jù)包進(jìn)行檢查剿涮。本篇文章僅討論IP的訪問控制列表主经,針對IP協(xié)議在路由的每個(gè)端口可以創(chuàng)建兩個(gè)ACL:一個(gè)用于過濾進(jìn)入端口的數(shù)據(jù)毕谴,另外一個(gè)用于過濾流出端口的數(shù)據(jù)成畦。
ACL指令的放置順序是很重要的,Cisco的IOS軟件涝开,按照ACL中指令的順序依次檢查數(shù)據(jù)包是否滿足某一個(gè)指令條件循帐,當(dāng)檢測到某個(gè)指令滿足條件時(shí)就執(zhí)行該指令規(guī)定的動(dòng)作,并且不會(huì)再檢測后面的指令條件舀武。
a.ACL的作用
ACL的作用大致分為下面這幾點(diǎn):
限制網(wǎng)絡(luò)流量拄养,提高網(wǎng)絡(luò)性能。提供數(shù)據(jù)流控制银舱。為網(wǎng)絡(luò)訪問提供基本的安全層瘪匿。決定轉(zhuǎn)發(fā)或阻止哪些類型的數(shù)據(jù)流。
b.ACL的工作流程
下圖為ACL的工作流程圖寻馏,當(dāng)路由器的進(jìn)入方向的接口收到一個(gè)分組的時(shí)候棋弥,首先檢查它是否是可路由的,如果不可路由(比如并非是發(fā)往本路由的分組)操软,則直接丟棄嘁锯。
如果可路由,接下來判斷進(jìn)入方向的接口是否配置了ACL聂薪,如果沒有配置進(jìn)入方向的ACL家乘,則直接查詢路由表杂穷,然后根據(jù)路由表中找到的端口準(zhǔn)備往外轉(zhuǎn)發(fā)饿自;如果配置了進(jìn)入方向的ACL則檢查指令組是否允許該分組通過拓挥,不允許則丟棄椭微,允許則查詢路由表忠怖,選擇外出接口準(zhǔn)備往外轉(zhuǎn)發(fā)颅和,從這里可以看出入站的ACL檢查是在查詢路由表之前執(zhí)行的元莫。
外出接口選擇好之后呜师,再檢查外出接口上有沒有配置ACL,如果配置了ACL則檢查ACL指令組是否允許双炕,沒有配置ACL則直接轉(zhuǎn)發(fā)狞悲。
c.通配符掩碼在ACL中的作用
路由器使用通配符掩碼(Wildcard Masking)與源或目標(biāo)地址一起來分辨匹配的地址范圍,在訪問控制列表中算撮,將通配符掩碼中的位設(shè)置成1表示忽略IP地址中對應(yīng)的位生宛,設(shè)置成0表示必須精確匹配IP地址中對應(yīng)的位,下面舉幾個(gè)淺顯易懂的例子:
192.168.1.0 0.0.0.255
這個(gè)例子中钮惠,通配符掩碼是0.0.0.255茅糜,前面24位是0,最后8位是1素挽,也就是前面24位必須精確匹配,最后8位是什么都沒關(guān)系狸驳。將這個(gè)通配符和前面的IP地址192.168.1.0結(jié)合起來意思就是,匹配從192.168.1.0到192.168.1.255的所有IP地址(這和OSPF或EIGRP中的反掩碼是一個(gè)道理)预明。
192.168.0.0 0.0.255.255
匹配的IP地址范圍是192.168.0.0-192.168.255.255。
192.168.16.0 0.0.7.255
這個(gè)例子中耙箍,通配符掩碼的第三個(gè)數(shù)是7撰糠,IP地址的第三位是16,對他們進(jìn)行分解轉(zhuǎn)化成二進(jìn)制辩昆;7 = 00000 11116 = 00010 000前面說過阅酪,通配符掩碼中0的部分必須精確匹配,1的部分什么都可以汁针,也就是說16的二進(jìn)制表示法前面的5位(00010)必須精確匹配术辐,最后3位的取值范圍可以是(000-111),那么就是施无;00010 000-00010 111,轉(zhuǎn)化成十進(jìn)制就是16-23辉词。所以這條規(guī)則匹配的IP地址范圍是"192.168.16.0-192.168.23.255"。
192.168.1.0 0.0.0.254
匹配192.168.1.0中所有偶數(shù)IP地址猾骡。
192.168.1.1 0.0.0.254
匹配192.168.1.0中所有奇數(shù)IP地址瑞躺。
上面這些例子說明了怎么通過規(guī)則中的通配符掩碼確定匹配的IP地址范圍敷搪,如果一個(gè)數(shù)據(jù)包中包含了源IP地址"192.168.0.2"到達(dá)路由器,假設(shè)路由器上的訪問控制列表語句中包含"192.168.0.0 0.0.0.255"幢哨,路由器按照下面的步驟匹配這個(gè)IP地址:
1)使用訪問控制列表中的地址對"192.168.0.0 0.0.0.255"執(zhí)行邏輯或操作(192.168.0.0和0.0.0.255執(zhí)行邏輯或運(yùn)算)赡勘,得到結(jié)果192.168.0.255。 2)用地址對中的通配符掩碼(0.0.0.255)和數(shù)據(jù)包頭中的IP(192.168.0.2)執(zhí)行邏輯或操作捞镰,結(jié)果為192.168.0.255狮含。 3)將得到的兩個(gè)結(jié)果相減,如果結(jié)果是0則匹配曼振,如果結(jié)果非0,則說明不匹配几迄。對接下來的ACL條目都重復(fù)以上三步相同的操作。
在IP訪問控制列表地址掩碼對中冰评,有兩個(gè)關(guān)鍵詞可以用來省略一些輸出:
"any":它可以用來代替地址掩碼對"0.0.0.0 255.255.255.255"映胁,該地址掩碼對匹配任何IP地址。"host":它可以用來代替通配符掩碼"0.0.0.0"甲雅,該通配符掩碼只能匹配一個(gè)IP地址解孙。比如"host 192.168.1.1"等同于地址對"192.168.1.1 0.0.0.0"。在標(biāo)準(zhǔn)的訪問控制列表中抛人,如果僅匹配一個(gè)IP地址弛姜,可以省略關(guān)鍵字host,也就是說在標(biāo)準(zhǔn)訪問控制列表?xiàng)l目中妖枚,沒有通配符掩碼廷臼,說明掩碼是"0.0.0.0";而在擴(kuò)展的訪問控制列表中不能省略host關(guān)鍵字绝页。
0×2.標(biāo)準(zhǔn)ACL配置
這一部分的實(shí)驗(yàn)全部在GNS3中完成荠商,使用的路由ios為c3640。
a.如何配置標(biāo)準(zhǔn)ACL
首先配置下面的拓?fù)洌▓D3)续誉,保證全網(wǎng)可以互通:
1
R1(config)#
int
s 0/0
2
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
3
R1(config-if)#
no
shut
4
R1(config)#
ip
route
0.0.0.0 0.0.0.0 12.1.1.2
5
R1(config)#
end
R2配置:
1
R2(config-if)#
int
s 0/1
2
R2(config-if)#
ip
add
23.1.1.2 255.255.255.0
3
R2(config-if)#
no
shut
4
R2(config-if)#
int
s 0/0
5
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
6
R2(config-if)#
no
shut
7
R2(config-if)#
end
R3配置:
1
R3(config)#
int
s 0/1
2
R3(config-if)#
ip
add
23.1.1.3 255.255.255.0
3
R3(config-if)#
no
shut
4
R3(config-if)#
exit
5
R3(config)#
ip
route
0.0.0.0 0.0.0.0 23.1.1.2
6
R3(config)#
end
完成基本連通性的配置后莱没,下面來創(chuàng)建和應(yīng)用標(biāo)準(zhǔn)的訪問控制列表。
訪問控制列表是在路由器的全局配置模式輸入的酷鸦,增加一條標(biāo)準(zhǔn)的訪問控制列表語法格式如下:
01
Router(config)#
access-list
{ACL的編號} {
deny
|permint} {
source
[
source
-wildcard]|any} log
02
03
/*
04
- 其中大括號里面的類容表示必選饰躲,中括號里面的類容表示可選,
05
06
- {ACL的編號}:
07
- 標(biāo)準(zhǔn)ACL的編號范圍是1-99之間的整數(shù)臼隔,
08
- 擴(kuò)展ACL的編號是100-199之間的整數(shù)嘹裂。
09
10
- {
deny
|permint}:
11
- 指定匹配這條規(guī)則的數(shù)據(jù)是允許(permint)還是拒絕(
deny
),
12
13
- {
source
[
source
-wildcard]|any} :
14
- 指定了一個(gè)IP地址范圍躬翁,使用地址對的形式焦蘑,比如,
15
"192.168.1.0 0.0.0.255"
,
"host 192.168.1.1"
或者
"any"
。
16
- 這個(gè)參數(shù)在前面的
"通配符掩碼在ACL中的作用"
中詳細(xì)介紹過盒发。
17
18
19
- 或者輸出到特定的服務(wù)器例嘱。
20
*/
在R3上創(chuàng)建一條標(biāo)準(zhǔn)ACL狡逢,禁止IP(12.1.1.1)的訪問:
R3配置:
01
/*
02
- 創(chuàng)建標(biāo)準(zhǔn)的ACL,編號是1拼卵,第一個(gè)條目是阻止12.1.1.1奢浑,
03
- 第二個(gè)條目是允許任何IP地址的訪問,
04
- 兩個(gè)條目的順序很重要腋腮,不能顛倒雀彼,如果將允許任何IP地址放在第一條,
05
- 那么由于每個(gè)IP地址都能匹配第一條即寡,所以第二條將永遠(yuǎn)不會(huì)被執(zhí)行到徊哑。
06
- 這個(gè)ACL的第一條還可以簡寫成
"access-list 1 deny 12.1.1.1"
,
07
- 這是標(biāo)準(zhǔn)ACL的簡寫規(guī)則,在擴(kuò)展ACL中不能省略關(guān)鍵字
host
聪富。
08
*/
09
R3(config)#
access-list
1
deny
host
12.1.1.1
10
R3(config)#
access-list
1
permit
any
11
12
/*
13
- 將編號是1的標(biāo)準(zhǔn)ACL應(yīng)用到路由器的s0/1接口上莺丑,
14
- 方向是in,即進(jìn)入的方向墩蔓。
15
*/
16
R3(config)#
int
s 0/1
17
R3(config-if)#
ip
access
-group 1 in
18
R3(config-if)#
end
19
20
/在R1上
ping
R3測試/
21
R1#
ping
23.1.1.3
22
23
U.U.U /*
ping
不通了*/
這條標(biāo)準(zhǔn)的ACL僅僅是禁止了一個(gè)IP地址12.1.1.1梢莽,如果R1上面還有其他接口,使用高級ping命令讓其他接口的IP地址作為源奸披,去ping R3的s0/1接口IP昏名,還是可以ping通的。
下面看一下如何編輯這個(gè)創(chuàng)建好了的標(biāo)準(zhǔn)ACL阵面。
b.如何編輯標(biāo)準(zhǔn)ACL
完成上面的配置后轻局,可以在R3上使用下面的命令來查看ACL條目:
1
/*
2
"Standard IP access list 1"
ACL類型和編號,
3
- 每一行是一個(gè)條目,其中
"10"
是行號膜钓,
4
- 后面是執(zhí)行的操作嗽交,(22 matches)表示匹配的次數(shù)。
5
*/
6
R3#
show
access
-lists
7
Standard IP
access
list 1
8
10
deny
12.1.1.1 (22 matches)
9
20
permit
any (15 matches)
可以使用下面的命令來刪除標(biāo)準(zhǔn)ACL中對應(yīng)的條目:
1
/首先進(jìn)入標(biāo)準(zhǔn)ACL 1的編輯模式/
2
R3(config)#
ip
access-list
standard
1
3
R3(config-std-nacl)#
no
10 /刪除行號是10的這一行/
4
R3(config-std-nacl)#
end
5
6
/再次查看颂斜,發(fā)現(xiàn)只剩下行號是20的了/
7
R3#
show
access
-lists
8
Standard IP
access
list 1
9
20
permit
any (30 matches)
注意,這種刪除方法只能適用于Cisco的IOS 12.0之后的版本(包括12.0)拾枣,有個(gè)簡單的判斷方法沃疮,如果使用"show access-lists"看不到每個(gè)條目前面的行號,就說明當(dāng)前路由器的IOS版本不支持這種方法梅肤,也同樣不支持接下來要介紹到的"標(biāo)準(zhǔn)命名ACL"司蔬。
標(biāo)準(zhǔn)ACL配置完成后,如果不需要了可以用下面的方法來刪除ACL:
1
/刪除編號是1的標(biāo)準(zhǔn)ACL/
2
R3(config)#
no
access-list
1
3
4
/刪除在接口上的調(diào)用/
5
R3(config)#
int
s 0/1
6
R3(config-if)#
no
ip
access
-group 1 in
7
R3(config-if)#
end
c.標(biāo)準(zhǔn)ACL放置的位置
標(biāo)準(zhǔn)的ACL只能對源地址進(jìn)行控制姨蝴,如下圖(圖4)所示俊啼,將R1的s0/0接口作為源地址,R3的s0/1作為目的地址左医,數(shù)據(jù)一共要經(jīng)過四個(gè)接口授帕。
如果將前面創(chuàng)建的ACL 1配置在R1的s0/0上同木,方向是Out,結(jié)果將不起作用跛十,因?yàn)锳CL僅對穿越流量起作用彤路,對本路由器起源的流量不起作用。
如果將前面創(chuàng)建的ACL 1配置在R2的s0/0上芥映,方向是In洲尊,結(jié)果起作用,R1不能訪問R3了奈偏,但同時(shí)R1也不能訪問R2了坞嘀,因?yàn)闃?biāo)準(zhǔn)ACL只針對源地址進(jìn)行過濾。
如果將前面創(chuàng)建的ACL 1配置在R2的s0/1上,方向是Out惊来,結(jié)果正確丽涩,R1能正常訪問R2,但是不能訪問R3唁盏。
如果將前面創(chuàng)建的ACL 1配置在R3的s0/1上,方向是In内狸,結(jié)果同樣正確。
經(jīng)過上面四步的分析厘擂,可以得出這樣的結(jié)論昆淡,標(biāo)準(zhǔn)訪問控制列表要盡可能的應(yīng)用在靠近目標(biāo)端,因?yàn)闃?biāo)準(zhǔn)ACL只針對源地址進(jìn)行過濾刽严。
b.如何配置標(biāo)準(zhǔn)命名ACL
可以使用字符來代替數(shù)字標(biāo)識ACL昂灵,稱為命名ACL,命名ACL與Cisco IOS 11.2以前的版本不兼容舞萄,現(xiàn)在一般都是12.0以后的版本眨补。另外,不能為多個(gè)ACL使用相同的名字倒脓,不能使用相同的名字來命名不同類型的ACL撑螺,比如,不能使用相同的名字來命名一個(gè)標(biāo)準(zhǔn)ACL和一個(gè)擴(kuò)展ACL崎弃。
下面使用標(biāo)準(zhǔn)命名ACL來實(shí)現(xiàn)拒絕R1訪問R3:
01
/*
"deny-r1"
就是這條標(biāo)準(zhǔn)ACL的自定義名稱*/
02
R3(config)#
ip
access-list
standard
deny
-r1
03
R3(config-std-nacl)#
deny
12.1.1.1 /第一條規(guī)則甘晤,阻止12.1.1.1/
04
R3(config-std-nacl)#
permit
any /第二條規(guī)則允許所有IP/
05
R3(config-std-nacl)#
exit
06
R3(config)#
int
s 0/1 /在R3的s0/1接口上調(diào)用它/
07
R3(config-if)#
ip
access
-group
deny
-r1 in
08
R3(config-if)#
end
09
10
/查看ACL/
11
R3#
show
access
-lists
12
Standard IP
access
list
deny
-r1
13
10
deny
12.1.1.1
14
20
permit
any
標(biāo)準(zhǔn)命名的ACL也可以使用標(biāo)準(zhǔn)ACL里面的編輯語句來編輯它:
01
/刪除編號是20的條目/
02
R3(config)#
ip
access-list
standard
deny
-r1
03
R3(config-std-nacl)#
no
20
04
R3(config-std-nacl)#
end
05
06
/再次查看,發(fā)現(xiàn)只剩下一條ACL條目了/
07
R3#
show
access
-lists
08
Standard IP
access
list
deny
-r1
09
10
deny
12.1.1.1
10
11
/可以使用下面的方法刪除這個(gè)標(biāo)準(zhǔn)命名ACL饲做,并在接口上刪除對它的調(diào)用/
12
R3#
conf
t
13
R3(config)#
no
ip
access-list
standard
deny
-r1
14
R3(config)#
int
s 0/1
15
R3(config-if)#
no
ip
access
-group
deny
-r1 in
16
R3(config-if)#
end
0×3.擴(kuò)展ACL配置
a.如何配置擴(kuò)展ACL
配置擴(kuò)展ACL也分為兩個(gè)步驟——?jiǎng)?chuàng)建ACL和在接口下調(diào)用线婚;擴(kuò)展ACL的結(jié)尾也是隱式的拒絕所有。下面是創(chuàng)建擴(kuò)展ACL的基本格式:
01
Router(config)#
access-list
access-list
-number {
deny
|
permit
|remark} protocol
source
source
-wildcard [operator operand] [port port-name or name]
destination
destination
-wildcard [operator operand] [port port-name or name] [established]
02
03
/*
04
"access-list-number"
是擴(kuò)展ACL編號盆均,范圍從100-199塞弊。
05
06
- {
deny
|
permit
|remark} 是這條ACL條目執(zhí)行的操作,拒絕|允許|注釋,
07
- 其中的
"remark"
是添加注釋游沿,相當(dāng)于程序設(shè)計(jì)中的注釋語句饰抒。
08
09
"protocol"
代表協(xié)議,可以用具體的協(xié)議名稱代替奏候,比如TCP循集、UDP、ICMP蔗草、IP等咒彤。
10
11
"source source-wildcard"
,表示源地址以及通配符掩碼。
12
13
"destination destination-wildcard"
,表示目的地址以及通配符掩碼咒精。
14
15
"[port port-name or name]"
表示端口號或名稱镶柱,輸入telnet和23的效果是一樣的。
16
17
"[established]"
在后面的
"擴(kuò)展ACL中的established"
中介紹模叙。
18
*/
下面舉個(gè)例子歇拆,還是使用上面的圖三作為拓?fù)鋱D,配置擴(kuò)展ACL拒絕R1去往R3的Telnet通信范咨。
在R2上配置擴(kuò)展ACL然后調(diào)用它:
01
/*
02
- 擴(kuò)展ACL號為100故觅,第一條命令拒絕tcp類型的連接,
03
- 源主機(jī)是12.1.1.1渠啊,沒有配置源端口输吏,默認(rèn)就匹配所有端口,
04
- 目的主機(jī)是23.1.1.3替蛉,目的端口是23贯溅,即telnet。
05
*/
06
R2(config)#
access-list
100
deny
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet
07
08
/第二條命令允許所有IP通信躲查,源和目的是任意主機(jī)它浅。/
09
R2(config)#
access-list
100
permit
ip
any any
10
11
/在R2的s0/0接口上調(diào)用它/
12
R2(config)#
int
s 0/0
13
R2(config-if)#
ip
access
-group 100 in
14
R2(config-if)#
end
在R3上配置VTY:
1
/*
"www.qingsword.com"
被配置成特權(quán)密碼與
vty
登陸密碼*/
2
R3(config)#
enable
secret
www.qingsword.com
3
R3(config)#line
vty
0 4
4
R3(config-line)#
password
www.qingsword.com
5
R3(config-line)#
login
6
R3(config-line)#
end
測試在R1上telnet R3:
1
R1#telnet 23.1.1.3
2
Trying 23.1.1.3 ...
3
% Destination unreachable; gateway or
host
down
4
/發(fā)現(xiàn)無法連接上,說明ACL起作用了/
這里需要注意镣煮,因?yàn)檫@個(gè)實(shí)驗(yàn)是在前面的標(biāo)準(zhǔn)ACL實(shí)驗(yàn)的基礎(chǔ)上進(jìn)行的姐霍,請確保靜態(tài)路由配置無誤,全網(wǎng)能夠互相通信典唇。如果之前沒有刪除標(biāo)準(zhǔn)ACL請先刪除它邮弹,之后再進(jìn)行擴(kuò)展ACL的實(shí)驗(yàn)。
那么為什么要將擴(kuò)展ACL配置在R2上呢蚓聘?下面這一部分將介紹擴(kuò)展ACL推薦放置的位置。
b.擴(kuò)展ACL放置的位置
利用上面的圖4來進(jìn)行說明盟劫,R1的12.1.1.1是源地址夜牡,R3的23.1.1.3是目的地址:
如果將擴(kuò)展ACL 100放在R1的s0/0接口上,方向是Out,結(jié)果將不起作用塘装,前面介紹過急迂,ACL只對穿越流量起作用,對本地起源的流量不起作用蹦肴。如果將擴(kuò)展ACL 100放在R2的s0/0接口上僚碎,方向是In,結(jié)果正確阴幌,并無其他影響勺阐。如果將擴(kuò)展ACL 100放在R2的s0/1接口上,方向是Out矛双,結(jié)果正確渊抽,并無其他影響。如果將擴(kuò)展ACL 100放在R3的s0/1接口上议忽,方向是In懒闷,結(jié)果正確,并無其他影響栈幸。
經(jīng)過上面四步的分析愤估,因?yàn)閿U(kuò)展ACL是可以根據(jù)源和目的地址以及端口進(jìn)行過濾,放在R2和R3的任何接口上都不會(huì)影響其他數(shù)據(jù)流量速址。但有以下兩點(diǎn)需要注意:
放在R2的s0/1接口玩焰,方向是Out,根據(jù)前面的"ACL工作流程示意圖"可以知道壳繁,路由器會(huì)先處理這個(gè)數(shù)據(jù)震捣,并且查詢路由表準(zhǔn)備轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)的時(shí)候發(fā)現(xiàn)在轉(zhuǎn)發(fā)端口上面調(diào)用的擴(kuò)展ACL 100中闹炉,有一個(gè)條目匹配蒿赢,并且動(dòng)作是阻止,這個(gè)數(shù)據(jù)在這個(gè)時(shí)候被丟棄渣触,這就浪費(fèi)了R2的CPU資源(需要查詢路由表)羡棵。放在R3的s0/1接口,方向是In嗅钻,不但會(huì)因?yàn)橐粋€(gè)最終會(huì)被丟棄的數(shù)據(jù)浪費(fèi)R2和R3的CPU資源皂冰,還會(huì)造成帶寬資源的浪費(fèi)。
從上面的分析得出結(jié)論养篓,擴(kuò)展ACL應(yīng)該盡可能的放在靠近源端秃流,這樣可以使得一些非法的數(shù)據(jù)流盡早的被丟棄。所以在上面的實(shí)例中柳弄,擴(kuò)展ACL 100被放置在R2的s0/0接口上舶胀,方向是In,這是最靠近源的端口。
c.如何編輯擴(kuò)展ACL
這一部分的命令適用于擴(kuò)展ACL以及擴(kuò)展命名ACL嚣伐,下面介紹如何查看糖赔、添加、刪除轩端、更改擴(kuò)展ACL:
在R2的ACL 100中放典,只是阻止了R1對R3的telnet訪問,R1此時(shí)是可以ping通R3的基茵,可以使用下面的命令禁止R1 ping R3的23.1.1.3:
01
/首先查看R2上面的擴(kuò)展ACL/
02
R2#
show
access
-lists
03
Extended IP
access
list 100
04
10
deny
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet (3 matches)
05
20
permit
ip
any any
06
07
/在R1上測試Ping/
08
R1#
ping
23.1.1.3
09
10
!!!!! /可以
ping
通/
11
12
/*
13
- 在R2上添加ACL條目到ACL 100奋构,讓R1無法
ping
通R3,
14
- 進(jìn)入ACL 100編輯模式耿导。
15
*/
16
R2(config)#
ip
access-list
extended
100
17
18
/*
19
- 添加一條新的規(guī)則声怔,阻止ICMP協(xié)議,
20
- 源地址是12.1.1.1舱呻,目的地址是23.1.1.3醋火。
21
*/
22
R2(config-ext-nacl)#
deny
icmp
host
12.1.1.1
host
23.1.1.3
23
R2(config-ext-nacl)#
end
24
25
/*
26
- 查看ACL 100,發(fā)現(xiàn)了一個(gè)問題箱吕,
27
- 新添加的ACL條目被增加到了ACL的末尾芥驳,
28
- 而在此之前有一條
"permit ip any any"
,
29
- 這樣,新增加的那個(gè)條目永遠(yuǎn)也別想執(zhí)行到茬高,
30
- 這個(gè)時(shí)候在R1上
ping
R3的23.1.1.3任然能夠Ping通兆旬。
31
*/
32
R2#
show
access-list
33
Extended IP
access
list 100
34
10
deny
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet (3 matches)
35
20
permit
ip
any any (5 matches)
36
30
deny
icmp
host
12.1.1.1
host
23.1.1.3
37
38
/先用下面的命令刪除最新添加的ACL條目/
39
R2(config)#
ip
access-list
extended
100
40
R2(config-ext-nacl)#
no
30
41
42
/*
43
- 然后用這條命令在中間插入一條ACL條目,
44
- 前面的數(shù)字15是條目編號怎栽,可以是10-20之間的任何整數(shù)丽猬,
45
- 這樣這條條目就會(huì)被自動(dòng)插入到ACL100的10到20之間。
46
*/
47
R2(config-ext-nacl)#15
deny
icmp
host
12.1.1.1
host
23.1.1.3
48
R2(config-ext-nacl)#
end
49
50
/查看一下熏瞄,發(fā)現(xiàn)果然插入到了10-20之間,這樣R1就Ping不了R3了脚祟。/
51
R2#
show
access
-lists
52
Extended IP
access
list 100
53
10
deny
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet (3 matches)
54
15
deny
icmp
host
12.1.1.1
host
23.1.1.3
55
20
permit
ip
any any (5 matches)
56
57
/從這個(gè)例子可以看出,ACL編號設(shè)計(jì)從10開始增量是10强饮,是有其道理的由桌,這為我們留下了足夠的空間去插入新的ACL條目/
如果大家覺得ACL條目前面的編號從10開始不怎么習(xí)慣,可以使用下面的命令自己調(diào)整起始編號和編號的遞增方式:
01
/*
02
- 100是ACL的編號邮丰,也可以是一個(gè)命名擴(kuò)展ACL的字符串名稱行您,
03
- 1代表起始的數(shù)字,5代表增量(每個(gè)條目編號增加5)剪廉。
04
*/
05
R2(config)#
ip
access-list
resequence
100 1 5
06
R2(config)#
end
07
08
/查看ACL娃循,條目編號就變成1、6斗蒋、11了/
09
R2#
show
access
-lists
10
Extended IP
access
list 100
11
1
deny
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet (3 matches)
12
6
deny
icmp
host
12.1.1.1
host
23.1.1.3
13
11
permit
ip
any any (5 matches)
d.擴(kuò)展ACL中的established
在擴(kuò)展ACL中有一個(gè)可選參數(shù)"established"淮野,可以用作TCP的單向訪問控制捧书。這種設(shè)計(jì)基于TCP的三次握手,在TCP會(huì)話中初始的數(shù)據(jù)包只有Sequence(序列號)而沒有ACK(確認(rèn)號)骤星,如果受保護(hù)的網(wǎng)絡(luò)主動(dòng)發(fā)起對外部網(wǎng)絡(luò)的TCP訪問,外部返回的數(shù)據(jù)將攜帶TCP ACK參數(shù)爆哑,這樣的數(shù)據(jù)將被允許洞难,而外部主動(dòng)發(fā)起的對內(nèi)部受保護(hù)網(wǎng)絡(luò)的訪問則不會(huì)被允許,因?yàn)橹挥行蛄刑枦]有確認(rèn)號揭朝。
下面還是使用本文上面的拓?fù)鋱D圖3來完成這一實(shí)驗(yàn)演示队贱,首先配置各路由的IP以及靜態(tài)路由,讓全網(wǎng)都可以互通潭袱,這一步這里就不重復(fù)了柱嫌,實(shí)驗(yàn)的目的是在R1和R3上面都配置VTY,只允許R3對R1的telnet訪問屯换,不允許R1對R3的telnet訪問编丘;
R1、R3配置VTY:
01
/R1上面配置VTY/
02
R1(config)#
enable
secret
www.qingsword.com
03
R1(config)#line
vty
0 4
04
R1(config-line)#
pass
www.qingsword.com
05
R1(config-line)#
login
06
R1(config-line)#
end
07
08
/R3上面配置VTY/
09
R3(config)#
enable
secret
www.qingsword.com
10
R3(config)#line
vty
0 4
11
R3(config-line)#
pass
www.qingsword.com
12
R3(config-line)#
login
13
R3(config-line)#
end
R2上面配置ACL:
01
/*
02
- 末尾添加established參數(shù)彤悔,
03
- 注意嘉抓,因?yàn)槭窃试SR3訪問R1的telnet,
04
- 源和目的地址以及端口別搞錯(cuò)了晕窑,
05
- 這個(gè)訪問列表是當(dāng)R3的telnet發(fā)到R1抑片,R1回復(fù)的TCP中攜帶ACK號才匹配的,
06
- 所以源應(yīng)該是R1杨赤,源端口應(yīng)該是R1的telnet端口23敞斋,
07
- 目的端口是R3上的一個(gè)隨機(jī)端口,沒有寫出來就是匹配所有端口疾牲。
08
*/
09
R2(config)#
access-list
100
permit
tcp
host
12.1.1.1 eq telnet
host
23.1.1.3 established
10
R2(config)#
int
s 0/1
11
/在接口上調(diào)用植捎,注意方向是Out/
12
R2(config-if)#
ip
access
-group 100 out
13
R2(config-if)#
end
14
15
/有些朋友可能覺得這個(gè)acl配置在R2的s0/0接口,方向是in说敏,效果也是一樣的鸥跟,但如果那樣配置,R1不僅僅不能訪問R3盔沫,就連R2也不能訪問了/
下面測試R1 telnet R3和R3 telnet R1:
01
R1#telnet 23.1.1.3
02
Trying 23.1.1.3 ...
03
% Destination unreachable; gateway or
host
down
04
/*
05
- 發(fā)現(xiàn)連接不上医咨,根據(jù)前面的分析可以知道,
06
- 因?yàn)镽1始發(fā)的TCP連接只有序列號架诞,在經(jīng)過R2的s0/1接口準(zhǔn)備往外發(fā)送的時(shí)候拟淮,
07
- 被ACL攔截了下來。
08
*/
09
10
/可以看到攔截記錄/
11
R2#
show
access
-lists
12
Extended IP
access
list 100
13
10
permit
tcp
host
12.1.1.1 eq telnet
host
23.1.1.3 established (25 matches)
14
15
/R3 telnet R1沒有任何問題/
16
R3#telnet 12.1.1.1
17
Trying 12.1.1.1 ... Open
此時(shí)不論是R1 ping R3還是R3 ping R1結(jié)果都是Ping不通的谴忧,因?yàn)锳CL 100中沒有匹配ICMP的條目很泊,最后默認(rèn)的操作是拒絕所有沒有條目匹配的數(shù)據(jù)角虫,可以使用下面的命令添加一條條目允許R3 ping R1,R1不能Ping R3:
01
/進(jìn)入ACL 100的編輯模式/
02
R2(config)#
ip
access-list
extended
100
03
04
/添加一條命令允許R1對R3的ICMP的應(yīng)答包/
05
R2(config-ext-nacl)#
permit
icmp
host
12.1.1.1
host
23.1.1.3 echo-reply
06
R2(config-ext-nacl)#
end
07
08
/查看一下/
09
R2#
show
access
-lists
10
Extended IP
access
list 100
11
10
permit
tcp
host
12.1.1.1 eq telnet
host
23.1.1.3 established (25 matches)
12
20
permit
icmp
host
12.1.1.1
host
23.1.1.3 echo-reply
13
R2#
14
15
/*測試
ping
*/
16
R3#
ping
12.1.1.1
17
18
!!!!! /R3
ping
R1成功了/
19
20
21
R1#
ping
23.1.1.3
22
23
U.U.U /R1
ping
不通R3/
在實(shí)際應(yīng)用中很少使用這一參數(shù)委造,因?yàn)閑stablished只能用于基于TCP的應(yīng)用书聚,對于UDP、ICMP等協(xié)議不起作用颓影,稍后的高級ACL配置中"如何配置反射ACL"將會(huì)介紹一種高級版本用來解決這一缺陷报强。
e.如何配置擴(kuò)展命名ACL
配置擴(kuò)展命名ACL和標(biāo)準(zhǔn)命名ACL使用的方法類似,下面就簡單的使用擴(kuò)展命名ACL來實(shí)現(xiàn)上面"established"中的配置:
01
/首先刪除之前配置好的ACL 100/
02
R2(config)#
no
access-list
100
03
R2(config)#
int
s 0/1
04
R2(config-if)#
no
ip
access
-group 100 out
05
R2(config-if)#
exit
06
07
/配置擴(kuò)展命名ACL爬虱,名稱為tcp-firewall/
08
R2(config)#
ip
access-list
extended
tcp-firewall
09
R2(config-ext-nacl)#
permit
tcp
host
12.1.1.1 eq 23
host
23.1.1.3 established
10
R2(config-ext-nacl)#
permit
icmp
host
12.1.1.1
host
23.1.1.3 echo-reply
11
R2(config-ext-nacl)#
exit
12
13
/在接口上調(diào)用/
14
R2(config)#
int
s 0/1
15
R2(config-if)#
ip
access
-group tcp-firewall out
16
R2(config-if)#
end
17
18
/查看/
19
R2#
show
access
-lists
20
Extended IP
access
list tcp-firewall
21
10
permit
tcp
host
12.1.1.1 eq telnet
host
23.1.1.3 established
22
20
permit
icmp
host
12.1.1.1
host
23.1.1.3 echo-reply
0×4.配置ACL需要注意的事項(xiàng)
下面是應(yīng)用訪問控制列表需要注意的一些事情:
訪問控制列表只對穿越流量起作用隶债。標(biāo)準(zhǔn)列表應(yīng)該盡可能應(yīng)用在靠近目標(biāo)端。擴(kuò)展訪問列表應(yīng)該盡可能應(yīng)用在靠近源端跑筝。ACL條目的放置順序很重要死讹,如果兩條語句放置的前后都不影響結(jié)果,一般將較多使用的那條放在前面曲梗,這樣可以減少路由器的查找時(shí)間赞警。IP訪問控制列表中最后隱含為拒絕所有,沒有匹配任何語句的流量將被拒絕稀并。同一個(gè)訪問控制列表可以應(yīng)用在同一個(gè)路由的不同接口上仅颇;對于每個(gè)協(xié)議的每個(gè)接口的每個(gè)方向,只能提供一個(gè)訪問控制列表碘举。沒有攜帶條目號對ACL的編輯忘瓦,比如添加操作,條目默認(rèn)是被添加在ACL的最后面引颈。
a.配置擴(kuò)展ACL允許RIP協(xié)議
配置ACL時(shí)往往容易忽略路由協(xié)議耕皮,如果一個(gè)網(wǎng)絡(luò)中運(yùn)行的是RIPv1協(xié)議,在路由器上使用了ACL蝙场,ACL條目中沒有能夠匹配RIP數(shù)據(jù)流的條目凌停,默認(rèn)的操作是拒絕,這樣就會(huì)影響RIP協(xié)議的正常工作售滤,可以在ACL的第一條添加下面的語句罚拟,允許RIPv1協(xié)議的數(shù)據(jù)流通過:
1
Router(config)#
access-list
100
permit
udp any
host
255.255.255.255 eq
rip
如果一個(gè)網(wǎng)絡(luò)中運(yùn)行的是RIPv2協(xié)議,則可以使用下面這條語句允許RIPv2的流量:
1
Router(config)#
access-list
100
permit
udp any
host
224.0.0.9 eq
rip
b.配置擴(kuò)展ACL允許EIGRP協(xié)議
如果一個(gè)網(wǎng)絡(luò)中運(yùn)行的是EIGRP協(xié)議完箩,可以使用下面這條語句允許EIGRP的流量:
1
Router(config)#
access-list
100
permit
eigrp
any any
c.配置擴(kuò)展ACL允許OSPF協(xié)議
如果一個(gè)網(wǎng)絡(luò)中運(yùn)行的是OSPF協(xié)議赐俗,可以使用下面這條語句允許OSPF的流量:
1
Router(config)#
access-list
100
permit
ospf
any any
0×5.高級ACL配置
a.如何配置反射ACL
注意:Cisco IOS只支持使用擴(kuò)展的命名訪問控制列表來定義反射列表。
前面介紹的ACL參數(shù)中攜帶established能夠起到單向訪問控制的目的弊知,但是這種使用方法只能針對TCP的流量阻逮,而反射ACL能夠提供真正意義上的單向訪問控制,下圖(圖5)描述了反射ACL的工作方式:
上圖的上半部分秩彤,當(dāng)內(nèi)部發(fā)起一個(gè)會(huì)話(基于IP叔扼、ICMP事哭、TCP、UDP都可以)瓜富,并將數(shù)據(jù)發(fā)給外部網(wǎng)絡(luò)時(shí)鳍咱,反射ACL被觸發(fā)并且生成一個(gè)新的臨時(shí)條目食呻,如果從外部返回的數(shù)據(jù)符合臨時(shí)條目仅胞,則允許進(jìn)入內(nèi)部網(wǎng)絡(luò)。
如果是一個(gè)始發(fā)于外部的會(huì)話剑辫,在邊界路由上不會(huì)有臨時(shí)條目的記錄妹蔽,邊界路由上的反射ACL將阻止這樣的流量進(jìn)入內(nèi)部網(wǎng)絡(luò)椎眯。
臨時(shí)條目的生成依據(jù)的原則:協(xié)議(protocol)保持不變胳岂,Source-IP和Destination-IP嚴(yán)格對調(diào)乳丰,Source-Port和Destination-Port嚴(yán)格對調(diào)产园;對于ICMP協(xié)議粘勒,會(huì)根據(jù)協(xié)議類型號進(jìn)行匹配庙睡。
下面就來實(shí)際的配置一下反射ACL(使用上面的圖5)乘陪,讓R3可以遠(yuǎn)程telnet R1,R1不能telnet R3:
步驟1捂刺,路由器各接口IP如圖5所示,在R1和R3上面配置靜態(tài)路由,讓全網(wǎng)互通列肢,這些配置就不貼出來了瓷马,請自己完成;
步驟2怀骤,在R1和R3上分別配置遠(yuǎn)程登錄VTY;
01
R1(config)#
enable
secret
www.qingsword.com
02
R1(config)#line
vty
0 4
03
R1(config-line)#
password
www.qingsword.com
04
R1(config-line)#
login
05
R1(config-line)#
end
06
07
R3(config)#
enable
secret
www.qingsword.com
08
R3(config)#line
vty
0 4
09
R3(config-line)#
pass
www.qingsword.com
10
R3(config-line)#
login
11
R3(config-line)#
end
步驟3痕届,在R2上創(chuàng)建反射ACL;
01
/*
02
- 創(chuàng)建擴(kuò)展命名ACL蓝撇,這個(gè)ACL將在R2的s0/0接口的出方向上調(diào)用渤昌,
03
"permit ip any any reflect out-ip"
,這個(gè)條目的意思是,
04
- 允許所有IP流量忌栅,并對外出的IP流量進(jìn)行反射湖员,
05
- 反射生成的臨時(shí)ACL被保存到out-
ip
列表中娘摔。
06
*/
07
R2(config)#
ip
access-list
extended
out-acl
08
R2(config-ext-nacl)#
permit
ip
any any reflect out-
ip
09
R2(config-ext-nacl)#
exit
10
11
/*
12
- 創(chuàng)建另外一個(gè)擴(kuò)展命名ACL,這個(gè)ACL的作用是對進(jìn)入的流量做評估肠缨,
13
"evaluate out-ip"
當(dāng)有流量進(jìn)入的時(shí)候,使用這個(gè)臨時(shí)的ACL評估。
14
*/
15
R2(config)#
ip
access-list
extended
in-acl
16
R2(config-ext-nacl)#evaluate out-
ip
17
R2(config-ext-nacl)#
exit
18
19
R2(config)#
int
s 0/0
20
/*
21
- 在R2的s0/0接口的外出方向調(diào)用out-acl,
22
- 這個(gè)ACL會(huì)根據(jù)每個(gè)從R3途徑R2外出到R1的流量做反射楞卡,
23
- 生成一個(gè)臨時(shí)的ACL out-
ip
蒋腮。
24
*/
25
R2(config-if)#
ip
access
-group out-acl out
26
/在R2的s0/0接口進(jìn)入方向做評估/
27
R2(config-if)#
ip
access
-group in-acl in
28
R2(config-if)#
end
29
30
/注意,這里說的進(jìn)入方向作彤、外出方向是相對的。從R1訪問R3绢慢,那么R2的s0/0就是進(jìn)入方向骚露;從R3訪問R1荸百,R2的s0/0接口對于R3來說就是外出方向。/
配置完成后女嘲,分別在R1和R3上telnet對方進(jìn)行測試:
01
/發(fā)現(xiàn)R1不能telnet R3了/
02
R1#telnet 23.1.1.3
03
Trying 23.1.1.3 ...
04
% Destination unreachable; gateway or
host
down
05
06
/首先查看一下R2的ACL/
07
R2#
show
access
-lists
08
Extended IP
access
list in-acl
09
10 evaluate out-
ip
10
Extended IP
access
list out-acl
11
10
permit
ip
any any reflect out-
ip
12
Reflexive IP
access
list out-
ip
13
14
/在R3上面telnet R1/
15
R3#telnet 12.1.1.1
16
Trying 12.1.1.1 ... Open
17
User Access Verification
18
Password: www.qingsword.com
19
R1>
en
20
Password: www.qingsword.com
21
R1# /成功/
22
23
/再次查看R2的ACL/
24
R2#
show
access
-lists
25
Extended IP
access
list in-acl
26
10 evaluate out-
ip
27
Extended IP
access
list out-acl
28
10
permit
ip
any any reflect out-
ip
(50 matches)
29
30
/這個(gè)條目就是反射ACL自動(dòng)生成的/
31
Reflexive IP
access
list out-
ip
32
permit
tcp
host
12.1.1.1 eq telnet
host
23.1.1.3 eq 52116 (86 matches) (time left 269)
臨時(shí)的反射條目是有生存時(shí)間的停蕉,對于TCP會(huì)話菇晃,如果路由器檢測到兩組FIN標(biāo)記磺送,則會(huì)在5秒內(nèi)刪除這個(gè)臨時(shí)條目(比如R3登錄R1后使用exit退出登錄,R2就會(huì)在5秒鐘以內(nèi)刪除這個(gè)臨時(shí)條目)馅袁;如果路由器檢測到RST位的分組,則會(huì)立即刪除臨時(shí)條目大溜;對于UDP和其他協(xié)議(比如ICMP等),默認(rèn)的刪除時(shí)間是倒計(jì)時(shí)300秒付材。
可以使用下面的命令來更改反射ACL中臨時(shí)ACL條目的默認(rèn)生存時(shí)間:
1
/將默認(rèn)生存時(shí)間改成30秒/
2
R2(config)#
ip
reflexive-list timeout 30
對于這個(gè)生存時(shí)間的測試璧帝,大家可以在R3上面Ping一下R1的12.1.1.1,然后在R2上查看ACL條目信息苏潜,就可以看到臨時(shí)ICMP條目的末尾有一個(gè)(time left 26),time left后面的數(shù)字是從剛才更改的30秒開始倒計(jì)時(shí)的飞袋。
b.如何配置動(dòng)態(tài)ACL
結(jié)合下圖(圖6)來解釋什么是動(dòng)態(tài)ACL,當(dāng)Internet上的用戶需要訪問內(nèi)網(wǎng)的服務(wù)器時(shí),外網(wǎng)用戶需要先向邊界路由發(fā)起一個(gè)telnet會(huì)話芯肤,并且提供有效的用戶名和密碼,邊界路由驗(yàn)證成功后,將會(huì)臨時(shí)添加一條ACL語句到動(dòng)態(tài)ACL中歌豺,然后關(guān)閉Telnet會(huì)話。動(dòng)態(tài)添加的條目對被驗(yàn)證用戶進(jìn)行授權(quán)痕惋,當(dāng)條目超時(shí)后刪除這條臨時(shí)添加的動(dòng)態(tài)條目议谷。
配置動(dòng)態(tài)ACL前有下面兩點(diǎn)需要了解:
1)臨時(shí)條目的生存周期
動(dòng)態(tài)ACL的生存周期有兩個(gè)參數(shù):空閑時(shí)間和絕對時(shí)間,當(dāng)驗(yàn)證通過后禀崖,動(dòng)態(tài)ACL臨時(shí)條目生成后,空閑時(shí)間和絕對時(shí)間倒計(jì)時(shí)同時(shí)啟動(dòng),空閑計(jì)時(shí)器在每當(dāng)有一個(gè)報(bào)文匹配動(dòng)態(tài)訪問列表時(shí)進(jìn)行復(fù)位(即重新開始倒計(jì)時(shí))仅财,當(dāng)空閑計(jì)時(shí)器到期時(shí),該臨時(shí)條目被刪除碎罚。絕對計(jì)時(shí)器永不復(fù)位,當(dāng)絕對定時(shí)器到期時(shí),該動(dòng)態(tài)條目被刪除玫鸟。
2)Telnet的設(shè)置
配置了動(dòng)態(tài)ACL后诵次,R2上所有的Telnet請求都會(huì)被路由器認(rèn)為是要開啟一個(gè)動(dòng)態(tài)ACL條目,當(dāng)用戶驗(yàn)證后遵堵,telnet就會(huì)被關(guān)閉,這樣會(huì)帶來一個(gè)問題,網(wǎng)絡(luò)管理員將不能通過Telnet對路由進(jìn)行管理爽蝴,解決的方法是使用rotary命令開啟其他Telnet端口,如"rotary 1"命令開啟的端口是3001,"rotary 2"開啟3002以此類推。
下面就結(jié)合圖6來講解如何配置動(dòng)態(tài)ACL梅惯;
這里我們希望實(shí)現(xiàn),讓R1(Internet上的用戶)訪問R3(內(nèi)網(wǎng))前,先需要在R2上進(jìn)行驗(yàn)證,最后達(dá)到的效果是,驗(yàn)證前R1不能Telnet R3魏烫,驗(yàn)證通過后R1能夠telnet R3稀蟋。
第一步:配置R1、R2萌狂、R3各接口IP,配置靜態(tài)路由讓全網(wǎng)能夠互相通信,在R1和R3上面配置VTY,這一步很簡單就不貼出配置信息了树灶,請大家自己完成。
第二步:在R2上配置動(dòng)態(tài)ACL
01
/允許外網(wǎng)Telnet本路由進(jìn)行驗(yàn)證/
02
R2(config)#
access-list
100
permit
tcp any
host
12.1.1.2 eq 23
03
04
/*
05
- 允許使用3001端口對本路由進(jìn)行管理,
06
- 稍后會(huì)用
"rotary 1"
命令打開這一端口,
07
- 在實(shí)際應(yīng)用中很少使用Telnet去對路由進(jìn)行遠(yuǎn)程管理筷笨,
08
- 如果使用其他網(wǎng)絡(luò)協(xié)議,在這里需要打開對應(yīng)端口。
09
*/
10
R2(config)#
access-list
100
permit
tcp any
host
12.1.1.2 eq 3001
11
12
/*
13
- 創(chuàng)建動(dòng)態(tài)ACL饺蚊,名稱為
"ccna_dyanmic_acl"
,
14
- timeout 60 是絕對時(shí)間,60分鐘曙求。
15
16
"permit tcp any host 23.1.1.3 eq 23"
17
- 后半部分中的
"any"
會(huì)被通過驗(yàn)證的主機(jī)的IP地址所代替堰氓。
18
*/
19
R2(config)#
access-list
100 dynamic ccna_dyanmic_acl timeout 60
permit
tcp any
host
23.1.1.3 eq 23
20
21
/在本地創(chuàng)建驗(yàn)證用的用戶名www.qingsword.com和密碼www.qingsword.com/
22
R2(config)#user www.qingsword.com
pass
www.qingsword.com
23
24
/用來驗(yàn)證的VTY線路0浴麻、1、2、3/
25
R2(config)#line
vty
0 3
26
R2(config-line)#
login
local /使用本地用戶名和密碼驗(yàn)證/
27
/*
28
- 這條命令中的
host
會(huì)被驗(yàn)證通過的主機(jī)的IP代替榛泛,
29
- 這個(gè)IP會(huì)被傳遞到上面的動(dòng)態(tài)臨時(shí)ACL中剃允,去替換any關(guān)鍵字椒楣,
30
- timeout 3,是空閑時(shí)間丑罪,這里設(shè)置成3分鐘。
31
*/
32
R2(config-line)#autocommand
access
enable
host
timeout 3
33
34
/*
35
- 另外創(chuàng)建一條VTY線路4跪另,也使用本地用戶名和密碼驗(yàn)證拧抖,
36
- 這條線路用來遠(yuǎn)程管理路由器,使用的端口是3001免绿。
37
*/
38
R2(config-line)#line
vty
4
39
R2(config-line)#
login
local
40
R2(config-line)#rotary 1
41
42
/在路由的端口上調(diào)用這個(gè)ACL/
43
R2(config-line)#
int
s 0/0
44
R2(config-if)#
ip
access
-group 100 in
45
R2(config-if)#
end
46
R2#
配置完成后進(jìn)行下面的測試來驗(yàn)證動(dòng)態(tài)ACL配置的正確性:
01
/在沒有登錄R2驗(yàn)證前唧席,telnet不了R3/
02
R1#telnet 23.1.1.3
03
Trying 23.1.1.3 ...
04
% Destination unreachable; gateway or
host
down
05
06
/登錄R2進(jìn)行驗(yàn)證/
07
R1#telnet 12.1.1.2
08
Trying 12.1.1.2 ... Open
09
User Access Verification
10
Username: www.qingsword.com /用戶名和密碼都是www.qingsword.com/
11
Password: www.qingsword.com
12
[Connection to 12.1.1.2 closed by foreign
host
]
13
R1# /驗(yàn)證成功嘲驾,然后R2主動(dòng)斷開連接/
14
15
/在R2上查看ACL條目/
16
R2#
show
access
-lists
17
Extended IP
access
list 100
18
10
permit
tcp any
host
12.1.1.2 eq telnet (66 matches)
19
20
permit
tcp any
host
12.1.1.2 eq 3001
20
30 Dynamic ccna_dyanmic_acl
permit
tcp any
host
23.1.1.3 eq telnet
21
/在動(dòng)態(tài)臨時(shí)條目下面多出一條淌哟,any關(guān)鍵字被驗(yàn)證通過的R1的s0/0接口IP替代。/
22
permit
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet
23
24
/這時(shí)在R1再次telnet R3/
25
R1#telnet 23.1.1.3
26
Trying 23.1.1.3 ... Open
27
User Access Verification
28
Password: /連接上了辽故,沒有任何問題/
29
30
/再次查看R2的ACL/
31
32
R2#
show
access
-lists
33
Extended IP
access
list 100
34
10
permit
tcp any
host
12.1.1.2 eq telnet (66 matches)
35
20
permit
tcp any
host
12.1.1.2 eq 3001
36
30 Dynamic ccna_dyanmic_acl
permit
tcp any
host
23.1.1.3 eq telnet
37
/*
38
- 如果沒有任何符合這個(gè)動(dòng)態(tài)臨時(shí)條目的流量徒仓,
39
- (time left 107)這個(gè)條目將在107秒后被刪除,
40
- 這個(gè)顯示是空閑時(shí)間倒計(jì)時(shí)誊垢。
41
*/
42
permit
tcp
host
12.1.1.1
host
23.1.1.3 eq telnet (39 matches) (time left 107)
43
44
/最后測試3001端口對R2的遠(yuǎn)程管理/
45
R1#telnet 12.1.1.2 3001
46
Trying 12.1.1.2, 3001 ... Open
47
User Access Verification
48
Username: ccna
49
Password:
50
R2> /登錄R2成功掉弛,沒有和驗(yàn)證的時(shí)候一樣斷開連接。/
c.如何配置基于時(shí)間的ACL
使用基于時(shí)間的ACL配置下面的拓?fù)湮棺撸孯1只有在每周周一到周五上午7點(diǎn)到8點(diǎn)殃饿,下午1點(diǎn)到2點(diǎn)可以Telnet R2:
R1配置:
1
R1(config)#
int
s 0/0
2
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
3
R1(config-if)#
no
shut
R2配置:
01
R2(config)#
int
s 0/1
02
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
03
R2(config-if)#
no
shut
04
R2(config-if)#
exit
05
06
/配置時(shí)區(qū),我們是在東八區(qū)芋肠。/
07
R2(config)#
clock
timezone GMT +8
08
R2(config)#
end
09
/設(shè)置成當(dāng)前時(shí)間/
10
R2#
clock
set 22:33:00 25 november 2012
11
12
R2#
conf
t
13
/創(chuàng)建時(shí)間范圍乎芳,working是自定義的名稱/
14
R2(config)#time-range working
15
R2(config-time-range)#? /查看幫助/
16
Time range configuration commands:
17
absolute absolute time and date
18
default Set a command to its defaults
19
exit
Exit from time-range configuration
mode
20
no
Negate a command or set its defaults
21
periodic periodic time and date
22
23
/使用周期性的時(shí)間范圍,關(guān)鍵字weekdays代表周一到周五/
24
R2(config-time-range)#periodic weekdays 7:00 to 8:00
25
R2(config-time-range)#periodic weekdays 13:00 to 14:00
26
R2(config-time-range)#
exit
27
28
/創(chuàng)建基于時(shí)間的ACL业栅,time-range后面跟上面創(chuàng)建的時(shí)間范圍名稱/
29
R2(config)#
access-list
100
permit
tcp
host
12.1.1.1
host
12.1.1.2 eq 23 time-range working
30
31
/在接口上調(diào)用它/
32
R2(config)#
int
s 0/1
33
R2(config-if)#
ip
access
-group 100 in
34
R2(config-if)#
end
35
36
/查看秒咐,因?yàn)楝F(xiàn)在時(shí)間不符合,這個(gè)條目沒有生效(inactive)/
37
R2#
show
access
-lists
38
Extended IP
access
list 100
39
10
permit
tcp
host
12.1.1.1
host
12.1.1.2 eq telnet time-range working (inactive)