ACL:存取控制清單
CCNA 最重要的實作題。規則只有幾條,但每一條都有陷阱。
約 18 分鐘
ACL(Access Control List)是一串由上而下比對的規則,用來允許或拒絕流量。它也被用在 NAT、路由過濾、QoS 分類等地方 —— 不只是防火牆功能。
三條鐵則
- 由上而下逐條比對,一符合就停止。後面的規則再也不會被檢查。
- 清單最後有一條看不見的 `deny any`。所以 ACL 裡至少要有一條 permit,否則全擋。
- 一個介面、一個方向、一個協定,只能套一個 ACL。
標準 vs 延伸
| 類型 | 編號範圍 | 能比對什麼 | 該放在哪 |
|---|---|---|---|
| 標準 Standard | 1–99, 1300–1999 | 只有來源 IP | 靠近目的地 |
| 延伸 Extended | 100–199, 2000–2699 | 來源、目的、協定、埠號 | 靠近來源 |
! 編號式
R1(config)# access-list 10 deny 192.168.1.100
R1(config)# access-list 10 permit 192.168.1.0 0.0.0.255
! 命名式(推薦:可讀性好,而且能單獨刪某一行)
R1(config)# ip access-list standard BLOCK_HOST
R1(config-std-nacl)# 10 deny host 192.168.1.100
R1(config-std-nacl)# 20 permit 192.168.1.0 0.0.0.255
! 套用到介面
R1(config)# interface gi0/1
R1(config-if)# ip access-group BLOCK_HOST outR1(config)# ip access-list extended WEB_ONLY
! 語法:permit 協定 來源 來源萬用 目的 目的萬用 [運算子 埠]
R1(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 80
R1(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 443
R1(config-ext-nacl)# permit udp 192.168.1.0 0.0.0.255 any eq 53
R1(config-ext-nacl)# deny ip 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255
R1(config-ext-nacl)# permit ip any any
R1(config)# interface gi0/0
R1(config-if)# ip access-group WEB_ONLY in簡寫關鍵字
| 寫法 | 等同於 | 意思 |
|---|---|---|
host 192.168.1.1 | 192.168.1.1 0.0.0.0 | 單一台主機 |
any | 0.0.0.0 255.255.255.255 | 所有位址 |
eq 80 | — | 等於 |
gt 1023 | — | 大於 |
range 20 21 | — | 範圍 |
established | — | 只允許已建立連線的回覆封包(ACK/RST 已設) |
順序陷阱示範
✗ 錯誤的順序
10 permit ip 192.168.1.0 0.0.0.255 any
20 deny ip host 192.168.1.100 any
→ .100 的流量在第 10 行就被 permit 了
第 20 行永遠不會被執行 —— 沒有任何效果
✓ 正確的順序
10 deny ip host 192.168.1.100 any
20 permit ip 192.168.1.0 0.0.0.255 any
→ 先擋掉特例,再放行其他人
原則:具體的規則放前面,籠統的規則放後面! 看 ACL 內容與命中次數(matches 是排錯神器)
R1# show access-lists
Extended IP access list WEB_ONLY
10 permit tcp 192.168.1.0 0.0.0.255 any eq www (243 matches)
20 permit tcp 192.168.1.0 0.0.0.255 any eq 443 (1502 matches)
30 deny ip 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255 (0 matches)
! 看哪個介面套了哪個 ACL
R1# show ip interface gi0/0 | include access list
Outgoing access list is not set
Inbound access list is WEB_ONLY立即測驗這一節(5 題)