为什么做这个
起因很简单:我需要在家里的Windows运行一些服务,需要做内网穿透,为了安全考虑得控制端口。
然后我就打开了那个熟悉的界面——控制面板 → Windows Defender 防火墙 → 高级设置。
怎么说呢,这个 UI 大概是上个世纪的设计遗产:
- 规则列表是一个没有搜索、没有筛选的长列表,几百条规则里找一条全靠肉眼
- 新建规则要连点五六个"下一步"的向导,开一个端口像在走流程审批
- 想改个规则?右键 → 属性 → 弹出一个老式对话框 → 改完点确定
- 想临时禁用一条规则试试?又是右键 → 属性 → 找到复选框……
我不是不会用,我是用烦了。
于是周末花了点时间,vibe coding 了一个小工具。
做出来长这样
主界面 — 规则总览
所有入站/出站规则一目了然。表格展示,该有的信息都有:名称、方向、动作、协议、本地端口、远程端口、程序路径、状态。
再也不用在那个老式列表里来回滚动了。
智能搜索 & 筛选
顶部有搜索框,可以按名称、端口、地址快速搜索。还有协议、动作、状态的下拉筛选器。
比如想找所有开放 80 端口的规则?输入 80,秒出结果。
添加 / 编辑规则
不用再走那个五步向导了。一个表单页面,填完点保存,搞定。
明暗主题
支持深色和浅色主题切换。深色模式下长时间盯着看也不会太累。
程序路径显示
如果规则限定了某个程序(比如只允许 Chrome 联网),会直接显示程序文件名。鼠标悬停能看到完整路径,点击一下就能打开文件所在的目录,找程序不用再满硬盘翻了。
常用端口管理
新增了一个「常用端口」页面,一眼就能看到 Windows 常用服务的状态:
- RDP 远程桌面跑在哪个端口?是默认的 3389 还是改过的?
- SMB 文件共享服务有没有在运行?
- WinRM 远程管理是否可用?
每个服务都会显示实际监听的端口,如果和默认端口不一样会特别标出来。
端口修改
嫌 RDP 默认端口不安全?想改就改。在常用端口页面点编辑按钮,输入新端口,服务会自动重启生效。目前支持 RDP、WinRM、SMB 三个服务的端口修改。
列宽拖拽(性能优化)
表格列宽可以拖拽调整,端口地址太长看不全?拉宽一点就好。而且做了性能优化——拖拽的时候不卡了。原理是拖拽开始时缓存 DOM 引用,拖拽过程中直接操作缓存,避免每帧重复查询。
搜索优化
搜索也做了优化。第一次搜索时会缓存全部规则,之后再搜索就直接从缓存里过滤,不用每次都重新请求,响应速度快了很多。
中文适配
用中文 Windows 的同学应该遇到过 netsh 输出乱码的问题。这个工具做了 GBK 编码适配,中文规则名不会变成火星文。
技术方案
没什么复杂的,就是 Wails v2 + Go + Vue 3:
- Go 后端调
netsh advfirewall操作防火墙,加了verbose参数获取程序路径 - 常用端口管理用
tasklist+netstat检测服务状态和实际监听端口 - Vue 3 + Naive UI 做界面
- Wails 打包成单个 exe,十几 MB,拷贝即用
选 Wails 没选 Electron,纯粹是因为一个防火墙管理工具打包 200MB 太离谱了。
下载
GitHub 开源,MIT 协议:
Releases 页面下载最新版,解压双击就能用。
启动时会请求管理员权限,防火墙操作需要提权,正常现象。
总的来说就是 vibe coding 的产物,解决自己的一个小痛点。如果你也受够了控制面板那个界面,可以试试。