本文面向准备把 Xray 从单台设备迁到家庭网络网关的用户。先区分主路由运行与独立旁路由,再用固定网段说明网关、DNS、透明代理入口及回程路径。读完可以制定单设备试运行方案,识别需要额外配置的转发规则,并保留恢复主路由直连的操作入口。
一、Xray 内核与路由器各自负责什么
Xray 是处理代理协议、入站、出站和路由规则的内核,不是完整的路由器系统。把可执行文件放进设备,只解决了“程序能否启动”;设备转发、DNS 服务、防火墙接管和开机启动仍由操作系统及部署方案负责。v2rayN 是桌面客户端,v2rayNG 是使用 Xray 内核的安卓客户端,不能把它们的安装包直接当作路由器服务安装。
部署前先记录 CPU 架构、系统版本、可用内存和剩余存储空间。固件包管理器提供的软件包还可能依赖特定系统库;不能只看文件名中出现 ARM 就判定兼容。以下以 OpenWrt 的网络管理逻辑为例,具体功能是否存在,以设备固件和安装包为准。
- 系统层:网卡地址、默认路由、IP 转发、IPv6 路由与防火墙。
- 接管层:将需要处理的 TCP 或 UDP 流量送入透明代理监听端口。
- 内核层:
inbounds接收连接,routing.rules匹配条件,outbounds定义代理或直连出口。 - 解析层:客户端使用哪个 DNS、查询怎样分流、解析上游是否会再次被自身接管。
二、主路由直跑与旁路由的部署边界
主路由通常已经承担拨号、DHCP、NAT 和防火墙。在这台设备上运行 Xray,流量入口比较集中,但规则错误可能影响整个局域网。独立旁路由便于只接管一台测试设备,不过多了一段转发路径,也多了回程不对称、重复 DHCP 和网关配置错误的风险。
两种形态:先确定谁是设备的默认网关
主路由运行 Xray
- 终端默认网关仍是主路由地址。
- 在转发入口接管指定设备或指定流量。
- 需评估拨号、无线和代理共同占用的资源。
- 改动防火墙前保留本地管理连接。
独立旁路由运行 Xray
- 先将一台终端的网关改为旁路由地址。
- 旁路由默认路由指向主路由。
- 单网口同网段方案需单独检查回程。
- 不要未经规划就启用第二个 DHCP 服务。
初次部署先保持主路由服务不变,只让一台设备走旁路由;通过验证后再扩大接管范围。
旁路由不一定必须有两个网口。单网口可以承载同一局域网中的收发,但这不代表转发规则可以省略。双网口也不自动等于正确隔离:如果两个接口放在同一桥里,实际仍可能属于同一个二层网络。
三、用固定地址说明网关与回程
下表是一套说明用的 IPv4 拓扑,不是设备默认值,也不是性能测试结果。先确保这些地址未被占用,并将固定地址从 DHCP 动态分配池中排除。测试终端只修改自身设置,其他设备继续沿用主路由。
| 设备 | IPv4 地址 | 默认网关 | DNS |
|---|---|---|---|
| 主路由 | 192.168.10.1/24 | 运营商上游 | 按现有网络设置 |
| 旁路由 | 192.168.10.2/24 | 192.168.10.1 | 明确配置的解析服务 |
| 测试终端 | 192.168.10.100/24 | 192.168.10.2 | 192.168.10.2 |
终端把 DNS 填成 192.168.10.2 的前提,是旁路由确实在该地址的 53 端口提供解析服务,并允许来自局域网的查询。只安装 Xray 并不等于自动具备这个服务。主路由与旁路由处于同一网段时,直接访问主路由管理地址仍通常走二层通信,不经过默认网关。
单臂旁路由的直连转发可能发生“终端经旁路由发出,主路由直接回给终端”。这会影响有状态防火墙或连接跟踪。源地址转换可以让回包返回旁路由,但会改变上游看到的源地址,不能把它当作所有拓扑的通用开关。还要检查 ICMP 重定向是否使终端改走主路由,以及防火墙是否允许同接口转发。
- 在旁路由核对默认路由是否指向
192.168.10.1。 - 检查 IPv4 转发是否启用、转发链是否放行测试终端。
- 分别观察代理流量和直连流量,不用一次网页访问代表全部路径。
- 如果 IPv6 仍使用主路由发布的默认路由,IPv4 网关变更不会自动接管 IPv6。
四、透明代理入口与 Xray 路由不是同一层
显式代理要求应用主动连接 SOCKS 或 HTTP 入口;透明代理则由网络规则把连接送进内核。仅在 Xray 中增加一个监听端口,不会让局域网设备自动使用它。本文示例的 12345 只是选定端口,必须与实际透明入口及防火墙转发目标保持一致。
单设备显式代理验证
推荐先用局域网可达的 SOCKS 或 HTTP 入站验证节点、证书和出站参数。限制来源地址,验证完成后关闭不再需要的入口。通过这一层测试仍不代表透明代理已经可用。
适合:初次部署时先排除节点和内核配置问题。
REDIRECT 接管
常见方案用于 TCP 流量,并要求对应入站能读取原始目标地址。不能把 TCP 重定向规则直接套到所有 UDP 流量,也不能只配置 NAT 链就认为已覆盖全部协议。
适合:已明确仅接管 TCP,且固件提供匹配配置的环境。
TPROXY 接管
可用于 TCP 与 UDP,但依赖内核支持、策略路由、流量标记和对应的透明套接字配置。标记值、路由表和入站设置需要作为一组检查。
适合:需要 UDP 接管,并能维护策略路由的环境。
OpenWrt 22.03 起默认采用 firewall4 与 nftables。维护旧方案时先辨认实际规则后端,不要把旧的 iptables 脚本直接追加到新固件,再根据命令退出码判断部署成功。透明入口还应排除内核自身发出的代理连接、管理地址和必要的本地服务,防止流量再次进入自身。
五、DNS 分流要与连接路径配套
终端询问 DNS 的路径与终端连接目标地址的路径是两件事。把网关改为旁路由,不会自动覆盖浏览器自带的加密 DNS;把 DNS 指向旁路由,也不会自动改变默认网关。需要在试运行时明确哪些设备使用系统 DNS,哪些应用自行解析。
- 入口:确认
192.168.10.2:53有服务监听,且 TCP、UDP 查询都能到达。 - 上游:明确本地解析器把请求交给谁;若上游经代理访问,要避免建立代理本身又依赖同一条未就绪的解析路径。
- 规则:
domainStrategy影响路由匹配时如何使用解析结果,不是局域网 DNS 接管总开关。 - 域名信息:透明流量不一定携带可用于匹配的域名;嗅探也不能保证还原所有加密连接的域名。
- 缓存:修改解析路径后先重试新连接,再按需刷新终端与本地解析器缓存,避免旧记录干扰判断。
若系统已安装相应工具,可在测试终端执行下面两条命令,分别验证常规 UDP 查询和 TCP 查询。能得到答复只说明这个解析入口可用,不代表查询经过了预期的上游;上游路径仍要对照解析服务日志确认。
dig @192.168.10.2 example.com A
dig +tcp @192.168.10.2 example.com A
IPv6 需要同步规划。终端可能通过路由通告获取 IPv6 默认网关和 DNS,应用也可能优先使用 AAAA 记录。没有完成 IPv6 接管前,应在测试设备上明确控制 IPv6 路径并记录设置,而不是只看 IPv4 访问成功就宣布全网生效。
六、从一台终端开始上线
下面的界面路径以 OpenWrt 23.05 系列标准 LuCI 中文界面为例,定制固件的菜单名称可能不同。网络地址变更会断开管理连接,操作前先准备有线接入,并记录主路由地址、原 DHCP 设置与当前配置备份。
-
记录原配置
进入「系统」→「备份/升级」,生成当前配置备份。记下测试终端原来的网关与 DNS,确认可以直接访问主路由
192.168.10.1。 -
固定旁路地址
进入「网络」→「接口」→「LAN」→「编辑」→「基本设置」,按示例设置静态地址
192.168.10.2/24,IPv4 网关指向192.168.10.1。保存应用后用新地址重新登录。 -
避免重复分配
在旁路由「网络」→「接口」→「LAN」→「编辑」→「DHCP 服务器」→「常规设置」检查「忽略此接口」。同网段测试阶段保留主路由作为唯一 DHCP 分配源。
-
核对内核入口
先验证 Xray 配置与节点连接,再启用已规划的透明接管规则。核对监听端口、转发策略、DNS 服务及进程自身流量排除,不直接复制其他设备的整套防火墙命令。
-
只改测试终端
将测试终端网关改为
192.168.10.2;DNS 服务确认可用后,再将 DNS 指向该地址。分别测试网页、UDP 应用、局域网共享和路由器管理页面。 -
验证后再扩展
重启旁路由并复测。确认服务启动顺序、规则恢复和 DNS 就绪后,再考虑通过 DHCP 选项 3 下发网关、选项 6 下发 DNS;已租约设备需续租后检查实际获取值。
七、按症状排查,不同时修改多层设置
排查顺序建议固定为:终端地址和路由、旁路由转发、DNS、内核入口、代理出站。每次只改一项,记录改动前后的日志。下列命令用于 Linux 网关只读检查;部分精简固件需要安装对应工具。
ip -4 route
ip -6 route
ip rule show
sysctl net.ipv4.ip_forward
ss -lntup
nft list ruleset
改完网关后,所有网页都打不开?
先把测试终端网关恢复为 192.168.10.1,确认原网络可用。再检查旁路由的默认路由、IP 转发及防火墙转发计数;不要先更换节点。DNS 指向旁路由时,还需确认 53 端口服务存在。
网页能开,语音或游戏却不通?
检查实际是否只部署了 TCP 接管,再核对 UDP 入站、策略路由与出站支持情况。用应用日志确认失败协议;不能因为 TCP 网页正常,就认定 UDP 和 DNS 转发也正常。
为什么只有部分设备走旁路由?
逐台查看实际网关和 DNS,不只看 DHCP 管理页面。静态地址、旧租约、应用自带解析以及 IPv6 默认路由都可能造成差异。先在同一台设备上分别确认 IPv4 与 IPv6 路径。
重启后失效,手动启动又正常?
检查服务启动日志,确认网络、时间同步和 DNS 是否先于代理连接就绪。核对防火墙重载后接管链是否仍存在;先解决依赖顺序,再设置有限重试,避免用持续重启掩盖配置问题。
上线前最后确认三个恢复动作:终端能改回原网关,主路由管理入口仍可访问,旁路由停止服务后不会留下指向空端口的接管规则。CPU 架构、节点协议和线路条件差异很大,不能用设备宣传带宽推算代理吞吐;应以实际业务测试、资源占用和连接日志作为扩展接管范围的依据。