背景痛點
內網主機無公網 IP,無法直接被外網訪問。需在網關/代理伺服器 (擁有公網 IP) 上配置 端口映射 (Port Mapping / DNAT),將公網 IP 特定埠轉發至內網主機對應埠。
核心概念:NAT 與端口映射
| 術語 | 說明 |
| NAT (Network Address Translation) | 網路位址轉換,私有 IP ↔ 公網 IP 互轉 |
| DNAT (Destination NAT) | 目的地址轉換:公網 IP:Port → 內網 IP:Port (端口映射核心) |
| SNAT (Source NAT) | 來源地址轉換:內網 IP → 公網 IP (上網共享核心) |
| PAT (Port Address Translation) | 埠位址轉換:多內網 IP 共用一公網 IP,靠埠區分 |
Windows Server RRAS 實作端口映射 (適用 2003/2008/R2/2012/2016/2019)
前置條件
- 雙網卡:外網卡 (公網 IP 或上層 NAT 後的 IP)、內網卡 (內網閘道 IP,如 192.168.0.1)
- 已安裝 路由與遠端存取 (RRAS) 角色服務
- 內網主機已設定閘道指向此 RRAS 內網卡 IP
步驟 1:啟用 NAT 基礎共享 (SNAT)
- 開啟 路由和遠端存取 管理嵌入式管理單元 (
rrrasmgmt.msc)。
- 右鍵伺服器名稱 → 設定並啟用路由和遠端存取。
- 選 自訂配置 → 勾選 NAT → 完成。
- 在 IPv4 → NAT 右鍵 新增介面 → 選外網卡 → 公用介面連接到網際網路 → 勾選 在此介面上啟用 NAT。
- 同樣新增內網卡介面 → 選 私用介面連接到私用網路。
- 此時內網主機應已能上網 (SNAT 生效)。
步驟 2:配置端口映射 (DNAT)
- 在 NAT 介面下,右鍵外網卡介面 → 屬性 → 服務與連接埠 索引標籤。
- 勾選 特殊連接埠 → 新增。
- 填寫映射規則:
- 輸入連接埠: 公網側埠 (如
8080)
- 私人地址: 內網目標主機 IP (如
192.168.0.2)
- 輸出連接埠: 內網目標埠 (如
80)
- 協定: TCP (Web/FTP/SSH) 或 UDP
- 確定套用。重複新增其他埠 (如 FTP 21、SSH 22、RDP 3389)。

步驟 3:防火牆放行
- Windows 防火牆 → 進階設定 → 輸入規則 → 新增規則 → 連接埠 → TCP → 特定本機連接埠輸入公網側埠 (8080, 21, 22...)。
- 若前端有硬體防火牆/雲端安全組,**必須同步放行對應公網埠**。
驗證測試
# 外網機器測試
curl -I https://公網IP:8080
telnet 公網IP 8080
# 應回應內網 192.168.0.2:80 的服務
常見坑點與解決
| 現象 | 原因 | 解決 |
| 映射不生效 | RRAS 服務未啟動 / NAT 介面未勾選啟用 | 檢查服務狀態、介面屬性「啟用 NAT」 |
| 內網能上網但外網連不進 | Windows 防火牆/前端防火牆擋住公網埠 | 開放公網側輸入埠 |
| FTP 被動模式失敗 | FTP 需大量隨機資料埠,單埠映射不足 | 映射 21 指令埠 + 設定 FTP 伺服器被動模式埠範圍並批次映射 |
| 多公網 IP 映射不同內網主機 | 地址池配置錯誤 | NAT 介面屬性 → 位址集區 新增所有公網 IP,特殊埠對應選擇對應公網 IP |
替代方案:軟體型端口映射工具
- rinetd (Linux/Windows):單一執行檔,配置極簡,效能高。
- ngrok / frp / nps:內網穿透,無公網 IP 也能映射,適合開發測試。
- 路由器/防火牆原生 DNAT:效能最佳、管理集中,首選方案。
總結
Windows RRAS 提供完整 NAT + 端口映射功能,適合已有 Windows Server 做閘道的環境。關鍵在於:先做 SNAT 讓內網通網,再加 DNAT 映射特定埠,最後別忘了雙層防火牆放行。生產環境建議遷移至硬體防火牆/雲端安全組層面實現,效能與穩定性更優。