gura跳舞
首页网文心情网络杂谈原创 自建 VPN 梯子 Windows 全局代理服务器项目 实现VPN 梯子 网络代理自由

原创 自建 VPN 梯子 Windows 全局代理服务器项目 实现VPN 梯子 网络代理自由

分类网络杂谈时间2026-10-31 10:46:33发布heikeyh浏览13
导读:起因是 想打开谷歌查个东西什么的,太困难了。很多网站直接就墙了。正好自己有台香港 VPS想着自己搭建一个VPN 流量随便用 所以诞生了这个项目作用:项目分为TUNProxy.Client端 和 TUNProxy.Server端 在服务器上运行TUNProxy.Server端 设置...

起因是 想打开谷歌查个东西什么的,太困难了。很多网站直接就墙了。

正好自己有台香港 VPS想着自己搭建一个VPN 流量随便用 所以诞生了这个项目

作用:项目分为TUNProxy.Client端 和 TUNProxy.Server端

           在服务器上运行TUNProxy.Server端 设置自定义端口/IP(注意服务器/防火墙 必须放行端口)

           在本地运行TUNProxy.Client端 填写服务器IP 自定义端口/密码    连接

           即可实现本地全局流量由服务器代理 PS:目前升级版支持代理虚拟机/模拟器 等全部网络

de331f2f-7c89-4d8d-a509-7ae36c0e0264.png

6c04a251-4d96-4bf3-a3f2-e51977a24d0c.png




开发文档:

# 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


成品应用.7z
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载
TUN项目全套源码.7z
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载

Hackyh'Blog版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

精品软件
VMProtect_Ultimate_v3.8.4 为软件添加保护和授权验证

游客 回复需填写必要信息
↑
召唤伊斯特瓦尔