Windows Server 出厂时防火墙就是开着的,这是正确的默认设置:凡是从外部尝试连接的,除非有规则放行,否则一律拒绝。当你运行自己的东西时就需要调整,比如端口 8080 上的 Web 应用,或者只允许办公室访问的服务。本文在 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。
评论
暂无评论。来做第一个吧。