背景動機
傳統 C/S 架構開發效率高、介面豐富,但直接暴露資料庫連接埠於廣域網極不安全。B/S 架構雖安全,但複雜業務需撰寫中間層,開發效率低。ISA Server 充當 SQL Server 代理與防火牆,可隱藏真實資料庫伺服器,讓外部客戶端像連接本地 SQL Server 一樣透明存取,兼顧開發效率與安全性。
核心架構
- 外部客戶端 → ISA Server 外部 IP (如 203.x.x.x) → ISA 依規則重導 → 內部 SQL Server 內部 IP (如 192.168.1.10)
- 客戶端連接字串指向 ISA 伺服器名稱/IP,不知真實 SQL Server 位址
- ISA 依發布規則、存取規則、封包篩選決定是否轉發
安裝前置作業
ISA Server 2000
- 確認硬體/軟體需求 (Win2K SP1+、雙網卡:內網/外網)
- 設定 TCP/IP:內部/外部 IP、預設閘道、DNS
- 執行 ISA Server Enterprise Initialization 設定陣列模式:
- 僅陣列原則 / 僅企業原則 / 企業+陣列混合
- 允許發布規則 / 封包篩選
- 完成後 Schema 寫入 AD,等待複寫再安裝陣列成員
SQL Server 2000
- 建立專用網域服務帳戶 (非 Administrator)
- 以本機管理員登入,關閉所有 SQL 相關服務 (含 IIS/ODBC)
- 關閉事件檢視器、登錄編輯器
關鍵配置步驟
1. SQL Server 啟用 TCP/IP 並設定 WinSock Proxy
SQL Server Network Utility → 啟用 TCP/IP → WinSock Proxy 索引標籤 → 勾選啟用 → Proxy IP 填 ISA 外部 IP (非內部 IP) → 設定連接埠 (預設 1433)
2. 建立 Wspcfg.ini (SQL Server 機器上)
[sqlservr]
ServerBindTCPPorts=1433
Persistent=1
KillOldSession=1
存放於 sqlservr.exe 同目錄。若連接埠非 1433,同步修改。
3. SQL Server 安裝 Firewall Client
連線 ISA → 找 \\ISA_Server\MSPCLNT 共享 → 執行安裝 → 重啟 SQL Server
4. ISA 設定 LAT (Local Address Table)
ISA 管理主控台 → 網路配置 → LAT → 新增 SQL Server 內部 IP 與 ISA 內部 IP 範圍
5. 建立伺服器發布規則
- 動作:發布伺服器
- 內部伺服器 IP:SQL Server 內部 IP
- ISA Server IP:ISA 外部 IP
- 協定:Microsoft SQL Server (預設 1433)
- 設定存取規則:允許特定用戶/群組/時間
6. 客戶端測試
hosts 檔對應 ISA 外部 IP → ISA 伺服器名稱
ping ISA_Server_Name 確認連通
- SQL 客戶端工具以 ISA 伺服器名稱連線測試
部署完成後,外部應用維持原有 C/S 開發模式,連線字串僅改指向 ISA,即可獲得防火牆保護與連線透明度。生產環境建議啟用 ISA 記錄稽核、定期檢視防火牆日誌。