擴充套件訪問控制列表配置
知識點:
簡介:
訪問控制列表(Access Control List,ACL) 是路由器和交換機介面的指令列表,用來控制埠進出的資料包。ACL適用於所有的被路由協議(被路由協議是一些用於定義資料報內欄位格式並且為使用者的通訊傳輸提供一種機制的協議(也就是打包),如IP、IPX、AppleTalk等。路由協議則負責運輸。例如ospf、IGRP)
功能:
配置ACL後,可以限制網路流量,允許特定裝置訪問,指定轉發特定埠資料包等。如可以配置ACL,禁止區域網內的裝置訪問外部公共網路,或者只能使用FTP服務。
ACL分類:
目前有三種主要的ACL:標準ACL、擴充套件ACL及命名ACL。
標準的ACL使用 1 ~ 99 以及1300~1999之間的數字作為表號,擴充套件的ACL使用 100 ~ 199以及2000~2699之間的數字作為表號。
ACL配置位置:
標準ACL要儘量靠近目的端。擴充套件ACL要儘量靠近源端。
命令配置順序:
ACL語句會按照先後順序執行。一個包只要遇到一條匹配的ACL語句後就會停止後續語句的執行。
比如你想deny 源是192.168.1.1 目的是192.168.2.1的主機流量,如果先寫access-list 100 permit ip any any (允許任何流量通過)
再寫access-list 100 deny ip host 192.168.1.1 host 192.168.2.1
那麼第二條是沒有效果的,因為第一條已經放行了所有的流量。
我們在寫ACL時,一定要遵循最為精確匹配的ACL語句一定要寫在最前面的原則
方向:
根據流量方向,進路由器的埠設定為in,出路由器的埠設定為out。
注:1.在acl中預設在最後有一條隱藏語句 deny ip any any(只要配ACL這條命令一定預設會有)。如果想要使這條效果失效,就在末尾加句permit ip any any
2.acl僅對穿越路由器的資料包過濾,對本路由器起源的資料包不過濾。
命令格式:access-list命令
(1)標準訪問列表
access-list access-list-number { permit | deny } {source [source-wildcard] | any}
命令解釋如下。
access-list:訪問列表命令。
access-list-number:訪問列表號碼,值為1~99.
permit:允許。
deny:拒絕。
source:源IP地址。
source-wildcard:源IP地址的萬用字元(0表示必須匹配,1表示不用,與掩碼相反)。
(2)擴充套件訪問列表
access-list access-list-number { permit | deny } { protocol \ protocol-keyword } { source [ source-wildcard ] | any } { destination destination-wildcard } | any }[protocol-specific options][log]
命令解釋如下。
access-list-number:訪問列表號碼,值為100~199.
protocol \ protocol-keyword:可使用的協議,包括IP、ICMP、IGRP、EIGRP、OSPF等。
destination destination-wild:目的IP地址,格式與源IP地址相同。
protocol-specific options:協議制定的選項。
log:記錄有關資料報進入訪問列表的資訊。
(3)命名控制列表就是給控制列表取個名字,而不是像上面所述的使用訪問控制列表號。通過命令訪問控制列表可以很方便的管理ACL規則,可以隨便新增和刪除規則,而無需刪除整個訪問控制列表了。
建立命名訪問控制列表的語法如下:
Router(config)#ip access-list {standard|extended} access-list-name
下面是命令引數的詳細說明
standard:建立標準的命名訪問控制列表。
extended:建立擴充套件的命名訪問控制列表。
access-list-name:命名控制列表的名字,可以是任意字母和數字的組合。
標準命名ACL語法如下:
Router(config-std-nacl)#[Sequence-Number] {permit|deny} source [souce-wildcard]
擴充套件命名ACL語法如下:
Router(config-ext-nacl)#[Sequence-Number] {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
無論是配置標準命名ACL語句還是配置擴充套件命名ACL語句,都有一個可選引數Sequence-Number。Sequence-Number引數表明了配置的ACL語句在命令ACL中所處的位置,預設情況下,第一條為10,第二條為20,以此類推。Sequence-Number可以很方便地將新新增的ACL語句插於到原有的ACL列表的指定位置,如果不選擇Sequence-Number,預設新增到ACL列表末尾並且序列號加10。
刪去以建立的命名ACL語法如下:
Router(config)#no ip access-list {standard|extended} access-list-name
如果要刪除某一ACL語句,可以使用“no Sequence-Number”或“no ACL”語句兩種方式。
列如:將一條新新增的ACL加入到原有標準命名ACL的序列15的位置。內容為允許主機192.168.1.1/24訪問Internet。
Router(config)#ip access-list standard test1(test1為自己之前命名的)
Router(config-std-nacl)#15 permit host 192.168.1.1
列如:建立擴充套件命名ACL,內容為拒絕192.168.1.0/24訪問FTP伺服器192.168.2.200/24,允許其他主機。
Router(config)#ip access-list extended test2
Router(config-ext-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.200 eq 21
Router(config-ext-nacl)#permit ip any any
將命名ACL應用於介面語法如下:
Router(config-if)#ip access-group aaccess-list-name {in|out}
取消命名ACL的應用語法如下:
Router(config-if)#no ip access-group aaccess-list-name {in|out}
acl應用在埠命令:
ip access-group access-list-number {in | out}