原创 自建 VPN 梯子 Windows 全局代理服务器项目 实现VPN 梯子 网络代理自由
起因是 想打开谷歌查个东西什么的,太困难了。很多网站直接就墙了。
正好自己有台香港 VPS想着自己搭建一个VPN 流量随便用 所以诞生了这个项目
作用:项目分为TUNProxy.Client端 和 TUNProxy.Server端
在服务器上运行TUNProxy.Server端 设置自定义端口/IP(注意服务器/防火墙 必须放行端口)
在本地运行TUNProxy.Client端 填写服务器IP 自定义端口/密码 连接
即可实现本地全局流量由服务器代理 PS:目前升级版支持代理虚拟机/模拟器 等全部网络
开发文档:
# TUNProxy — Windows 全局代理(自建 VPN)
客户端/服务端架构:Client 在本地创建 TUN 虚拟网卡接管**全部流量**,经 AES-GCM 加密隧道发往 Server;Server 在服务器端通过 Wintun + WinNAT 转发到互联网。
```
本机 Client 服务器 Server
┌─────────────────────┐ ┌──────────────────────┐
│ 所有程序 → Wintun 虚拟网卡 │ AES-GCM 加密 │ 解密 → Wintun → WinNAT │──→ 互联网
│ (0.0.0.0/1 + 128.0.0.0/1) │ ←───TCP 隧道───→ │ (NAT 出口) │
└─────────────────────┘ └──────────────────────┘
```
## 项目结构
| 项目 | 类型 | 说明 |
|------|------|------|
| `src/TUNProxy.Common` | 类库 | wintun 互操作、帧协议(AES-GCM)、IP 包解析 |
| `src/TUNProxy.Client` | WinForms GUI | 输入服务器 IP/端口/密钥,连接/断开按钮,流量统计,日志 |
| `src/TUNProxy.Server` | WinForms GUI | 端口/密钥输入 + 启动/停止监听按钮 + 流量统计 + 日志(支持多客户端) |
## 部署步骤
### 1. 编译(本地或服务器都执行)
```powershell
cd TUN项目
powershell -ExecutionPolicy Bypass -File setup-wintun.ps1 # 下载 wintun.dll(已执行过则跳过)
dotnet build -c Release
```
或用 Visual Studio 2026 打开 `TUNProxy.sln` 直接生成。
### 2. 服务器端(香港服务器,Windows)
1. 把 `src/TUNProxy.Server/bin/Release/net8.0-windows/win-x64/publish/` 整个目录拷到服务器(自包含单文件,**服务器无需安装 .NET**)
2. **以管理员身份**运行 `TUNProxy.Server.exe`(或双击项目根目录的 `启动服务端.bat`)
3. 在 GUI 窗口中设置监听端口(默认 5555)和共享密钥 → 点【启动监听】
- 创建 `TUNProxy-Server` 虚拟网卡(10.10.0.1/24,MTU 1400)
- 创建 WinNAT(`New-NetNat`,把 10.10.0.0/24 NAT 到物理出口)
- 放行防火墙 TCP 端口
- 启动内置 DNS 转发器(10.10.0.1:53 → 8.8.8.8 / 1.1.1.1 / 223.5.5.5)
### 3. 客户端(本地 Windows)
1. 把 `src/TUNProxy.Client/bin/Release/net8.0-windows/win-x64/publish/` 拷到本机任意目录
2. **以管理员身份**运行 `TUNProxy.Client.exe`(或双击 `启动客户端.bat`)
3. 填入服务器 IP、端口、密钥 → 点【连接】
4. 状态栏显示"已连接"后,本机所有流量(TCP/UDP/DNS)即经服务器转发;点【断开】自动恢复
## 工作原理要点
- **全局接管**:客户端添加 `0.0.0.0/1` 与 `128.0.0.0/1` 两条路由指向虚拟网卡(比默认路由更精确,覆盖全部 IPv4 地址,且不破坏原默认路由)
- **防回环**:到服务器 IP 的 /32 主机路由锁定走物理网卡,隧道流量不会被 TUN 再捕获
- **DNS**:客户端 DNS 指向 10.10.0.1(服务端虚拟网卡 IP),查询经隧道由服务端 DNS 转发器应答,不走本地运营商
- **加密**:每帧 AES-256-GCM(密钥 = SHA256(口令)),type 字节作为 AAD 防篡改
- **多客户端**:服务端按 `10.10.0.10~250` 顺序分配虚拟 IP,按目标 IP 分发回包
## 故障排查
| 现象 | 处理 |
|------|------|
| 启动报"无法创建 Wintun 适配器" | 确认 exe 同目录有 `wintun.dll`;确认以管理员运行 |
| 连接超时 | 检查服务器安全组/防火墙放行 TCP 端口;密钥是否一致 |
| 能连上但上不了网 | 服务器执行 `Get-NetNat` 确认 WinNAT 存在;若装了 WSL/Hyper-V 可能占用 NAT,需 `Get-NetNat \| Remove-NetNat` 后重启服务端 |
| 断开后无法上网 | 以管理员执行 `route delete 0.0.0.0 mask 128.0.0.0` 和 `route delete 128.0.0.0 mask 128.0.0.0` |
| 模拟器(MuMu/雷电/夜神等)流量不走代理 | 见下方「模拟器流量支持」;确认连接时日志是否出现"检测到模拟器/虚拟机网卡"并成功重启 NAT 服务 |
## 模拟器流量支持(v3 新增)
**问题**:模拟器(MuMu、雷电、夜神、逍遥、BlueStacks 等)本质是"虚拟机 + Windows NAT":
虚拟机流量由 Windows 的 WinNAT / ICS 服务做地址转换后转发。这两个服务启用时会把
"公网出口网卡"**固定**为物理网卡,之后客户端新增的 `0.0.0.0/1 + 128.0.0.0/1` 路由
不会让它重新选路——于是本机流量走隧道、模拟器流量仍直连。
**方案**:客户端连接时自动检测模拟器/虚拟机网卡(MuMu、LDPlayer、夜神、逍遥、
vEthernet/Hyper-V、VMware、VirtualBox、WSL 等),检测到即重启 `winnat` / `SharedAccess`
服务,强制其按当前路由表重新选择出口(此时出口为 TUN 虚拟网卡),模拟器流量随即被代理。
断开时会再次重启以恢复原状。重启期间模拟器会短暂断网几秒,属正常现象。
**注意事项**:
-模拟器网络设置必须为 **NAT / 网络地址转换** 模式;若开了 **桥接(Bridge)模式**,
虚拟机数据在二层直接进物理网卡,完全绕过系统路由,任何路由型代理都无法接管,需改回 NAT。
- 个别模拟器若重启 NAT 后仍未生效,可手动在模拟器内开关一次飞行模式/重启模拟器网络。
- 服务端无需任何改动。
## 已知限制(可继续迭代)
- 跨境链路建议在服务器开启 BBR;若 UDP 类应用(游戏)丢包,可后续加 TCP-over-TCP 缓冲优化
- DNS 使用 Windows"智能多宿主名称解析"时,极少数场景可能仍优先查询物理网卡 DNS(可加 DNS 拦截彻底解决)
- 隧道为裸 TCP,生产环境建议升级为 TLS 封装或参考 WireGuard 协议
- 默认演示密钥仅供测试,正式使用务必自定义强密钥
## 命令行参数(v2 新增)
两端都支持自动运行模式,方便脚本化 / 开机自启 / 自动化测试:
```bat
:: 服务端:启动后自动开始监听
TUNProxy.Server.exe 5555 mima123
:: 客户端:启动后自动连接
TUNProxy.Client.exe 127.0.0.1. 8443 mima123
```
不带参数时就是原来的 GUI 手动模式。
## 日志文件(v2 新增)
服务端在 exe 同目录写 `TUNProxy.Server.log`(UTF-8 BOM),记录启动各阶段、客户端接入/断开、异常堆栈。
远程服务器出问题时,直接把这个文件发出来即可定位,不用截图。
## v2 修复内容
- 服务端防火墙同时放行监听端口与隧道网段 `10.10.0.0/24`(否则隧道内 DNS/UDP 53 被拦,表现为"网页能开但 DNS 超时")
- WinNAT 创建前自动清理冲突的 NetNat(WSL/Hyper-V 残留),并改用 powershell 绝对路径(部分服务器 PATH 里没有 powershell)
- 客户端连接期间临时禁用物理网卡 IPv6,断开时恢复(防止 IPv6 流量绕过隧道泄漏)
- 服务器与本机同网段时(本地虚拟机测试场景)不再添加错误的防回环 /32 路由
- 双向 MSS 钳制(1300),避免跨境链路大包被丢导致的"小包通、网页超时"
获取成品:https://wzyp.cn/item/x9vcze
项目全套源码:https://wzyp.cn/item/k199cp
Hackyh'Blog版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!


