首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Linux/CentOS Oracle 10g 監聽器 IP 存取控制:sqlnet.ora 白名單/黑名單配置與驗證

     編輯:Oracle 教學

Oracle 監聽器層級 IP 存取控制:sqlnet.ora 實戰配置

在 Linux/CentOS 環境下,透過修改 $ORACLE_HOME/network/admin/sqlnet.ora 實現監聽器層級的 IP 白名單/黑名單控制,是保護資料庫免受未授權連線的輕量級方案。適用於 Oracle 9i 及以上版本,僅對 TCP 協議生效。

一、配置步驟

1. 定位或建立 sqlnet.ora


cd $ORACLE_HOME/network/admin
# 若不存在則建立
vi sqlnet.ora

2. 寫入存取控制參數


# 啟用節點驗證
TCP.VALIDNODE_CHECKING = YES

# 白名單:允許連線的 IP(支援 CIDR、主機名)
TCP.INVITED_NODES = (192.168.100.252, 192.168.100.253, 10.0.0.0/24)

# 黑名單:明確拒絕的 IP(白名單優先級高於黑名單)
TCP.EXCLUDED_NODES = (192.168.100.222, 192.168.100.232)

3. 重啟監聽器生效


lsnrctl stop
lsnrctl start

二、驗證測試

  • 白名單 IP 客戶端:正常連線。
  • 黑名單/非名單 IP 客戶端:報錯 ORA-12537: TNS:connection closed 或 ORA-12547: TNS:lost contact。
  • 伺服器本地連線(Bequeath 協議):不受影響,繼續正常工作。

三、關鍵注意事項

  1. 參數大小寫不敏感,習慣大寫。
  2. 建議僅設白名單(INVITED_NODES),採用「預設拒絕」原則,避免 IP 變更導致黑名單失效。
  3. 需重啟監聽器 才生效,動態修改不支援。
  4. 僅限 TCP 協議,IPC、SDP、TCPS 不受控。
  5. 9i 以前版本 使用 protocol.ora。
  6. 不支援用戶名/角色過濾,純網路層 IP 過濾。
  7. 叢集/RAC 環境:每個節點的 sqlnet.ora 均需配置,SCAN Listener 同樣適用。

四、進階替代方案

方案優點缺點
sqlnet.ora (本文)簡單、無額外元件、監聽器層面攔截僅 IP 過濾、需重啟監聽、單點配置
Oracle Connection Manager (CMAN)支援防火牆代理、連線多工、存取控制規則豐富、高可用需額外部署維護、配置複雜
Database Vault / VPD資料庫層面細粒度權限、上下文感知授權成本高、實施複雜
防火牆/安全群組網路層隔離、與資料庫無關無法識別應用層邏輯、維護成本高

五、故障排查

  • 配置後無法連線:確認 TCP.VALIDNODE_CHECKING=YES、IP 格式正確(無空格、逗號分隔)、監聽器已重啟。
  • 本地連線正常但遠程失敗:符合預期,本地走 Bequeath 不經監聽器。
  • 日誌分析:$ORACLE_HOME/network/log/listener.log 記錄拒絕連線詳情(TNS-12537)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved