WireGuard 与 Trojan 共存实战:端口、路由与流量分流全攻略

场景说明:为什么要把两套代理/隧道放在一台服务器上

很多折腾翻墙的同学会把 WireGuard(轻量、UDP 内核隧道)和 Trojan(伪装成 HTTPS 的 TCP 隧道)同时部署在同一台 VPS 上。这样做的常见动机包括:

  • 利用 WireGuard 处理大流量、实时性要求高的应用(比如视频、游戏);
  • 利用 Trojan 的 TLS 伪装和域名伪装优势,用于浏览器与少量敏感流量;
  • 节约 VPS 资源与公网 IP 成本;
  • 实现按应用/目标域名的流量分流(split tunneling)。

关键冲突点:端口、协议与路由表三大维度

要在一台机器上让两者和谐共存,主要要解决三类冲突:

  • 端口与协议冲突:WireGuard 要绑定 UDP 端口(默认 51820),Trojan 常常监听 TCP 443(或其它端口)。若两者不慎使用相同端口或协议层次冲突,会导致服务冲突或 TLS 握手被拦截。
  • 路由与出接口选择:WireGuard 建立的是虚拟网卡(如 wg0),会创建一条或多条路由;Trojan 则是基于 TCP,通常走主机的默认路由。如何让不同流量走不同出口,是关键。
  • 流量分类与转发:精确分流需要按目标 IP/域名、进程、端口或 TPROXY/透明代理规则分类并重路由,否则无法实现细粒度策略。

可行的几种架构思路

下面给出几种常见且实用的共存架构思想,每种都有权衡点。

1. 端口/协议隔离(最简单)

直接为两种服务指定不同端口和协议:WireGuard 使用 UDP 专属端口,Trojan 使用 TCP 443(或别的 TCP 端口)。这种方法最低侵入性,适合仅需要两条独立通道的场景。但缺点是不能按应用自动分流,客户端需要手动选择连接方式。

2. 同机多 IP(最稳妥但成本高)

给 VPS 额外绑定一到多个公网 IP,将 WireGuard 与 Trojan 分别绑定到不同 IP。优点是根本避免端口与证书层面的相互干扰;同时可以在服务器端用路由规则把不同来源的流量分别处理。缺点是需要额外公网 IP,部分 VPS 提供商限制多 IP。

3. 透明代理 + 政策路由(细粒度)

在服务器上部署透明代理/TPROXY 或者使用 iptables/nftables 的 mangle 表打 mark,再配合 ip rule + ip route 将标记流量路由到 WireGuard 虚拟接口或本地出口。客户端可只运行一个代理,服务器端基于目标域名/IP 做流量调度。此方法可实现按域名分流且对客户端透明,但配置复杂,需注意 MTU、连接跟踪和 HTTPS 伪装的差异。

流量分流的核心技术点(不用代码也要理解)

无论采用哪种架构,下面几项技术概念不可回避:

  • 策略路由(Policy-based routing):通过 ip rule 指定源地址、fwmark 或其他条件,选择不同的路由表,从而把流量送入 WireGuard 或直接走公网。
  • 连接跟踪与 NAT:iptables/nftables 的 NAT/POSTROUTING 需要与策略路由配合,避免把已经走 WireGuard 的流量再次被 NAT 到错误出口。
  • 透明代理与 TPROXY:要把服务器当做网关强制重定向 TCP/UDP 流量到 Trojan 或其它代理,需用 TPROXY + iptables 覆盖,注意防止 loop(回环)。
  • DNS 处理:域名分流依赖准确的 DNS 解析;本地 DNS 池化、DNS over HTTPS/DoT、并根据策略决定解析结果是常见做法。
  • MTU 与分片:WireGuard 默认 MTU 较小或不同于主链路,混合使用时可能出现网页加载慢或连接失败,需针对隧道特性调整或开启 Path MTU Discovery。

实战案例:按目标域名走 Trojan,其他走 WireGuard(思路说明)

场景:你希望浏览器访问特定被封锁域名时走 Trojan(借助其 TLS 伪装与 SNI),而大流量下载/游戏走 WireGuard。

  1. 客户端层面:配置系统或应用分流策略,优先把某些域名的请求发给系统默认网络(或直接到远端 Trojan),其余流量经 WireGuard 隧道。
  2. 服务器层面:Trojan 监听 TCP 443,WireGuard 监听 UDP 专属端口。服务器上建立两套路由策略:一套是 WireGuard 的 peer 路由表,另一套是本地出站表用于 Trojan。若使用透明代理,还需在防火墙上把来自于被标记流量转到 Trojan 的监听端口。
  3. DNS:确保被迫走 Trojan 的域名解析结果指向 VPS,或在客户端使用满足分流策略的 DNS 解析器。
  4. 监控与回滚:用 netstat/ss 查看端口占用,tcpdump 或 tshark 验证流量是否按预期走到目标端口/接口,发现问题先回退路由或防火墙规则逐项排查。

常见问题与排查建议

  • 服务无法启动:先排查端口占用与协议冲突,确认没有两个进程同时绑定同一 IP:端口。
  • 分流失败:用抓包确认 TCP/UDP 哪个接口在发送;检查 ip rule 与路由表的优先级;若依赖 fwmark,确认 mangle 表是否生效。
  • 证书/伪装被识别:Trojan 的伪装依赖真实证书与合理的域名流量模式,确保 SNI 与域名匹配,避免异常频繁的非 TLS 流量暴露特征。
  • 性能瓶颈:WireGuard 在 UDP 层面延迟低,但 CPU 加密开销与 MTU 设置会影响吞吐;Trojan 的 TLS 握手和单 TCP 连接吞吐也有上限。

优劣权衡与调优建议

综合来看,同机部署两者的主要优势是灵活性与成本节约;主要挑战是配置复杂度与潜在的路由/防火墙陷阱。实用的调优方向包括:

  • 尽量避免端口复用;若必须使用 443 并同时有其它服务,优先考虑多 IP 或端口映射方案;
  • 把路由与防火墙规则模块化、分阶段部署并保持一套回滚脚本,便于排错;
  • 监控连接数、CPU、带宽与 MTU,针对高并发优化 TLS 会话复用与 WireGuard 的 keepalive 与窗口参数;
  • 使用可信的 DNS 与证书管理,减少伪装异常导致的流量被识别风险。

未来趋势与演进方向

随着加密流量识别技术进步,与此同时也有越来越多轻量级隧道与多路复用方案出现(如 QUIC-based 隧道、基于 SOCKS/HTTP 多路径的智能路由)。在可预见的未来,混合使用多种传输层协议、结合应用层智能判断的方案会越来越普及。不过在实际部署时,清晰的路由边界、稳健的监控与可回滚的配置仍然是最可靠的实践。

© 版权声明
THE END
喜欢就支持一下吧
分享
评论 抢沙发

请登录后发表评论

    暂无评论内容