# HypervPortProxy **Repository Path**: cuianbing/hyperv-port-proxy ## Basic Information - **Project Name**: HypervPortProxy - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-28 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows 端口转发工具(PortProxyGUI) 单文件图形界面 TCP 端口转发工具,用于替代 `netsh interface portproxy`。运行后自动驻留系统托盘、并打开浏览器管理界面,可视化增删改转发规则,支持开机自启。 - 单个 exe,无需安装任何依赖(Go 编译,自带内置 Web 界面) - 后台驻留系统托盘,不占任务栏窗口,右键即可查看状态 / 打开界面 / 退出 - 支持 **TCP 与 UDP** 双协议转发,可视化选择协议 - 支持多条规则同时转发,实时显示连接数与流量统计 - 规则持久化保存,重启程序/开机自启后自动恢复 - **自动导入系统 netsh 规则**:首次启动时读取 `netsh interface portproxy` 已有规则,以 `[系统]` 前缀展示,默认停用避免端口冲突 ## 快速开始 1. 双击 `PortProxyGUI.exe` 2. 浏览器自动打开管理界面(地址 `http://127.0.0.1:16800`,仅本机可访问) 3. 点击右上角「+ 添加规则」,例如:监听 `10.234.112.106:5600` → 目标 `172.19.131.75:5600` 4. 保存后规则立即生效,表格中显示「运行中」 ## 界面功能 | 功能 | 说明 | |---|---| | 启动 / 停止 | 单条规则随时启停,不删除配置 | | 编辑 / 删除 | 修改转发目标或移除规则 | | 活跃连接 / 累计连接 / 流量 | 每 2 秒自动刷新 | | 开机自启 | 注册到当前用户启动项(HKCU\...\Run),无需管理员权限;开机后以后台方式运行所有已启用规则,不弹界面 | | 防火墙放行 | 一键为所有已启用规则的监听端口添加入站放行(弹出 UAC 确认) | | 日志 | 右侧抽屉实时查看运行日志,同时写入日志文件 | | 退出 | 停止全部转发并退出程序 | ## 系统托盘 程序启动后驻留系统托盘(任务栏右下角),无控制台窗口、无任务栏按钮。右键托盘图标弹出菜单: | 菜单项 | 作用 | |---|---| | 状态: 运行中 X/Y 条规则 | 只读状态条,每 2 秒自动刷新 | | 打开管理界面 | 在默认浏览器打开 `http://127.0.0.1:16800` | | 开机自启 | 复选框,切换开机是否随系统启动(写 HKCU 注册表) | | 退出 | 停止全部转发规则并完全退出程序 | > 提示:重复双击 exe 不会启动第二个实例,而是直接打开已有实例的管理界面。 ## 开机自启说明 - 在界面勾选「开机自启」即可(写注册表 `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`)。 - 自启时程序以 `-autostart` 参数后台运行:加载全部已启用规则、不打开浏览器。 - 要调出界面,再次双击 exe 即可。 ## 防火墙说明 - 监听地址为 `127.0.0.1`(仅本机)时不需要放行防火墙。 - 监听 `0.0.0.0` 或具体网卡 IP 时,Windows 防火墙可能拦截入站连接: - 首次监听时系统弹出防火墙询问 → 勾选「专用网络」并允许;或 - 在界面点「防火墙放行」按钮(为所有已启用规则添加 `PortProxyGUI-端口号` 的入站规则,需在 UAC 弹窗点「是」);或 - 管理员 CMD 手动执行:`netsh advfirewall firewall add rule name="PortProxyGUI-5600" dir=in action=allow protocol=TCP localport=5600` ## 配置文件 | 文件 | 路径 | |---|---| | 配置 | `%APPDATA%\PortProxyGUI\config.json` | | 日志 | `%APPDATA%\PortProxyGUI\logs.txt`(超过 5MB 自动重置) | ## 命令行参数(可选) ``` PortProxyGUI.exe # 正常运行,打开管理界面 PortProxyGUI.exe -autostart # 后台运行(开机自启用) PortProxyGUI.exe -port 18080 # 自定义管理界面端口 PortProxyGUI.exe -config D:\x\config.json # 指定配置文件路径 ``` ## 常见问题 - **转发不生效?** 依次检查:① 监听地址是否被防火墙拦截(见上);② 目标地址/端口是否可达;③ 监听端口是否被其他程序占用(规则会显示「错误」并附原因);④ 服务器是否开启 IP 路由(同网段直连一般不需要)。 - **UDP 转发注意什么?** UDP 无连接,本工具按客户端源地址维护会话,5 分钟无活动自动清理;首次包到达时才连接后端,不影响即时性。 - **以前手动用 netsh 配的规则在哪?** 启动时会自动读取 `netsh interface portproxy show all`,以 `[系统]` 前缀导入到表格里,默认停用。要由软件接管某条规则,先在软件里删除它(或手动 `netsh interface portproxy delete v4tov4 listenaddress=... listenport=...`),再重新添加并启用。 - **被杀毒软件误报?** Go 编译的单文件程序偶有误报,加入信任/白名单即可。 - **怎么开机不弹浏览器?** 这是正常的——自启模式是后台静默运行,双击 exe 才会打开界面。 ## 自行构建 ```bash # 源码在 portproxy-gui/ 目录,需要 Go 1.23+ go build -trimpath -ldflags "-s -w -H windowsgui" -o PortProxyGUI.exe ./cmd/portproxy-gui ``` ## 目录结构 ``` portproxy-gui/ ├── PortProxyGUI.exe # Windows x64 成品(GUI 子系统,无控制台窗口) ├── cmd/ │ └── portproxy-gui/ │ ├── main.go # 入口:flag、单实例、组装、托盘消息循环 │ └── web/ # 内置管理界面(embed 进二进制) │ ├── index.html │ ├── style.css │ └── app.js ├── internal/ │ ├── app/ # 核心业务:规则管理、配置持久化、日志、生命周期 │ │ ├── app.go │ │ └── rule.go │ ├── proxy/ # TCP 双向转发与连接统计 │ │ └── proxy.go │ ├── api/ # 本地 HTTP 管理接口 │ │ └── api.go │ ├── autostart/ # Windows 开机自启(HKCU 注册表) │ │ └── autostart.go │ └── tray/ # 系统托盘(图标、菜单、状态轮询) │ ├── tray.go │ └── icon.go ├── go.mod └── go.sum ```