personal-edge-proxy:个人网络代理的工程化终极形态

> 一个整合 Xray、Hysteria2、REALITY Vision、WARP 与静态 SOCKS5 路由的多入站多出站个人代理方案。 ## 当你的代理脚本从 50 行膨胀到 500 行时,你需要一个工程化方案 如果你是一个自建代理的重度用户,大概率经历过这样的痛苦: - 手写 `xray config.json`,每次改端口、换协议都要小心翼翼地编辑 JSON,稍有不慎就语法错误; - 为了绕过 ChatGPT 或 Netflix 的区域限制,手动维护一堆路由规则,结果规则越加越多,冲突越来越严重; - 想同时用 Hysteria2 的 UDP 加速和 Xray 的 REALITY 伪装,但两者配置格式完全不同,只能开两个进程分别管理; - 偶尔需要走 WARP 出口来解锁某些服务,但 WARP 的 WireGuard 配置和主代理配置混在一起,逻辑混乱; - 更别提那些临时性的需求——某个程序需要走固定 SOCKS5 出口,你只能再开一个端口,手动指定 `socks5://127.0.0.1:1080`。 **personal-edge-proxy** 正是为了解决这些痛点而生的。它不是又一个代理客户端,而是一个**个人代理基础设施的完整配置模板**——一个经过实战检验的、支持多入站多出站、内置路由策略、可扩展、可维护的工程化方案。 项目地址:[https://github.com/yding-git/personal-edge-proxy](https://github.com/yding-git/personal-edge-proxy) --- ## 核心架构:一个配置,五个维度 这个项目的核心思路是:**用一套统一的配置框架,管理所有代理入口和出口**。它把代理网络抽象为五个维度: 1. **入站(Inbound)**:你如何连接代理(本地端口、协议类型) 2. **出站(Outbound)**:代理如何连接远程服务器(协议、认证、伪装) 3. **路由(Routing)**:流量如何从入站分配到出站(基于域名、IP、进程等) 4. **出口策略(Fallback)**:当主出口不可用或需要特定出口时,如何切换 5. **辅助工具(WARP / SOCKS5)**:额外的出口选项,用于特殊场景 ### 入站:不止是 HTTP 和 SOCKS5 大多数代理工具只提供 SOCKS5 和 HTTP 入站。这个项目提供了**四种入站方式**: - **SOCKS5 入站**(端口 1080):通用入口,适合大多数应用 - **HTTP 入站**(端口 8080):用于不支持 SOCKS5 的老旧应用 - **混合入站**(端口 1081):同时监听 SOCKS5 和 HTTP,自动识别协议 - **透明代理入站**(端口 12345):用于路由器或网关级透明代理 这意味着你可以在同一台机器上,同时为桌面浏览器、命令行工具、Docker 容器甚至局域网内其他设备提供服务,而无需为每种场景单独配置。 ### 出站:Xray + Hysteria2 + REALITY + WARP 全家桶 出站是重头戏。这个项目支持四种出站协议,每种都有明确的用途: | 出站协议 | 用途 | 特点 | |---------|------|------| | **Xray (VMess/VLESS)** | 主力代理 | 稳定、兼容性好、支持 TCP/WS/gRPC | | **Hysteria2** | 高速传输 | 基于 QUIC,弱网环境表现极佳 | | **REALITY Vision** | 高隐匿代理 | 伪装成真实网站 TLS 流量,防主动探测 | | **WARP** | 辅助出口 | Cloudflare 的免费 VPN,用于解锁区域限制 | 更妙的是,这些出站可以**同时启用**,并通过路由规则按需选择。比如: - 普通网页浏览 → 走 Xray(稳定) - 视频流媒体 → 走 Hysteria2(速度快) - 需要高匿名的场景 → 走 REALITY Vision(防检测) - 被墙的特定服务 → 走 WARP(绕道 Cloudflare) ### 路由:规则引擎,而非简单的 if-else 这个项目的路由配置不是简单的"域名列表 → 出口",而是一个**完整的规则引擎**。它支持: - **域名匹配**:`domain:openai.com` → 走 WARP - **IP 段匹配**:`ip:192.168.0.0/16` → 直连 - **进程匹配**:`process:firefox` → 走特定出口 - **地理匹配**:`geoip:cn` → 直连 - **正则匹配**:`regexp:.*\.netflix\.com` → 走 Hysteria2 规则按顺序匹配,命中即停止。这种设计让复杂的路由策略变得清晰可维护。 --- ## 安装与快速上手 ### 准备工作 - 一台境外 VPS(推荐 1GB 内存以上) - 一个域名(用于 TLS 伪装,非必须但强烈推荐) - 服务器上已安装 Docker 或可直接运行二进制文件 ### 安装步骤 **方式一:Docker 一键部署(推荐)** bash # 克隆项目 git clone https://github.com/yding-git/personal-edge-proxy.git cd personal-edge-proxy # 复制配置模板 cp .env.example .env # 编辑 .env 文件,填入你的服务器 IP、域名、UUID 等 vim .env # 启动所有服务 docker-compose up -d **方式二:手动安装(适用于非 Docker 环境)** bash # 安装 Xray-core bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install # 安装 Hysteria2 curl -fsSL https://get.hy2.sh/ | bash # 复制项目配置文件 cp -r config/ /etc/xray/ cp -r hysteria/ /etc/hysteria/ # 启动服务 systemctl restart xray systemctl restart hysteria ### 基本配置示例 项目根目录下的 `.env` 文件是核心配置入口。以下是一个典型配置: bash # 服务器信息 SERVER_IP=your.server.ip DOMAIN=your.domain.com # 入站端口 SOCKS5_PORT=1080 HTTP_PORT=8080 MIXED_PORT=1081 TRANSPARENT_PORT=12345 # Xray 配置 UUID=$(cat /proc/sys/kernel/random/uuid) WS_PATH=/ws # Hysteria2 配置 HY2_PASSWORD=your_strong_password HY2_PORT=443 # REALITY 配置 REALITY_SERVER=www.microsoft.com REALITY_PORT=8443 # WARP 配置 WARP_LICENSE=your_license_key_optional ### 客户端连接示例 配置完成后,你的客户端连接方式如下: **SOCKS5 入站**(适用于 Clash、V2rayN 等): socks5://127.0.0.1:1080 **HTTP 入站**(适用于 curl、wget 等): bash curl -x http://127.0.0.1:8080 https://api.ipify.org **透明代理**(适用于 Linux 路由器): bash iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 12345 --- ## 深度解析:核心亮点 ### 1. 真正的多入站多出站,而非"伪多" 很多工具号称支持多出站,但实际上只是简单的"主备切换"。这个项目的多出站是**同时在线、按需路由**的。你可以通过一条路由规则,让 `netflix.com` 的流量走 Hysteria2,让 `openai.com` 的流量走 WARP,让其他流量走 Xray——所有出口同时保持连接,互不干扰。 ### 2. 路由规则的可读性与可维护性 项目使用 YAML 格式的路由规则(而非 JSON),这让配置变得极其清晰。以下是一个真实的路由配置片段: yaml routing: rules: # 直连国内网站,减少延迟 - type: geoip matcher: cn outbound: direct # OpenAI 相关域名走 WARP,解锁区域限制 - type: domain matcher: ["openai.com", "chatgpt.com", "anthropic.com"] outbound: warp # 流媒体走 Hysteria2,获得更好的带宽 - type: domain matcher: ["netflix.com", "youtube.com", "disneyplus.com"] outbound: hysteria2 # 其余所有流量走 Xray REALITY - type: default outbound: reality 这种配置方式,即使三个月后回来修改,也能一眼看懂每条规则的意图。 ### 3. 静态 SOCKS5 路由——被忽视的杀手锏 项目支持**静态 SOCKS5 出站**,这意味着你可以将某个入站端口的所有流量,固定转发到另一个 SOCKS5 代理。这个功能在以下场景极其有用: - **公司网络**:你的电脑通过公司代理上网,但某些开发工具需要直连 - **多级代理**:本机代理 → 中转服务器 → 目标服务器 - **临时分流**:某个程序需要固定 IP 出口,直接指定一个 SOCKS5 端口即可 配置方式: yaml static_socks5: enabled: true listen_port: 2080 upstream: "socks5://user:pass@your-upstream-proxy:1080" ### 4. 对 REALITY Vision 的原生支持 REALITY Vision 是 Xray 社区的最新成果,它让代理流量伪装成访问真实网站(如 `microsoft.com`)的 TLS 流量。这个项目内置了完整的 REALITY 配置模板,包括: - 自动生成密钥对 - 目标网站指纹伪装 - 流量行为模拟(模拟 TLS 1.3 会话) 这意味着你的代理流量在深度包检测(DPI)下,看起来就是普通的 HTTPS 访问,几乎无法被识别。 ### 5. WARP 集成——零成本解锁区域限制 Cloudflare WARP 是免费服务,但手动配置 WireGuard 协议非常繁琐。这个项目封装了 WARP 的完整配置流程,你只需要在 `.env` 中填入(可选)的 WARP 许可证密钥,即可自动完成注册和密钥配置。 --- ## 适用场景:谁需要这个项目? ### 1. 重度自建代理用户 如果你已经厌倦了"一个工具只解决一个问题"的碎片化现状,想要一个统一的、可维护的代理基础设施,这个项目就是为你准备的。 ### 2. 跨境开发者 / 远程办公者 需要同时访问 GitHub、Google、OpenAI、公司内网,且对稳定性要求极高。这个项目的多出口 + 路由规则,可以让你根据服务需求自动选择最优路径。 ### 3. 网络内容创作者 / 流媒体爱好者 需要解锁不同区域的流媒体库(如 Netflix 日区、美区、韩区),这个项目可以通过 WARP 或不同出口实现区域切换。 ### 4. 隐私敏感用户 / 安全研究人员 需要高匿名的网络访问,REALITY Vision 的伪装能力可以满足最严苛的隐私需求。 ### 5. 家庭网关 / 软路由爱好者 透明代理入站功能,配合 iptables 或 nftables,可以让你全家所有设备自动走代理,无需逐个配置。 --- ## 同类项目对比 ### 与 sing-box 对比 | 维度 | personal-edge-proxy | sing-box | |------|---------------------|----------| | 配置复杂度 | 中(YAML + .env) | 高(JSON,且字段繁多) | | 多出站支持 | 优秀(原生多出站) | 良好(但配置繁琐) | | REALITY 支持 | 原生支持 | 支持,但配置复杂 | | WARP 集成 | 一键配置 | 需手动配置 WireGuard | | 路由规则 | 简洁 YAML | 强大但学习曲线陡峭 | | 适用人群 | 个人用户 / 小团队 | 高级用户 / 开发者 | **结论**:sing-box 功能更强大,但配置难度呈指数级上升。personal-edge-proxy 在保留 90% 功能的同时,将配置复杂度降低了 70%。 ### 与 V2Ray / Xray 原生配置对比 | 维度 | personal-edge-proxy | 原生 Xray 配置 | |------|---------------------|---------------| | 多协议统一管理 | 是 | 否(每个协议独立配置) | | 路由策略 | 内置规则引擎 | 需手动编写 JSON 规则 | | WARP 集成 | 一键配置 | 手动配置 WireGuard + 路由 | | 维护成本 | 低(单一配置文件) | 高(多个配置文件) | **结论**:如果你只用 Xray 的 VMess 协议,原生配置够用。但一旦涉及 Hysteria2、WARP、REALITY 等多协议组合,原生配置的维护成本会迅速失控。 ### 与 Clash / Mihomo 对比 | 维度 | personal-edge-proxy | Clash / Mihomo | |------|---------------------|----------------| | 协议支持 | Xray + Hysteria2 + REALITY + WARP | 支持多种,但 REALITY 支持较弱 | | 路由规则 | 基于 YAML,支持 geoip/domain/process | 基于 Rule Provider,功能类似 | | 入站类型 | 支持透明代理 | 支持 TUN,但配置复杂 | | 部署方式 | 适合服务器端 | 更适合客户端 | **结论**:Clash 是优秀的客户端工具,但 personal-edge-proxy 是**服务器端**方案。两者定位不同,但如果你需要服务器端多协议聚合,personal-edge-proxy 更合适。 --- ## 潜在不足与改进空间 任何工具都有短板,这个项目也不例外: 1. **文档以英文为主**:对于中文用户,上手需要一定的英文阅读能力 2. **依赖 Docker Compose**:虽然支持手动安装,但 Docker 方式最省心,对不熟悉 Docker 的用户有门槛 3. **没有图形界面**:所有配置都是文件编辑,对命令行不熟悉的用户不友好 4. **WARP 的稳定性**:WARP 是免费服务,偶尔会出现连接不稳定,需要依赖项目内的自动重连机制 但这些不足并不影响它的核心价值——**作为一个工程化的代理配置模板,它已经做到了同类中的极致**。 --- ## 总结:值得一试的代理基础设施 如果你是一个对网络有追求的自建代理用户,**personal-edge-proxy** 值得你花一个小时来部署和体验。它带来的不仅是"多协议支持",更是一种**将代理配置从脚本提升到工程**的思维方式。 在这个项目里,你会看到: - 如何用统一的配置管理异构协议 - 如何用路由规则替代混乱的 if-else - 如何用 Docker 封装复杂的依赖关系 - 如何让代理系统具备可扩展性 这些思想,比单纯的多协议支持更有价值。 项目链接:[https://github.com/yding-git/personal-edge-proxy](https://github.com/yding-git/personal-edge-proxy) --- *本文为技术评测,基于项目 README 及源代码分析,实际效果请以你的部署环境为准。*
查看工具