先在一台设备上验证 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 才有机会处理连接。
- 主路由部署:终端流量本来就经过主路由,接管位置集中,但内核、防火墙或路由修改错误可能影响整个网络。
- 同网段旁路由:例如主路由为
192.168.10.1,旁路由为192.168.10.2,测试终端为192.168.10.100,子网掩码均为255.255.255.0。终端默认网关改为旁路由,旁路由的上游网关仍为主路由。 - 独立下游网段:旁路由使用两个接口或 VLAN,把测试终端放在独立子网。路径通常更清楚,但要同时配置转发、防火墙及回程路由或源地址转换。
同网段方案还要考虑直连流量的回程是否绕过旁路由,以及 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 下生成运行时文件。直接修改生成文件通常会在下一次保存或重启后被覆盖,应先确认配置的来源。
-
记录网络
在 OpenWrt LuCI 的「网络」→「接口」记录 LAN 地址、上游网关与接口名称;在「系统」→「备份/升级」导出配置备份。暂时不修改全网 DHCP 下发内容。
-
确认启动项
执行
xray version确认内核可运行。使用 systemd 的系统查看systemctl cat xray中的ExecStart;OpenWrt 则查看/etc/init.d/xray及其读取的配置,确认实际路径。 -
检查配置
若实际配置位于该常见路径,执行
xray run -test -config /etc/xray/config.json。先处理语法、未知字段及规则文件读取错误,再启动服务。配置测试成功不代表远端节点连通。 -
本机验证
先让 SOCKS 入站只监听
127.0.0.1:10808。用curl --proxy socks5h://127.0.0.1:10808 https://example.com/检查连接;同时观察日志中选择的出站,不能仅凭网页打开就判断已走代理。 -
单机接管
显式代理与实际节点都验证后,再对一台测试终端启用透明规则。分别测试 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 规则和默认出站之间的顺序,应先写成明确的预期结果,再转成配置。
这些端口承担不同职责,不能互相替代。12345 只是便于规划的示例值,不是自动生效的系统默认端口;防火墙转发目标和内核监听必须一致。不要把未鉴权的 SOCKS 端口开放到公网,若后续需要局域网访问,也应通过监听地址和防火墙限制来源。
- 局域网与管理地址:先明确直连范围,避免访问路由器后台、网络存储或打印机时绕入远端出站。
- 域名规则:透明连接可能只携带目标 IP。嗅探在部分协议中可帮助识别域名,但不能保证恢复所有域名,也不等于解密通信。
- 解析策略:
routing.domainStrategy控制路由匹配时的域名解析行为,不是全局 DNS 服务器开关。内置 DNS、出站解析和终端 DNS 是不同环节。 - DNS 服务链:终端可能先查询路由器的 dnsmasq,再转发到其他解析服务。仅在 Xray 中填写
dns,不会自动把终端的 DNS 请求送进去。 - IPv6 路径:只配置 IPv4 透明规则时,终端可能仍经主路由的 IPv6 默认路由出网。应单独验证 AAAA 解析、IPv6 网关及接管范围。
结论:用同一域名对照 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 的终端可能不遵循同一条路径,应按设备类别分别验证。
- 基本连通:测试局域网管理页面、常用直连站点与应走代理的目标,并确认日志中的出站方向。
- 协议覆盖:分别验证 TCP、实际使用的 UDP 应用和 IPv6,而不是只运行一次浏览器测速。
- 性能观察:在相同目标、相同时段比较直连与代理,记录 CPU 占用、内存余量和连接数,不把单次峰值当作长期吞吐。
- 重启恢复:重启旁路由后重新检查服务、DNS、策略路由和防火墙规则,确认不依赖临时命令。
- 故障回退:模拟停止 Xray 服务,确认管理终端仍可访问主路由,并明确其他终端应如何恢复原网关与 DNS。
若还没有确认节点可用,先在桌面 v2rayN 或安卓 v2rayNG 中完成单机验证,能把节点问题与网关问题分开。v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核;不同内核的能力与配置格式需要分别核对。单机验证通过之后,再把对应的连接参数与路由意图迁移到路由器环境,而不是直接复制整个客户端数据目录。