路由器与旁路由部署 Xray 内核概览:硬件要求、透明代理与分流思路

让内核直接跑在路由器或旁路由上,全屋设备免装客户端。本文概述硬件选型、透明代理原理、配置文件放置与常见坑点。

本文速览

先在一台设备上验证 Xray 出站,再配置旁路由网关、DNS 和透明接管,最后扩展到其他设备。本文以 OpenWrt 和 Linux 网络栈为例,区分硬件预算、内核配置与防火墙规则;适合已有可用节点、准备把单机代理迁到局域网的读者。文中的地址与端口用于说明拓扑,不代表所有固件的默认值。

一、硬件选型:先确认架构与可用内存

Xray 是处理连接、协议和路由的内核,不是路由器固件,也不自带通用的路由器管理界面。能运行 Linux 不等于能直接运行任意 Xray 二进制:CPU 架构、指令集、系统环境和可写存储空间都要匹配。下载前先用 uname -m 查看架构,再用 free -m 与 df -h 查看内存和存储余量。

以下是部署预算建议,不是最低运行门槛或吞吐量承诺。并发连接数、规则规模、加密开销和日志量都会改变资源需求;设备包装上的无线速率也不能当作代理转发性能。

现有主路由

先确认固件支持安装匹配架构的软件包。若设备只有 128 MB 内存,还同时承担无线、拨号与其他服务,应先观察剩余资源;规则加载和更新时的峰值可能比空闲时明显更高。

适合:少量终端、已有受支持固件、能接受维护时全网短暂中断的环境。

独立旁路由

推荐

初次部署可从 64 位双核、1 GB 内存、至少 1 GB 可写空间的设备起步。独立设备便于回退,调整代理服务时不必同时重启主路由的无线和拨号服务。

适合:先让一台终端试运行,再逐步扩大接管范围的家庭网络。

常开 Linux 主机

已有小主机或虚拟机时,可以先独立运行内核。若使用虚拟机,需核对虚拟网卡桥接方式、宿主机防火墙和开机顺序,不能只检查虚拟机内部配置。

适合:熟悉 Linux 服务管理、需要保留日志并逐层排查网络路径的用户。

结论:优先保留独立回退路径

首次部署选旁路由,并保留终端直连主路由的设置方法。遇到故障时,把测试终端的网关和 DNS 改回主路由,比在全网断连后抢修防火墙更可控。

二、主路由与旁路由:先画清数据路径

主路由通常负责拨号、NAT、DHCP 和默认网关。旁路由则是局域网中额外的一台转发设备,不会因为接上网线就自动接管全屋流量。终端必须把相关流量交给旁路由,或由主路由通过策略路由送过去,Xray 才有机会处理连接。

同网段方案还要考虑直连流量的回程是否绕过旁路由,以及 ICMP 重定向是否改变终端路径。是否启用源地址转换,取决于实际拓扑与状态跟踪需求;不能把“旁路由必须开启 NAT”当作普遍结论。开始时只改一台终端,使用 ip route 或系统路由查看工具确认默认网关。

三、透明代理:接管方式不等于代理协议

透明代理描述的是接管流量的方式,不是 VLESS 或 VMess 的替代协议。终端不填写应用代理地址,流量由网关重定向或策略路由送入内核。能否接管 TCP、UDP 和 IPv6,取决于 Linux 网络配置、入站设置以及代理出站和服务端的共同支持。

方式接管位置主要边界
显式 SOCKS 代理应用主动连接本地代理端口便于验证内核,不会自动覆盖全屋应用
REDIRECT防火墙重定向连接到本地入站常用于 TCP;不能照搬 TCP 规则接管 UDP
TPROXY透明套接字与策略路由配合需内核模块、流量标记和本地路由共同生效
TUN 方案虚拟网络接口接收 IP 数据包依赖具体实现与路由设置,不能套用桌面开关名称

Xray 的常见 Linux 透明接入方案使用 dokodemo-door 入站,配合 followRedirect 读取原始目标;TPROXY 方案还需要对应的 streamSettings.sockopt.tproxy 设置。只添加这些 JSON 字段不会自动创建防火墙规则、策略路由或启用系统转发。

OpenWrt 22.03 及以后版本通常使用 firewall4 与 nftables。网上基于 firewall3 的旧 iptables 教程不能原样套用,必须核对实际固件、模块及兼容层。桌面 v2rayN 中的 TUN 开关也不是可直接复制进路由器 Xray 配置的单一字段,相关边界可参阅TUN 配置说明。

四、配置文件与服务:先验证显式代理

配置路径由启动命令决定,不由文件名决定。/etc/xray/config.json 是一种常见约定;软件包或管理界面可能使用其他目录,也可能在 /var 下生成运行时文件。直接修改生成文件通常会在下一次保存或重启后被覆盖,应先确认配置的来源。

  1. 记录网络

    在 OpenWrt LuCI 的「网络」→「接口」记录 LAN 地址、上游网关与接口名称;在「系统」→「备份/升级」导出配置备份。暂时不修改全网 DHCP 下发内容。

  2. 确认启动项

    执行 xray version 确认内核可运行。使用 systemd 的系统查看 systemctl cat xray 中的 ExecStart;OpenWrt 则查看 /etc/init.d/xray 及其读取的配置,确认实际路径。

  3. 检查配置

    若实际配置位于该常见路径,执行 xray run -test -config /etc/xray/config.json。先处理语法、未知字段及规则文件读取错误,再启动服务。配置测试成功不代表远端节点连通。

  4. 本机验证

    先让 SOCKS 入站只监听 127.0.0.1:10808。用 curl --proxy socks5h://127.0.0.1:10808 https://example.com/ 检查连接;同时观察日志中选择的出站,不能仅凭网页打开就判断已走代理。

  5. 单机接管

    显式代理与实际节点都验证后,再对一台测试终端启用透明规则。分别测试 DNS、TCP、UDP 和 IPv6,确认管理页面仍可访问,最后才扩大源地址范围。

下面是可用于理解配置结构的本地直连基线,不是可访问代理节点的成品配置。它没有远端服务器参数,也没有透明入站;所有由 SOCKS 接收的连接都通过 freedom 直连。若当前服务已有可用配置,不要直接覆盖。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

订阅地址也不是 Xray 启动参数。客户端订阅可能包含 Base64 编码的分享链接,或采用特定管理程序的格式;只有符合 Xray 配置结构的 JSON 才能按配置文件加载。使用订阅管理工具时,要确认它生成的出站、标签和规则文件,避免手工编辑后又被更新任务覆盖。

五、DNS 与路由分流:两条链路一起检查

可靠分流需要同时知道“连接去哪”和“域名如何解析”。Xray 的 routing.rules 自上而下匹配,规则中的 outboundTag 必须指向真实存在的出站标签;没有匹配规则时通常使用第一个出站。域名规则、IP 规则和默认出站之间的顺序,应先写成明确的预期结果,再转成配置。

53
常规 DNS 使用 TCP 或 UDP 端口
10808
本文本机 SOCKS 测试端口
12345
可规划的透明入站示例端口

这些端口承担不同职责,不能互相替代。12345 只是便于规划的示例值,不是自动生效的系统默认端口;防火墙转发目标和内核监听必须一致。不要把未鉴权的 SOCKS 端口开放到公网,若后续需要局域网访问,也应通过监听地址和防火墙限制来源。

结论:用同一域名对照 DNS 与出站日志

先对测试域名执行 nslookup example.com 192.168.10.2,前提是旁路由确实提供 DNS 服务;随后访问该域名并检查所选出站。解析成功只能证明 DNS 链路可用,出站命中才说明分流方向符合预期。

使用 VLESS 节点时,远端地址、端口、用户标识、传输方式和安全设置必须与服务端对应;部署到路由器不会改变这些要求。VMess、VLESS 是代理协议,TCP、WebSocket 等是传输相关选项,不能只凭协议名称判断设备吞吐。字段含义可继续查看路由配置参考与术语手册。

六、常见故障:按现象缩小检查范围

排查时保留一台不经过旁路由的管理终端。先比较原网关和旁路由网关下的结果,再观察 DNS、内核日志及防火墙计数;不要同时修改 MTU、协议、DNS 和路由规则,否则很难判断是哪一项起作用。

网关改成旁路由后,所有网站都打不开?

检查转发与上游路径

先从终端访问旁路由管理地址,再在旁路由执行 ip route 检查默认路由。使用 sysctl net.ipv4.ip_forward 查看 IPv4 转发是否启用,并核对防火墙转发链。默认路由或转发有误时,换节点通常无效;先把终端网关改回主路由恢复连接。

网页能开,但语音和游戏连接失败?

沿 UDP 路径逐段验证

检查接管规则是否只覆盖 TCP,再核对透明入站、代理出站和服务端是否支持所需 UDP 转发。HTTP 请求成功不能证明 UDP 正常。若使用 REDIRECT 接管 TCP,不应认为同一规则已经处理 UDP;需要选择匹配的接管方案并测试。

服务显示运行中,为什么没有任何接管记录?

核对监听和规则命中

用 ss -lnptu 查看实际监听端口,再用 nft list ruleset 检查源网段、接口和端口是否一致。若规则配置了计数器,观察测试连接是否增加计数。服务运行只代表进程存在,不能证明终端经过该设备,或策略路由已把包交给透明入站。

重启就失效,或者测速越跑日志越大?

检查持久化与日志位置

确认服务启用开机启动,防火墙和策略路由通过固件支持的方式持久化,而不是仅在终端临时执行。排障后把详细日志恢复到合适级别,并设置轮转;小容量闪存不宜长期保存高频访问日志。规则更新失败时保留上一份可用数据,不要先清空再下载。

七、上线验收:从单台终端扩展到全网

全屋免装客户端的前提,是相关设备的流量确实经过所配置的网关,且 DNS、IPv4 与 IPv6 的策略一致。拥有独立网络、手动路由或自定义加密 DNS 的终端可能不遵循同一条路径,应按设备类别分别验证。

若还没有确认节点可用,先在桌面 v2rayN 或安卓 v2rayNG 中完成单机验证,能把节点问题与网关问题分开。v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核;不同内核的能力与配置格式需要分别核对。单机验证通过之后,再把对应的连接参数与路由意图迁移到路由器环境,而不是直接复制整个客户端数据目录。

客户端平台下载