Windows Server 出廠時防火牆就是開著的,這是正確的預設值:所有從外部嘗試連線的,除非有規則放行,否則一律拒絕。當你執行自己的東西時就需要調整,例如連接埠 8080 上的網頁應用程式,或只允許辦公室存取的服務。本文在 Windows Server 2022 上全部用 PowerShell 完成。每條規則我們都在自家映像上試過,並從第二台機器驗證,所以你可以確定連接埠真的被打開或關閉。
以系統管理員身分開啟 PowerShell。如果還沒做,請先強化 RDP:那篇指南說明如何限制遠端桌面本身。
1. 查看哪些已開啟
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory
在我們新開的伺服器上,三個設定檔(Domain、Private、Public)都已啟用,網路介面卡屬於 Public。DefaultInboundAction 顯示 NotConfigured,也就是 Windows 的預設行為:封鎖輸入、允許輸出。所以真正有作用的是 Public 設定檔的規則。
查看哪些輸入流量被允許:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Group-Object DisplayGroup | Sort-Object Count -Descending |
Select-Object Count, Name -First 8
我們數到 54 條已啟用的輸入規則。大多數屬於 Windows 本身(Core Networking、Cast to Device、mDNS),另外還有三條遠端桌面規則。ping 不在其中。
2. 開放連接埠
假設你的應用程式監聽 TCP 連接埠 8080:
New-NetFirewallRule -DisplayName 'Web app 8080' -Direction Inbound `
-Protocol TCP -LocalPort 8080 -Action Allow
規則一建立就生效。從第二台機器看,連接埠 8080 從被封鎖變成開放,而同樣有程式在監聽的 8081 仍然被封鎖。沒有加 -Profile 的規則適用於所有設定檔,包括 Public。
如果是範圍或清單,用 -LocalPort 8000-8010 或 -LocalPort 80,443。如果是 UDP,修改 -Protocol。
3. 只允許特定位址
大多數服務不需要接受整個網際網路的連線。把規則限制在應該連線的位址:
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10, 198.51.100.0/24
兩種情況我們都測過。-RemoteAddress 填的是別的位址時,我們的測試機器就連不上了;加入它自己的位址後,就連得上。對遠端桌面規則使用同樣的參數,可以讓 RDP 只對你的辦公室開放。如果你家裡的 IP 常常變動,對 RDP 這麼做之前請三思。
4. 啟用 ping
Windows 預設不回應 ping。規則存在,但是關著的:
Enable-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)'
之後我們的伺服器馬上開始回應 ping。用 ping 檢查是否在線的監控工具需要這個。要再次關閉,用相同名稱執行 Disable-NetFirewallRule。
5. 記錄被封鎖的內容
當某個東西連不上、又不知道原因時,讓防火牆把它丟棄的內容記下來:
Set-NetFirewallProfile -Profile Public -LogBlocked True -LogMaxSizeKilobytes 4096
Get-Content C:\Windows\System32\LogFiles\Firewall\pfirewall.log -Tail 20
每次被封鎖的嘗試都會變成這樣一行:
2026-10-25 02:07:25 DROP TCP 198.51.100.7 203.0.113.25 43386 445 60 S 2112839481 0 64240 - - - RECEIVE 4
讀法是:日期和時間、動作、通訊協定、來源位址、你的伺服器位址、來源連接埠、目的連接埠。請耐心等待:Windows 分批寫入記錄,我們的測試紀錄在嘗試後大約一分鐘才出現。4 MB 的上限可以避免檔案無限變大。
6. 備份與清理
進行大幅變更前,先把所有規則存成檔案:
netsh advfirewall export C:\fw-backup.wfw
我們匯出的檔案是 148 KB。netsh advfirewall import C:\fw-backup.wfw 會原封不動地還原這組規則,並取代目前的所有規則。不再需要的規則依名稱刪除:
Remove-NetFirewallRule -DisplayName 'Web app 8080'
如果把自己擋在外面
如果某條規則切斷了你自己的遠端桌面,就開啟控制台面板裡的主控台。它不經過 RDP,你可以登入後執行 Remove-NetFirewallRule 或 Set-NetFirewallRule 復原。
NAT 還是獨立 IP
在 NAT 方案上,網際網路只能經由一個專屬連接埠到達你的伺服器,這個連接埠通往遠端桌面。不論你在 Windows 防火牆放行什麼,其他連接埠從外部都無法存取。要架設網站或在其他連接埠接受連線,你需要獨立 IPv4:Windows Small-IP(4 vCPU、4 GB、50 GB,每月 $28)提供所有連接埠都開放的 IP,這時就由 Windows 防火牆決定。Windows-Small 的 NAT 版每月 $11。四個 Windows 方案都在 Windows VPS 頁面,付款方式為 Base、Ethereum 或 Polygon 網路上的 USDT、USDC 或 ETH。
評論
目前還沒有評論。歡迎成為第一位。