Beruflich Dokumente
Kultur Dokumente
IPV4與IPV6 ACL介紹與實作
蕭志明老師 CCNA教學
章節大綱
2. 標準ACL設定 8. ISP阻擋私有IP連線
6. 進階ACL設定
蕭志明老師 CCNA教學
15.1 ACL介紹
蕭志明老師 CCNA教學
存取清單
蕭志明老師 CCNA教學
ACL 語法
這種辦斷式在寫程式時常會用的邏輯判斷
蕭志明老師 CCNA教學
程式中IF邏輯
下圖網路架構為例,R1要讓電腦A的封包可以經過,但是禁止電腦B的封包通過
程式IF邏輯為
IF (條件=封包來自電腦A) then (動作=允許)
蕭志明老師 CCNA教學
ACL語法邏輯
ACL語法的思考邏輯會將動作寫在前面,條件寫在後面
IF (條件=封包來自電腦A) then (動作=允許)
(動作=允許) (條件=封包來自電腦A)
再將換成ACL的關鍵字變成
(動作=permit) (條件=host 192.168.10.1)
最後將中文及括號去掉就是ACL語法
permit host 192.168.10.1
蕭志明老師 CCNA教學
執行ACL
寫好的ACL敘述只是存在running組態中
路由器目前不會執行ACL來進行封包的過濾
還要有啟動ACL執行的指令
路由器啟動ACL是在網路介面啟動
蕭志明老師 CCNA教學
ACL執行的方向性
在路由器介面啟動ACL注意方向性
完整啟動ACL必須在介面定義封包進入或離開時觸發ACL執行
蕭志明老師 CCNA教學
ACL 種類
ACL語法有分為兩種
1. 標準ACL(Standard access list)
標準ACL只能檢查封包的來源,一種條件
這兩種ACL主要的差別在於檢查的條件
蕭志明老師 CCNA教學
ACL 敘述的設定方式
路由器中要寫ACL語法的指令有兩種方式,
編號的方式(Number)
命名的方式(Name)
蕭志明老師 CCNA教學
蕭志明老師 CCNA教學
ACL執行的順序
路由器執行ACL敘述順序如下圖所示
最後一項ACL敘述又測試沒有符合條件,這時候路由器就會執行deny any,也就是隱含的
全部阻擋(Implicit Deny)
蕭志明老師 CCNA教學
15.2 標準ACL設定
蕭志明老師 CCNA教學
標準ACL設定
A電腦可以連接Web Server,而B電腦不能連接Web Server
選擇R1的fa0/1來執行ACL的動作
範例檔案:ACL-basic.pka
Lab 15-5影音教學
蕭志明老師 CCNA教學
規劃ACL指令
R1中設定及啟動標準ACL指令
指令 說明
R1(config)#access-list 10 permit host 192.168.10.1 新增一筆編號10的ACL敘述
R1(config)#access-list 10 deny host 192.168.10.2 編號10的再新增一筆ACL敘述
R1(config)#int fa0/1 切換到fa0/1
R1(config-if)#ip access-group 10 out fa0/1啟動編號10 ACL檢查封包出去
蕭志明老師 CCNA教學
R1執行啟動標準ACL指令
show access-list為查詢ACL設定及執行狀況
蕭志明老師 CCNA教學
查詢介面啟動ACL
show ip int fa0/1來查詢ACL在fa0/1啟動狀況
蕭志明老師 CCNA教學
測試ACL
在PCA執行ping 207.16.10.1
蕭志明老師 CCNA教學
重設ACL計數器
如果想重新將執行show access-list結果中的match數目歸零
蕭志明老師 CCNA教學
15.3 延伸ACL
蕭志明老師 CCNA教學
延伸ACL檢查條件
延伸ACL能針對包的來源、目的、協定及服務作檢查,以下為四種條件的
說明。
1. 來源:檢查封包來源
2. 目的:檢查封包目的
3. 協定:檢查封包使用協定,例如:IP、TCP、ICMP….
4. 服務:檢查封包使用應用程式,例如:Telnet、WWW、ftp……
蕭志明老師 CCNA教學
PORT NUMBER 運算子
請注意eq為equal,eq 80表示port number要等於80,還有其它運算子的
選項,例如:大於或小於某個port number等等,如下表所示。
蕭志明老師 CCNA教學
設計延伸ACL
PCA可以連接任何Web Server,而PCB只能連接Web Server 1
此需求使用標準ACL是無法完成,標準ACL只能用封包來源作為檢查的條件
此需求只能使用延伸ACL
(範例檔案:ACL-extended.pka)
Lab 15-14影音教學
蕭志明老師 CCNA教學
R1中設定延伸ACL敘述
指令 說明
檢查來源為192.168.10.1與目的不
R1(config)#access-list 100 permit ip host 192.168.10.1 any
限制
檢查來源為192.168.10.1與目的為
R1(config)#access-list 100 permit ip host 192.168.10.2 host 207.16.10.1
207.16.10.1
檢查來源為192.168.10.1與目的為
R1(config)#access-list 100 deny ip host 192.168.10.2 host 207.16.10.10
207.16.10.1
R1(config)#int fa0/1
在fa0/1啟動編號100的ACL
R1(config-if)#ip access-group 100 out
蕭志明老師 CCNA教學
測試PCA連線
PCA 執 行 ping 207.16.10.1 及 ping
207.16.10.10,結果應該都式連線成功
在R1執行show access-list來查看,結果如下
圖 所 示 有 8 matches 符 合 permit ip host
192.168.10.1 any
蕭志明老師 CCNA教學
ACL使用建議設計原則
根據需求要過濾的封包,決定要使用的ACL 種類,要使用是
標準ACL還是延伸ACL。
決定要在那一個網路介面,那一個方向啟動ACL。
每個網路介面的每一個方向只能啟動一組ACL。
最後ACL敘述為隱含的deny any,此為路由器主動執行。
ACL的條件嚴謹度,在越前面幾項的ACL敘述條件要嚴謹,
越後面ACL敘述條件要越寬鬆。
蕭志明老師 CCNA教學
ACL放置的介面選擇
延伸ACL盡可能靠近要拒絕流量的來源,如此才能在不需要
的流量流經網路之前將其過濾掉
蕭志明老師 CCNA教學
蕭志明老師 CCNA教學
蕭志明老師 CCNA教學
不同種類的ACL概觀
請注意交換器也可以設定ACL,稱為Vlan ACL(VACL)及Port
ACL(PACL)
而路由器的ACL稱為RACL
VACL及PACL能針對MAC來進行流量的過濾, VACL及PACL
屬於 CCNP課程範圍.
蕭志明老師 CCNA教學
15.4 使用命名方式設定ACL
蕭志明老師 CCNA教學
命名方式ACL
使用命名方式ACL寫出延伸ACL
(範例檔案:ACL-extended name.pka)
Lab 15-21影音教學
蕭志明老師 CCNA教學
在R1中設定命名的延伸ACL敘述
蕭志明老師 CCNA教學
在R1設定及執行命名的延伸ACL
ip access-list extended為設定命名延伸ACL指令
使用R1-ACL當名稱,並且在fa0/0介面啟動,如下圖所示
蕭志明老師 CCNA教學
PCA測試連線
在PCA執行ping 207.16.10.1,結果的ICMP封
包 不 能 通 過 R1 , 換 成 使 用 Browser 方 式 連 線
Server,結果成功。
查詢R1中執行延伸ACL檢查 http狀況
蕭志明老師 CCNA教學
檢查ACL執行結果
蕭志明老師 CCNA教學
15.5 檢查SOURCE PORT的ACL
蕭志明老師 CCNA教學
檢查來源PORT NUMBER練習架構
範例檔案:ACL-extended-source.pka
Lab 15-27影音教學
蕭志明老師 CCNA教學
延伸 ACL 語法
蕭志明老師 CCNA教學
規劃ACL敘述
Web Server只能回應HTTP封包,其它流量都禁止
以R1的fa0/1中in方向來設計,由於Web Server回應Http封包會由自己的source
port number為80送出
指令 說明
R1(config)#access-list 100 permit tcp host 207.16.10.1 eq 80 any 檢 查 來 源 port number 的
ACL
R1(config)#access-list 100 deny ip any any 阻擋所有封包通過
R1(config)#int fa0/1 在fa0/1中in的方向啟動編
R1(config-if)#ip access-group 100 in 號100 的ACL
蕭志明老師 CCNA教學
驗證ACL
先在PCA ping Web Server
接著在PCA再使用Brower來連線Web Server
查詢ACL執行結果
蕭志明老師 CCNA教學
15.6 進階ACL設定
蕭志明老師 CCNA教學
進階ACL練習架構
(範例檔案:ACL-complex.pka)
Lab 15-31影音教學
蕭志明老師 CCNA教學
R1中規劃三行ACL STATEMENT
請注意三個ACL的設定順序,當順序不對
,其結果也會改變
指令 說明
來源電腦C,目的WWW
R1(config)#access-list 100 permit tcp host 192.168.33.3 host 172.22.242.23 eq 80
Server,協定tcp,服務http
來源任何電腦,目的WWW
R1(config)#access-list 100 deny tcp any host 172.22.242.23 eq 80
Server,協定tcp,服務http
R1(config)#int fa0/0
在fa0/0啟動ACL
R1(config-if)#ip access-group 100 out
蕭志明老師 CCNA教學
測試只能讓C電腦用HTTP連接 WWW SERVER
蕭志明老師 CCNA教學
測試其他流量無限制
PCA執行ping 172.22.242.23
PCA用ICMP與WWW Server連線成功
蕭志明老師 CCNA教學
更改需求
需求修改為『為使用三行ACL Statement達成 WWW Server 只能讓C用
http連接,其它流量也限制連接到WWW Server』
蕭志明老師 CCNA教學
更改需求ACL
整個ACL敘述如下表所示,所以第一項ACL
敘述就是讓電腦C用http連線到WWW Server,
如果電腦C用其它服務連到WWW Server就
會符合第二項ACL敘述,結果被拒絕通過
指令 說明
來源電腦C,目的WWW Server,
R1(config)#access-list 100 permit tcp host 192.168.33.3 host 172.22.242.23 eq 80
協定tcp,服務http
來 源 任 何 電 腦 , 目 的 WWW
R1(config)#access-list 100 deny ip any host 172.22.242.23
Server,協定ip
R1(config)#access-list 100 permit ip any any 全部允許
R1(config)#int fa0/0
在fa0/0啟動ACL
R1(config-if)#ip access-group 100 out
蕭志明老師 CCNA教學
15.7 ESTABLISHED ACL
蕭志明老師 CCNA教學
ESTABLISHED ACL
ACL的established 功能來檢查TCP的連線狀態
ACL功能的演進技術
ACL 演 進 的 技 術 established ACLreflexive ACLContext-based
ACL(Classic ACL)Zone-Based ACL
蕭志明老師 CCNA教學
TCP連線特性
當要使用TCP進行資料傳送之前,TCP的來源端會使用3 way
handshake跟目的端來建立連線
當來源端初始建立連線時,TCP的表頭檔中RST欄位是空的,
當目的端回應連線建立時TCP的RST欄位會被標記
Established ACL功能就是會檢查RST欄位是否有標記。
蕭志明老師 CCNA教學
建立簡易防火牆
任何網際網路的電腦要直接連線到公司內網一律阻擋
(範例檔案:ACL-establish.pka)
Lab 15-37影音教學
蕭志明老師 CCNA教學
無敵的防火牆
deny ip any any啟動在Firewall路由器的s0/1/0進入方向,這
個就是無敵的防火牆
公司內網完全無法跟網際網路的電腦溝通
蕭志明老師 CCNA教學
FIREWALL路由器中建立ACL
指令 說明
Firewall(config)#ip access-list extended TCPIN 使用established
Firewall(config-ext-nacl)# permit tcp any any established 功能設定的ACL
Firewall(config-ext-nacl)# deny ip any any 當作簡易防火牆
Firewall(config)#ip access-list extended TCPOUT
Firewall(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 any eq www 達成公司內網需
Firewall(config-ext-nacl)# permit tcp 192.168.30.0 0.0.0.255 any eq ftp 求的ACL
Firewall(config-ext-nacl)# deny ip any any
在Firewall中
Firewall(config)#int s0/1/0
s0/1/0執行
Firewall(config-if)# ip access-group TCPIN in
TCPIN與
Firewall(config-if)# ip access-group TCPOUT out
TCPOUT的ACL
蕭志明老師 CCNA教學
測試SERVER2直接連線到公司內網
在Server2執行ping 10.3.3.3與ping 192.168.10.10,如下圖所示連接都失敗
蕭志明老師 CCNA教學
測試公司電腦PC3連線到SERVER2
PC3執行ftp 209.165.201.2,其結果如下圖所示,表示PC3使用ftp連線Server2成功
蕭志明老師 CCNA教學
15.8 ISP阻擋私有IP連線
蕭志明老師 CCNA教學
ISP阻擋私有IP連線
私有IP不能連上Internet
在ISP業者如何做到私有IP不能連上Internet
在ISP的路由器就啟動ACL來阻擋封包的來源端是私有IP 即可
蕭志明老師 CCNA教學
設計ACL阻擋私有IP
在ISP業者的路由器啟動ACL來阻擋封包的來源端是私有IP
PC4是設定公有IP,其它PC1~3設定為私有IP
範例檔案:ACL-ISP.pka
Lab 15-43影音教學
蕭志明老師 CCNA教學
私有IP範圍
蕭志明老師 CCNA教學
萬用遮罩運作
萬用遮罩在ACL中運作目的為告訴路由器應該查看封包中的
IP的哪個部分,萬用遮罩使用以下規則符合二進位 1 和 0:
萬用遮罩位元=0:必須檢查符合位址中對應位元的值
萬用遮罩位元=1:不用檢查位址中對應位元的值
蕭志明老師 CCNA教學
CLASS A的私有IP的萬用遮罩
0.255.255.255為萬用遮罩位元,二進位中的0有前面8位元,
其它24位元都為1,萬用遮罩中0的部份是要檢查,1的部份
忽略
只要是來源端IP是10開頭的都符合此ACL敘述
蕭志明老師 CCNA教學
CLASS C的私有IP的萬用遮罩
0.0.255.255為萬用遮罩位元,二進位中的0有前面16位元,
其它16位元都為1
表示路由器只會檢查來源IP的前16位元
只要來源IP為192.168開頭,ACL敘述成立
如此檢查Class C的私有IP範圍
蕭志明老師 CCNA教學
CLASS B 私有IP的萬用遮罩
0.15.255.255為萬用遮罩位元,二進位中的0有前面12位元,其它20
位元都為1
可以檢查來源IP是否有在Class B的私有IP範圍
檢查範圍 二進位
172.16.0.0/16 10101100.00010000.00000000.00000000
~ ~
172.31.0.0/16 10101100.00011111.00000000.00000000
萬用遮罩 00000000.00001111.11111111.11111111
蕭志明老師 CCNA教學
特殊萬用遮罩
萬 用 遮 罩 為 0.0.0.0 表 示 全 部 都 要 符 合 , 萬 用 遮 罩 為
255.255.255.255表示全部忽略
蕭志明老師 CCNA教學
ISP路由器阻擋私有IP的設定
指令 說明
阻擋來源IP為
ISP(config)#access-list 10 deny 192.168.0.0 0.0.255.255
192.168.0.0~192.168.255.0
ISP(config)#access-list 10 deny 10.0.0.0 0.255.255.255 阻擋來源IP為 10.0.0.0
阻擋來源IP為
ISP(config)#access-list 10 deny 172.16.0.0 0.15.255.255
172.16.0.0~172.31.0.0
ISP(config)#access-list 10 permit any 私有IP之外,其它IP 都允許通過
ISP(config)#int s0/0/1 進入s0/0/1介面模式
ISP(config-if)# ip access-group 10 in 啟動access-list 10
蕭志明老師 CCNA教學
ISP路由器設定阻擋私有IP的ACL
蕭志明老師 CCNA教學
測試連線
PC2為私有IP,PC2執行ping 200.200.200.1,左圖
所示結果連線失敗
PC4是公有IP,PC4執行ping 200.200.200.1,右圖
所示表示PC4可以連線網際網路
蕭志明老師 CCNA教學
15.9 WILDCARD MASK進階應用
蕭志明老師 CCNA教學
WILDCARD設計練習架構
範例檔案: ACL-Subnet-Check.pka
Lab 15-50影音教學
蕭志明老師 CCNA教學
設計ACL檢查條件
要檢查172.10.0.0/16子網路為奇數或偶數
網路IP位址,偶數子網路IP中的電腦可以通
過,奇數子網路則要阻擋
ISP路由器判斷奇數或偶數子網路ACL敘述
指令 說明
檢查偶數子網路
ISP(config)# access-list 10 permit 172.10.0.0 0.0.254.255
檢查奇數子網路
ISP(config)# access-list 10 deny 172.10.1.0 0.0.254.255
進入s0/0/1介面模式
ISP(config)#int s0/0/1
啟動access-list 10
ISP(config-if)# ip access-group 10 in
蕭志明老師 CCNA教學
測試ACL檢查奇數
先在PC1執行 ping 200.200.200.1, 由於
PC1所在的子網路172.10.1.0/24為奇數,
所以PC1的ping 封包會被ISP路由器阻擋
ACL檢查奇數結果
蕭志明老師 CCNA教學
測試ACL檢查偶數子網路
接著在PC2 執行ping 200.200.200.1,由於
PC2所在的子網路172.10.2.0/24為偶數,所以
結果連線成功
檢查ACL執行狀況,如下圖所示
蕭志明老師 CCNA教學
15.10 VTY啟動ACL
蕭志明老師 CCNA教學
VTY啟動ACL
上述的ACL都是在實體介面啟動
ACL也可以在其他地方啟動,例如在vty介面中、NAT功能中、
QOS中分類功能
蕭志明老師 CCNA教學
VTY中啟動ACL來限制TELNET連線
限制只有PC0能進行telnet連線,其他電腦的telnet連線一律拒絕
(範例檔案:ACL-vty.pka)
Lab 15-54影音教學
蕭志明老師 CCNA教學
使用延伸ACL
問題是此延伸ACL敘述要在哪一個實體介面啟動
R1有三個實體介面,因此為了要達到本範例需求,必須要在
三個介面同時啟動此延伸ACL敘述
路由器可以讓ACL在vty中啟動
蕭志明老師 CCNA教學
R1中設定ACL並在VTY啟動
指令 說明
R1(config)#access-list 10 permit host 10.10.10.1 允許來源10.10.10.1其他一律阻
R1(config)#access-list 10 deny any 擋
R1(config)#line vty 0 4
R1(config-line)#password CCNA 進入vty介面模式設定密碼
R1(config-line)#login
R1(config-line)#access-class 10 in
在vty介面中起動編號20ACL
蕭志明老師 CCNA教學
測試PCA與R1的連線
在 PCA 執 行 ping 192.168.33.254 及 telnet
192.168.33.254
下圖所示其中ping連線成功,但是telnet連線失敗
蕭志明老師 CCNA教學
測試PC0與R1的連線
PC0 執 行 ping 192.168.10.254 及 telnet
192.168.10.254,結果如下圖所示兩個連線都
成功
蕭志明老師 CCNA教學
查看R1中ACL執行通過狀況
在vty中啟動的ACL確實有被執行
蕭志明老師 CCNA教學
15.11 IPV6 ACL介紹與練習
蕭志明老師 CCNA教學
IPV4與IPV6 ACL比較
IPv4與IPv6的ACL主要有幾點不一樣的地方,主要不同的地
方有三個,如下表所示。
在啟動IPv6 ACL的指令改為ipv6 traffic-filter
在判斷符合條件上已經不使用Wildcard Mask方式,而是使用Prefix
ACL種類與寫法,IPv6只有一種分類與一種寫法,在分類上IPv6使用
類似Extended語法,而Extended語法也有辦法做到Standard語法的效
果,另外寫法上都是使用命名方式
蕭志明老師 CCNA教學
IPV4與IPV6 ACL比較表
蕭志明老師 CCNA教學
練習過濾IPV6網路
(範例檔案:ACL-IPv6.pka)
Lab 15-60影音教學
蕭志明老師 CCNA教學
R1中設定阻擋2001:AAAA::/64網路
要阻擋2001:AAAA::/64連接到Server的IPv6 ACL指令為
deny ipv6 2001:AAAA::/64 host 2001:CCCC::2,剩下
的就是啟動的部份,如下表指令。
指令 說明
R1(config)#ipv6 access-list prefixacl 使用命名方式,名稱為prefixacl
R1(config-ipv6-acl)#deny ipv6 2001:AAAA::/64 host 2001:CCCC::2
阻擋特定IPv6網路連接到Server
R1(config-ipv6-acl)#permit ipv6 any any 無條件允許IPv6封包通過
R1(config-ipv6-acl)#int fa0/0 在 fa0/0 介 面 in 方 向 啟 動 prefixacl
R1(config-if)#ipv6 traffic-filter prefixacl in ACL
蕭志明老師 CCNA教學
執行與查詢過濾IPV6網路的ACL
蕭志明老師 CCNA教學
測試過濾IPV6網路的ACL
PC0無法連接Server
蕭志明老師 CCNA教學
檢查是否有執行阻擋IPV6網路
蕭志明老師 CCNA教學
練習過濾IPV6特定協定
PC3用Http連接Server的IPv6 ACL指令為permit tcp host
2001:bbbb::2 host 2001:cccc::2 eq www,因此要符合這
個需求的IPv6 ACL如下表指令。
指令 說明
R1(config)#ipv6 access-list httpacl 使用命名方式,名稱為httpacl
R1(config-ipv6-acl)#permit tcp host 2001:bbbb::2
host 2001:cccc::2 eq www 允許PC3使用http連接到Server
蕭志明老師 CCNA教學
測試過濾IPV6 特定協定的ACL
在PC3使用Brower來連接Server,結果會成功,
PC2使用Brower來連接Server,結果會失敗,但是
PC2使用ping連接Server就會成功,檢查IPv6 ACL
執行狀況如下圖所示
蕭志明老師 CCNA教學
練習在VTY過濾IPV6
只允許PC2使用telnet連線到R1,此需求啟動需要
在vty介面中,所以來源為PC2就好,目的為任何,
此 需 求 的 IPv6 ACL 的 指 令 為 permit ipv6 host
2001:BBBB::3 any,因此要符合這個需求的IPv6
ACL如下表指令
指令 說明
R1(config)#ipv6 access-list vtyacl 使用命名方式,名稱為vtyacl
R1(config-ipv6-acl)#permit ipv6 host 2001:BBBB::3 any 允許PC2連接到任何地方
R1(config-ipv6-acl)#deny ipv6 any any 全部阻擋
R1(config-ipv6-acl)#permit ipv6 any any 無條件允許IPv6封包通過
R1(config-ipv6-acl)#line vty 0 4
在vty介面in方向啟動 vtyacl ACL
R1(config-line)#ipv6 access-class vtyacl in
R1(config)#line vty 0 4
R1(config-line)#password CCNA 啟動VTY密碼
R1(config-line)#login
蕭志明老師 CCNA教學