旁路由运行 Xray 内核概览:OpenWrt 透明代理部署思路

梳理主路由与旁路由的分工,讲清在 OpenWrt 上直跑 Xray 内核的整体流程:网关指向、DNS 处理与透明代理的常见取舍。

本文速览

本文适合已经用 v2rayN 验证过节点、准备让局域网设备经过 OpenWrt 旁路由的用户。先固定一台测试设备的网关,再分别验证 Xray 出站、DNS 与透明转发。读完可以确定主旁路由的职责、选择 REDIRECT 或 TPROXY 的依据,并建立一条可随时撤回的部署顺序;本文不提供跨设备通用的一键防火墙脚本。

一、先分清主路由、旁路由与 Xray

主路由继续负责宽带接入、家庭网络的默认出口和地址分配。OpenWrt 旁路由接收指定设备发来的流量,再决定直连还是送入 Xray。Xray 是处理代理协议与路由规则的内核,不会因为进程启动,就自动把整个局域网变成透明代理网络。

以单网口、同网段旁路由为例:主路由为 192.168.50.1,OpenWrt 为 192.168.50.2,测试电脑为 192.168.50.100。这些是本文的示例地址,部署前要换成本地网段,并在主路由的地址池中排除旁路由静态地址。

位置示例设置主要职责
主路由192.168.50.1连接外网,提供原有 DHCP 服务,保留管理入口。
OpenWrt 旁路由192.168.50.2运行 DNS 服务与 Xray,实施转发和分流规则。
测试电脑192.168.50.100先单独改网关与 DNS,不立即改变其他设备。
旁路由默认出口192.168.50.1让旁路由自身和代理服务器连接能够到达外网。

测试电脑访问海外服务时,预期链路是“电脑 → 旁路由 → Xray 出站 → 代理服务器”。直连流量则由旁路由转交主路由。单网口部署中,直连连接的回包可能从主路由直接回到电脑,形成非对称路径;不能直接照搬双网口网关的防火墙方案。

二、选择接管范围,再决定是否透明代理

先问清楚要解决哪一种问题。只有电脑浏览器需要代理时,继续使用 v2rayN 往往更容易维护;只有少量支持 SOCKS 的程序需要走旁路由时,可以先让它们显式连接代理端口。透明代理适合不便逐个设置代理的设备,但需要额外维护防火墙、策略路由和 DNS。

单设备透明接管

推荐

先只接管一台电脑,按源地址限制透明规则。确认网页、UDP 应用和局域网访问都正常后,再逐台扩大范围,故障影响面较小。

适合:首次部署旁路由、需要保留家庭网络稳定性

显式代理端口

程序主动连接旁路由的 SOCKS 入站,不必先接管默认网关。它能验证节点与 Xray 配置,但不能证明透明转发链路已经打通。

适合:少量支持代理设置的程序、部署前分层排错

全网默认接管

通过 DHCP 下发旁路由网关,统一处理多个设备。需要提前覆盖地址续租、IPv6、DNS、服务重启与故障回退,后续维护责任更集中。

适合:单设备验证完成、能够长期维护网络配置

结论:先保留原网关,再改一台设备

第一轮只把测试电脑的 IPv4 网关和 DNS 改为 192.168.50.2,不要改主路由全网下发参数。旁路由失联时,把这台电脑恢复为自动获取地址即可撤回测试。

三、先跑通内核,再连接网关与防火墙

以下菜单以 OpenWrt 常见 LuCI 界面为参照。固件版本、语言和已安装软件包会影响名称;OpenWrt 23.05、24.10 系列常见的 firewall4 使用 nftables,不应混用仅面向旧式 iptables 的透明代理脚本。安装前还要核对处理器架构、可用存储与内核模块来源。

  1. 备份网络

    进入「系统」→「备份/升级」,生成并下载配置备份。记录主路由与旁路由地址,保留可直接连接主路由的管理方式,不通过唯一的远程会话冒险改网关。

  2. 固定地址

    进入「网络」→「接口」→「LAN」→「编辑」,设置旁路由静态地址、掩码和指向主路由的 IPv4 网关。在「DHCP 服务器」→「常规设置」中勾选「忽略此接口」,避免重复发放地址;确认后再保存并应用。

  3. 验证出站

    使用与系统架构匹配的 Xray,准备实际可用的出站配置。先用仅允许局域网测试设备访问的 SOCKS 入站验证 TCP 连接;测试 UDP 时,还需要客户端、入站与远端出站链路共同支持。

  4. 设置解析

    进入「网络」→「DHCP/DNS」→「常规设置」,检查 DNS 转发目标。如果使用本机 127.0.0.1:5353 的解析服务,LuCI 中常见填写形式为 127.0.0.1#5353;确认该服务已监听,且没有再转回 dnsmasq。

  5. 接入测试机

    在测试电脑的网络设置中修改网关与 DNS,随后只为这台电脑添加透明接管规则。核对接口转发权限、内核转发开关及回程路径,再分别测试直连与代理目标。

  6. 验证重启

    确认当前连接正常后,分别重载防火墙、重启 Xray,最后重启旁路由。检查规则是否恢复、DNS 是否可用,以及内核尚未启动时直连流量的处理是否符合预期。

订阅链接不能直接当作 Xray 的运行配置。v2rayN 会负责订阅解析、节点选择和配置生成,而直接运行内核需要完整的入站、出站、DNS 与路由配置。VMess、VLESS 节点中的传输方式、TLS、服务器名称和相关参数必须与服务端一致,不要只复制服务器地址和端口。

# 以下路径假定 Xray 已安装,配置文件实际位于 /etc/xray/config.json
xray version
xray run -test -config /etc/xray/config.json

# 查看系统架构、路由与监听状态
ubus call system board
ip -4 route show
netstat -lnptu

四、理解 REDIRECT、TPROXY 与流量标记

透明代理不是单个开关。防火墙先识别需要接管的流量,Xray 的透明入站再接收它,路由规则最后决定出站。REDIRECT 常用于 TCP 重定向;TPROXY 能处理 TCP 和 UDP,但依赖匹配的透明入站设置、策略路由和内核支持,两者不能只换一个规则名称就互相替代。

机制适用范围必须核对
REDIRECT常见于 TCP 透明接管重定向端口、原始目标获取、Xray 透明入站设置。
TPROXYTCP 与 UDP 透明接管透明套接字、数据包标记、策略路由、本地路由表。
显式 SOCKS应用主动设置代理客户端代理地址、访问控制,以及 UDP 支持情况。

例如将透明入站端口约定为 12345,防火墙就必须把目标流量送到该端口;这个端口不是代理服务器的远端端口。TPROXY 使用的标记和策略路由表也要成套设计,不能覆盖现有多拨、其他隧道或策略路由服务占用的标记位。

可以用 nft list ruleset 查看当前规则,用 ip rule show 查看策略路由,再检查自定义表中的路由。不要直接清空整个 nftables 规则集:这可能连同 OpenWrt 的基础防火墙和远程管理保护一起移除。

五、把 DNS 当成独立链路处理

网页打不开时,先区分“域名解析失败”和“解析成功但连接失败”。网关改成旁路由并不等于 DNS 已经经过旁路由;应用自带的加密 DNS、浏览器安全 DNS,以及 IPv6 下发的解析服务器,都可能形成另一条路径。

53
传统 DNS 的 UDP/TCP 服务端口
5353
本文约定的本机上游解析端口
12345
本文约定的透明入站端口

后两个端口是配置示例,不是 Xray 的固定默认值。检查已有监听后再使用;5353 也常用于组播 DNS,因此应确认绑定地址和进程不会冲突。面向局域网的 DNS 服务通常监听 53,而内部上游可以只绑定回环地址,避免不必要地暴露服务。

  1. 确认请求到达:在电脑执行 nslookup example.com 192.168.50.2,检查旁路由是否响应。这个测试只验证指定解析服务器,不代表所有应用都使用它。
  2. 确认上游出口:需要经代理访问的解析上游,应有明确出站路径。解析代理服务器域名所需的引导解析,不能完全依赖尚未建立的代理连接。
  3. 检查解析循环:dnsmasq 转发给本机解析服务后,该服务不能又把同一请求交回 dnsmasq。循环常表现为长时间等待和超时。
  4. 协调域名与地址规则:按域名分流时,要明确 Xray 如何获得域名信息。嗅探不能覆盖所有应用;仅收到目标 IP 时,不一定能恢复原始域名。
  5. 覆盖 IPv6:如果只接管 IPv4,设备可能通过主路由发布的 IPv6 默认路由直接联网。先在测试设备上限定 IPv4 验证,再单独设计 IPv6 的路由与 DNS,而不是把问题当成节点失效。

结论:分别记录解析结果和连接结果

每次修改只验证一层:先记录 DNS 是否返回地址,再检查请求命中的出站与握手结果。不要同时更换节点、DNS 上游和透明规则,否则一次成功也无法说明是哪项改动生效。

六、按症状排错,并准备撤回路径

至少准备一个本地管理地址、一个应当直连的目标和一个应当走代理的目标。观察 Xray 访问日志中的入站、目标与出站标签,同时对照系统日志。排错期间可临时增加日志详细度,定位后恢复适当级别;日志可能包含访问目标,分享前要清理地址、凭据和订阅信息。

改完网关,连旁路由页面也打不开了?

先把电脑恢复到原主路由网关,或恢复自动获取地址。确认电脑与旁路由地址在同一子网,再访问 192.168.50.2。检查静态地址冲突与管理服务监听,不要先重装 Xray。

SOCKS 测试能用,透明代理却不通?

依次核对测试电脑的默认路由、透明入站端口、对应防火墙规则计数,以及 TPROXY 的标记和策略路由。如果 Xray 没有收到请求,先查流量入口,不要反复修改远端节点参数。

网页能开,语音或游戏还是连不上?

先确认是否只部署了 TCP REDIRECT,再检查 UDP 透明入站、远端 UDP 能力和防火墙放行情况。浏览器加载成功不能证明 UDP 已接管,也不能据此判断所有应用都走同一路径。

断电重启后,为什么又不能用了?

检查 Xray 服务启动状态、DNS 上游就绪时间和防火墙重载后的规则。通过 logread 查启动错误,并重新验证域名引导解析。不要依赖只在终端手动执行一次、重启便消失的规则。

准备扩大接管范围时,再考虑 DHCP 参数。常见 IPv4 DHCP 选项中,选项 3 指定默认网关,选项 6 指定 DNS;两者不要求必须是同一台设备。变更后需要客户端重新获取租约,已有连接也可能继续沿用旧路径。先验证一台重新租约的设备,再处理其余设备。

旁路由部署的关键不是规则越多越好,而是每一层都能单独验证:客户端确实把流量交给旁路由,防火墙只接管预期范围,DNS 不循环,Xray 出站可用,回程也符合设计。完成这些验证后,再把桌面客户端中已经确认可用的节点参数迁移到长期配置,维护起来更清楚。

下载客户端