自建代理节点与固定出口 IP 的折腾记录

举报
yd_249282546 发表于 2026/10/28 06:16:13 2026/10/28
【摘要】 为了解决出口 IP 老是变、排查难的问题,我在自有 VPS 上搭了 vless 与 hysteria2 两个协议的代理节点,虚拟机用 sing-box 接入,本地用 mixed 入口统一代理,并用出口 IP 变化验证每一步,记录了防火墙、路由、DNS 和时间同步等踩坑点。

起因很简单:我手头有几台散在不同地方的机器,平时调试接口、拉依赖、看文档,出口 IP 老是变,同一个服务今天能通明天就换了个出口,排查起来特别烦。我就想,能不能自己搭一个固定出口的代理节点,平时走它,出口稳定,出了问题也知道去哪台机器上查。

先说清楚边界

这篇只记我自己的折腾过程。节点是我自己的 VPS,客户端是我自己的虚拟机和本地机器,不涉及别人的账号和服务。文章里不贴任何密钥、口令、UUID 和 Token,只讲思路、配置结构和踩过的坑。

节点这边的选择

VPS 上我一开始只装了一个协议,跑起来没问题,但后来发现不同网络环境下表现差别很大。有的网络对长连接不友好,断一下就得手动重连;有的网络延迟抖动大,网页能打开,视频会议就卡。

后来我改成两个协议并行:一个是 vless,特点是轻、开销小,适合平时浏览和拉包;另一个是 hysteria2,走 UDP,弱网下反而稳一些,适合延迟抖动大的时候用。两个入口共用同一台机器,出口 IP 是一样的,这样不管走哪个协议,对外看到的地址不变,调试的时候少了很多变量。

服务端配置我刻意写得很简单:监听端口分开,日志只记连接数和错误,不记具体访问内容。最开始我图省事把日志开得很全,结果磁盘几天就涨了不少,后来改成只保留关键错误,定期轮转。还有一个教训:防火墙只放行了 TCP,hysteria2 的 UDP 没放行,客户端一直连不上,我查了半天配置,最后才发现是云厂商安全组和系统防火墙两层都要放行。

虚拟机上的客户端

客户端我放在一台虚拟机里,用 sing-box 做接入。选它主要是配置是一份 JSON,节点、路由规则、出站都写在一个文件里,改起来直观。我的做法是:

  • 出站写两个节点,vless 和 hysteria2,平时默认走 vless,手动切到 hysteria2 对比;
  • 入站只在本机监听,不对外暴露;
  • 路由规则先写得很保守,只有明确需要走代理的域名才走节点,其他流量直连,避免一股脑全走代理导致内网服务也绕远路。

刚开始我把规则写反了,内网地址也走了代理,结果局域网里的服务访问变慢,还以为是节点问题。后来把内网段和常用直连域名加到直连规则里,才恢复正常。这个顺序很重要:先保证直连不坏,再逐步加代理规则。

本地 mixed 入口

虚拟机调通之后,本地机器也要用。我在本地也跑了一个 sing-box,入站用 mixed 模式,也就是一个端口同时支持 HTTP 和 SOCKS。这样浏览器、命令行工具、包管理器都能用同一个入口,不用每个工具单独配不同的协议。

本地 mixed 入口我只绑了回环地址,不绑局域网地址。之前有一次我图方便绑了 0.0.0.0,结果同网段的其他设备也能连进来,虽然没出事,但想想就后怕,马上改回只监听本地。

验证方法也很土,但管用:先关掉代理,查一次出口 IP;再打开代理,查一次出口 IP;切 vless 和 hysteria2 各查一次。三次走代理的结果应该都是 VPS 的地址,和直连的地址不一样。如果某一次查出来还是本地地址,说明那次请求根本没走代理,规则肯定写漏了。

几个具体的坑

第一,时间不同步。有一段时间节点连上就断,日志里看不出大问题,后来发现是 VPS 的系统时间漂了不少,改成自动同步时间后就稳了。

第二,MTU 和分片。有个别网站能打开首页,打不开大页面,最后是把路径 MTU 相关设置调小才解决。平时不太会想到这一层,但大包过不去的时候,表现就是间歇性打不开。

第三,DNS 泄露。只代理了 HTTP 流量,DNS 还是本地解析,结果有的域名解析结果和代理出口不一致,访问就时好时坏。后来把 DNS 也统一走代理侧解析,规则才算真正闭环。

第四,别把所有流量都扔给一个节点。我一开始为了省事全量代理,结果节点一抖,所有服务一起抖。现在是按需走代理,关键服务直连,节点只承担它该承担的那部分,反而整体更稳。

现在的用法

现在我的日常是这样:本地 mixed 入口常开,直连规则兜底,需要固定出口的时候走节点,不需要的时候直连。虚拟机里的 sing-box 配置和本地的配置结构保持一致,改规则的时候两边一起改,不会出现一边通一边不通的尴尬。

回头看,这次折腾最大的收获不是多了一个节点,而是把出口、路由、DNS 这三件事分开想清楚了。出口固定只是结果,真正起作用的是:规则写保守一点,日志留关键的,验证每次都用出口 IP 说话。以后再加节点,我也是按这个套路来,先单协议跑通,再加第二个协议做对比,最后才把规则放宽。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。