Windows 自带的防火墙默认就是「拦入站、放出站」,也就是说外面主动连进来的请求会被挡掉,你自己上网、看视频、玩游戏都不受影响。所以多数人根本不需要动它。真要设置,只有三件事:确认三档配置文件都开着,只在需要被外部访问的程序上放行,公用网络下把「阻止所有传入连接」打开。下面按这个顺序讲,每一步都给设置路径、验证方法和退回去的办法。
一、先搞清你现在连的是哪一档网络
防火墙不是一个开关,而是三套规则。Windows 按你当前连的网络类型自动选一套生效,同样的程序在不同网络下待遇完全不同。
| 配置文件 | 什么时候生效 | 默认态度 |
|---|---|---|
| 域 | 能连上公司域控制器时,由公司统一管理 | 按企业策略,通常较宽松 |
| 专用 | 家里、自己信得过的网络 | 允许被发现、允许共享,中等 |
| 公用 | 咖啡厅、机场、酒店、手机热点 | 最严,禁止被发现,入站一律挡 |
第一次连上一个新网络时,系统会弹窗问你「是否允许这台电脑被其他设备发现」。这一问其实就是在选专用还是公用:在公共场所误选「是」,等于告诉同一个 Wi-Fi 下的陌生人「我的共享是开着的」。
界面里怎么看:Win11 走 设置 → 隐私和安全性 → Windows 安全中心 → 防火墙和网络保护;Win10 走 设置 → 更新和安全 → Windows 安全中心 → 防火墙和网络保护。页面上会列出三档,其中标着「已连接」的那一行就是当前生效的。如果你的家庭网络被认成了「公用」,共享和打印机发现都会不通,改的位置是 设置 → 网络和 Internet → 属性 → 网络配置文件类型 → 专用。想用命令确认,管理员身份打开终端,粘贴:
Get-NetConnectionProfile | Select-Object InterfaceAlias, NetworkCategory
输出里 NetworkCategory 就是当前分类。再查每个配置文件的开关状态和默认动作:
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
正常情况下三行的 Enabled 都应该是 True,DefaultInboundAction 是 Block,DefaultOutboundAction 是 Allow。这一条输出就是你要的「怎么知道设置对不对」。
二、新装软件弹窗,按当前网络勾,别一键全勾
新软件第一次要联网时会弹「Windows 安全警报」,让你给「专用网络」和「公用网络」分别打勾。很多人嫌烦就直接点「允许访问」,两个都勾上。问题是这两个勾是各自独立的:勾了专用不等于勾了公用,反过来也一样;而一个程序一旦被放行到公用网络,你带着笔记本到任何咖啡厅、机场,它都是对外开着的。
记住一条:按这台电脑当前所处的网络勾,不要顺手把公用也勾上。在家用就只勾专用;这个程序只有在咖啡厅也要被人连进来时,才需要勾公用。多数普通软件(浏览器、聊天工具、播放器)压根不需要公用网络这一项。
还要知道这个界面管的是什么:它只管入站,也就是别人能不能主动连到你。程序能不能把数据往外面发,得靠出站规则(第四节)。
点错了也不怕,随时能找回来:防火墙和网络保护 → 允许应用通过防火墙 → 点「更改设置」(需要管理员),在列表里找到那个程序重新打勾;列表里没有就点「允许其他应用」,手动指向它的 exe。经验之谈:程序连不上网,九成先查这里,比重装驱动快得多。
三、给一个程序或端口放行:界面和命令两种做法
碰到「游戏联机进不去房间」「局域网小工具连不上」「本地开发的服务外部访问不到」,就是需要入站放行。图形界面够用:
- 打开 wf.msc(Win+R 输入 wf.msc 回车),进入「高级安全 Microsoft Defender 防火墙」(Win10 里叫「高级安全 Windows Defender 防火墙」)。
- 左侧点「入站规则」,右侧点「新建规则」。
- 类型选「程序」放行某个 exe,或选「端口」放行某个 TCP/UDP 端口。
- 操作选「允许连接」,勾上适用的网络配置文件(拿不准就只勾专用,别勾公用)。
- 起个能看懂的规则名,比如「小工具 8080 入站」,完成。
要放行端口,命令更快。管理员身份打开终端,操作如下:
netsh advfirewall firewall add rule name="Allow TCP 8080" dir=in action=allow protocol=TCP localport=8080
PowerShell 里等价的一条是:
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
两者都要注意范围。不写 profile 等于对所有网络放行,包括你在咖啡厅连上的公用网络。只放行家里和公司的话,PowerShell 里加一个参数:
New-NetFirewallRule -DisplayName "Allow TCP 8080 - 仅专用" -Direction Inbound -Protocol TCP -LocalPort 8080 -Profile Private -Action Allow
怎么知道生效了分两步。先看端口在不在监听:
netstat -ano | findstr :8080
输出里出现 LISTENING 才说明程序本身起来了;连监听都没有,问题就不在防火墙,去查程序为什么没启动。再从另一台机器上测通不通(在本机测 localhost 说明不了任何问题):
Test-NetConnection -ComputerName 192.168.1.50 -Port 8080
看 TcpTestSucceeded 是不是 True。
不想用了怎么退回去:在 wf.msc 里找到这条规则,右键「删除规则」;命令行等价操作是
netsh advfirewall firewall delete rule name="Allow TCP 8080"
或者 PowerShell 的 Remove-NetFirewallRule -DisplayName "Allow TCP 8080"。规则名是自己起的,所以千万别起「test」这种一搜一大把的名字,删除时会连带删掉同名规则。
四、想拦住某个程序往外发数据:出站规则
出站默认是全部放行的,所以「禁止某软件偷偷联网」必须自己加规则。在 wf.msc 里点左侧「出站规则」→「新建规则」→「程序」→ 浏览选中那个 exe → 操作选「阻止连接」,同样注意配置文件范围。
命令行版(PowerShell,管理员):
New-NetFirewallRule -DisplayName "Block MyApp Out" -Direction Outbound -Program "C:\Tools\MyApp.exe" -Action Block
回滚就是删规则:Remove-NetFirewallRule -DisplayName "Block MyApp Out",或者在 wf.msc 里禁用/删除。
这里有一条必须提醒:不要为了「更安全」把出站策略改成默认阻止、再逐条放行。个人电脑上这么干,会连带掐掉系统更新、时间同步、应用商店和一堆后台服务,而它们各自用哪个端口并不是公开可查的,最后的表现就是「莫名上不了网、更新一直失败」。只针对具体某个程序做定向阻止,别动全局策略。
五、公用网络下最有用的一招:阻止所有传入连接
在酒店、机场、展会的 Wi-Fi 上,最省心的做法不是研究规则,而是直接把入站全部切断。位置在 防火墙和网络保护 → 点当前已连接的那一档(比如「公用网络」),把「Microsoft Defender 防火墙」开关保持打开,然后勾上 「阻止所有传入连接,包括位于允许应用列表中的应用」。
勾上之后照样能上网——浏览网页是你主动发起的出站连接,不受影响。会失效的是文件共享、打印机发现、远程桌面、投屏,以及局域网里别人访问你。出差时打开,回办公室或到家第一件事就是取消勾选,否则同事找不到你的共享。共享相关的设置见网络共享设置完整指南;如果共享本身报权限错误,那是另一个话题,见网络共享权限与加密教程。
六、改坏了怎么整体回滚(先备份,再还原)
防火墙规则改乱之后,最常见的现象是「某个软件用不了」和「局域网互访全断」。两种情况下都别急着重装系统,按下面的顺序做。
| 操作 | 后果 | 能不能退 |
|---|---|---|
| 改配置文件类型(专用 ↔ 公用) | 共享、发现、远程桌面状态跟着变 | 随时改回,无副作用 |
| 新增一条入站/出站规则 | 只影响规则覆盖的那个程序或端口 | 删除该规则即恢复 |
| 勾选「阻止所有传入连接」 | 共享、投屏、远程桌面全部失效 | 取消勾选即恢复 |
| 把出站默认动作改成「阻止」 | 系统更新、时间同步、商店大面积异常 | 必须还原默认策略,建议先导出备份 |
| 还原默认设置 / netsh advfirewall reset | 所有自定义规则被清空,含第三方软件加的 | 只能靠事先导出的 .wfw 备份导回 |
所以正确顺序永远是先备份。管理员身份打开终端,导出当前全部规则:
netsh advfirewall export "%userprofile%\Desktop\fw-backup-20260928.wfw"
真需要推倒重来的时候,还原默认策略。界面走 防火墙和网络保护 → 将防火墙还原为默认设置 → 还原默认值;命令行是:
netsh advfirewall reset
PowerShell 里还有一个等价写法:
(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
还原之后如果发现某个软件又不通了,把备份导回来,然后只删掉有问题的那一条:
netsh advfirewall import "%userprofile%\Desktop\fw-backup-20260928.wfw"
最后一句提醒:不要用「关掉防火墙」来解决连接问题。关了之后你既不安全,问题也还在。软件连不上就放行它,配置错了就还原,这两条路都有明确的回滚点。防火墙和系统安全设置是两件事,Windows 安全中心里的其他项目可以看Defender 设置教程;网络本身出问题、连不上网,先照网络重置与适配器修复排查,不要拿防火墙当嫌疑人;远程桌面连不上,多半是它自己的设置问题,见远程桌面使用教程。
七、常见问题
Q:Windows 防火墙到底要不要关?一般不用关。它默认挡的是外部主动连进来,不影响你主动上网。某个软件连不上,就在「允许应用通过防火墙」里放行它,或者给它加一条入站规则,而不是把整个防火墙关掉。
Q:关了防火墙能降游戏延迟吗?基本不会。游戏联机走的是你主动发起的出站连接,默认就是放行的,防火墙没有拦它。延迟高先排查是不是走了无线、路由器有没有其他设备在下载、有没有开 QoS,方向不对的话关防火墙只会白丢一层防护。
Q:重置会不会删掉第三方软件的规则?会。不管是界面上的「还原为默认设置」还是 netsh advfirewall reset,都会清空所有自定义规则,第三方软件自己加的那些也在里面。所以重置前先用 netsh advfirewall export 导出备份。
Q:装了三方杀毒,还要开 Windows 防火墙吗?建议开着。多数杀毒软件是在 Windows 防火墙之上叠加网络防护,而不是替换它,两边同时开着并不冲突。只有杀毒软件明确接管了防火墙功能时,才由它统一管规则。
手动把规则理清到这里就够用了。剩下那部分残留多半是装装卸卸攒下来的——软件早卸载了,规则、临时目录和后台服务还留着,光靠 wf.msc 看不出全貌。这种时候用 WindowsTool 扫一遍系统垃圾和残留项,把没用的临时文件和常驻进程清掉,再回来核对规则会清爽很多。