反射存取控制列表 (RACL, Reflexive ACL) 能夠針對會話建立臨時許可條目,實現「有去有回」的狀態化過濾,是無狀態防火牆/路由器上實現動態存取控制的關鍵技術。本文透過一個三介面 (內網、DMZ、Internet) 完整拓撲,詳細講解 RACL 配置邏輯與關鍵指令。
| # | 來源 | 目的 | 服務 | 動作 |
| 1 | Internet | DMZ (Mail/DNS/Web) | TCP 25/53/80 | Permit |
| 2 | Internet | Internal | Any | Deny |
| 3 | Internal Mail (192.1.1.1) | DMZ Mail (192.1.2.1) | TCP 25 | Permit (含回程) |
| 4 | DMZ Mail (192.1.2.1) | Internal Mail (192.1.1.1) | TCP 25 | Permit |
| 5 | Internal Users | Internet | Any | Permit (含回程) |
| 6 | Internal Users | DMZ Mail / Any External Mail | TCP 25 | Deny |
RACL 配置邏輯核心
RACL 運作機制:
- 外發封包匹配
permit ... reflect NAME → 建立臨時反向許可條目存入命名 RACL (如 RACL_DMZ)。
- 回程封包進入反方向介面,匹配
evaluate NAME → 查找臨時條目 → 許可通過。
- 臨時條目隨會話結束 (TCP FIN/RST 或 UDP 閒置逾時) 自動移除。
完整配置指令解析
1. Internal 介面輸出方向 ACL (internal_ACL)
ip access-list extended internal_ACL
permit tcp host 192.1.1.1 host 192.1.2.1 eq 25 reflect RACL_DMZ
! 內部郵件伺服器 → DMZ 郵件伺服器 TCP 25,建立 RACL_DMZ 臨時回程許可
deny tcp any any eq 25
! 禁止任何內部主機連接任何郵件伺服器 (含 DMZ 與外部)
deny ip host 192.1.1.1 any
! 禁止內部郵件伺服器存取任何其他 DMZ/外部資源
permit ip any 192.1.2.0 0.0.0.255 reflect RACL_DMZ
! 內部其他主機 → DMZ 所有主機,建立 RACL_DMZ 回程許可
permit ip any any
! 允許內部 → Internet 所有其他流量
interface
ip access-group internal_ACL out
2. DMZ/Internet → Internal 方向 ACL (dmz_ACL)
ip access-list extended dmz_ACL
permit tcp host 192.1.2.1 host 192.1.1.1 eq 25
! 明確允許 DMZ 郵件伺服器 → 內部郵件伺服器 TCP 25 (主動推送郵件)
evaluate RACL_DMZ
! 引用 RACL_DMZ:允許內部 → DMZ 流量的回程封包進入內網
evaluate RACL_Internal_return
! 引用 RACL_Internal_return:允許內部 → Internet 流量的回程封包進入內網
interface
ip access-group dmz_ACL in
3. 外網輸出方向 ACL (exit_ACL) — 保護 DMZ 服務回程
ip access-list extended exit_ACL
permit tcp host 192.1.2.1 any eq 25 reflect RACL_DMZ_return
! DMZ 郵件伺服器主動連外部郵件伺服器 (發信),建立回程許可
permit udp host 192.1.2.2 any eq 53 reflect RACL_DMZ_return
! DMZ DNS 伺服器發送查詢,建立回程許可
! 同理可為 Web 伺服器 (TCP 80/443) 添加 reflect RACL_DMZ_return
interface
ip access-group exit_ACL out
4. 內部 → Internet 回程許可清單 (RACL_Internal_return)
ip access-list extended RACL_Internal_return
! 此處不寫具體 permit,由 internal_ACL 中 "permit ip any any reflect RACL_Internal_return" 動態建立
! dmz_ACL 中 evaluate RACL_Internal_return 引用它
關鍵設計要點
- 方向性:
reflect 寫在發起方向的 ACL (out);evaluate 寫在回程方向的 ACL (in/out 視介面方向)。
- 命名隔離: 不同區域/服務使用獨立 RACL 名稱 (
RACL_DMZ, RACL_DMZ_return, RACL_Internal_return),避免條目汙染。
- 順序敏感: ACL 由上而下匹配,
deny 必須置於 permit ... reflect 之前,否則特定流量被過早許可而繞過反射邏輯。
- 協定支援: RACL 支援 TCP/UDP/ICMP,ICMP 回程自動匹配類型/代碼。
- 逾時調整:
ip reflexive-list timeout 調整臨時條目老化時間 (預設 300 秒),視應用會話特性調整。
驗證與監控
show ip access-lists internal_ACL ! 查看靜態條目計數
show ip reflexive-list RACL_DMZ ! 查看動態反射條目 (來源/目的 IP/埠/協定/剩餘時間)
clear ip reflexive-list RACL_DMZ ! 強制清除特定 RACL 條目 (測試用)
現代替代方案
現代網路設備 (ASA、Firepower、SRX、NGFW、vRouter) 多內建狀態化防火牆引擎,自動處理會話建立/拆除、回程許可、應用層檢測,無需手工配置 RACL。但在純路由器平台 (ISR/ASR/CSR) 或輕量級邊界無狀態防火牆功能時,RACL 仍是實現「有狀態過濾」的經典且有效方案。
掌握 RACL 配置邏輯,不僅能解決歷史設備防護需求,更能深化對「狀態化檢測」本質的理解:記錄會話狀態、動態開放回程、超時自動收回,這正是所有新一代防火牆的核心基因。
copyright ©
萬盛學電腦網 all rights reserved