防火墙为什么会拦你的应用
防火墙是有状态的:浏览器向外连接网站时,返回的流量会被识别并自动放行。被丢弃的是内部没人主动请求的流量——不请自来的连接。所以大多数应用永远不需要例外:它们往外打电话,而不是守着听。
真正守着听的少数派才会被拦:Minecraft 或 Terraria 服务器、Plex 媒体库、远程桌面、跑在 3000 端口的本地开发服务器、SMB 文件共享。而且拦截是分配置文件的:Windows 为域、专用、公用网络各存一套规则,并对公用网络——咖啡馆、机场——刻意严格得多。
- 主机或加入使用直接 IP 连接的局域网游戏
- 从你的电脑上串流 Plex、Jellyfin 等媒体服务器
- 远程桌面,让另一台电脑能连到你这台
- 本地开发服务器——Node、IIS Express、本地 FTP 或数据库
- 家庭网络中的文件和打印机共享
- 想让局域网内能访问到的自建服务软件
在防火墙中放行应用
打开 Windows 安全中心(搜索它,或点任务栏托盘里的盾牌图标),进入“防火墙和网络保护”,点击“允许应用通过防火墙”。在弹出的经典对话框里点“更改设置”——这需要管理员权限——然后“允许其他应用”,“浏览”找到程序的 .exe 文件并点“添加”。回到列表,在你的应用那一行勾上“专用”列的框;“公用”列只有真有需要才勾。
网络类型比很多人以为的更重要。专用指家庭或可信网络;公用指机场、酒店 Wi-Fi 等和陌生人共用的网络。一个在家里需要被访问的应用,几乎不需要在咖啡馆也能被访问。拿不准就只勾专用——规则以后随时可以回来放宽。
清理规则,以及给命令行爱好者
不再使用的规则就该删:卸载应用后,它的条目会永远留在允许列表里,而一条指向已不存在 .exe 的僵尸规则是虽小却真实的攻击面。在同一个对话框里选中应用,点“删除”。如果局面已经彻底混乱,“防火墙和网络保护”页面有恢复默认按钮,会清空所有自定义规则——包括你想留的那些,所以把它当最后手段;也永远不要图省事关掉防火墙。
脚本化配置一行就够。在提升权限的 PowerShell 里:New-NetFirewallRule -DisplayName "My App" -Direction Inbound -Program "C:\Program Files\MyApp\app.exe" -Action Allow -Profile Private。旧式的 netsh advfirewall firewall add rule name="My App" dir=in action=allow program="C:\Program Files\MyApp\app.exe" enable=yes profile=private 效果相同。两者创建的规则和对话框里的一模一样,之后用 Remove-NetFirewallRule -DisplayName "My App" 即可删除。
常见问题与解答
Windows 从来没问过,为什么我的应用还是被防火墙拦了?
有的应用会静默装好自己的规则,有的从不触发提示,而提示本身也容易被顺手点掉。这时就通过“允许应用通过防火墙”手动添加那个 .exe。
应该在公用网络上允许应用吗?
原则上不要。公用面向与陌生人共享的网络;只有刻意想让它从任何地方都能访问的应用,才勾公用。
Windows 防火墙会拦截出站连接吗?
不会——出站流量默认放行。要掐断某个应用的联网,需要自建出站规则。
继续阅读
联系我们: [email protected]