旁路由直跑 V2Ray 内核:OpenWrt 软路由部署思路与透明代理要点

不想每台设备都装客户端?本文概览在 OpenWrt 旁路由上直接运行内核的整体架构,涵盖网关与 DNS 指向、透明代理和分流规则的规划要点。

本文速览

旁路由部署要先打通普通转发,再接入内核与透明代理。本文面向能进入 OpenWrt 管理页并使用 SSH 的读者,用一组局域网地址说明网关、DNS、策略路由与出站规则如何配合。读完可以制定单设备试运行方案,区分配置错误与流量接管错误,并保留断网时的回退路径。

旁路由架构:网关与 DNS 分开确认

只在 OpenWrt 上启动 V2Ray,局域网设备不会自动使用代理。内核负责处理送到入站的连接;操作系统负责把设备流量送过来。透明代理还需要防火墙规则、策略路由与对应的监听端口。三层中少一层,进程即使正常运行,也可能没有任何业务流量。

本文采用单臂旁路由示例:主路由是 192.168.10.1,OpenWrt 是 192.168.10.2,测试电脑是 192.168.10.100,子网掩码均为 255.255.255.0。这些地址仅用于说明,部署前必须换成自己的网段,并确认旁路由地址不在 DHCP 自动分配范围内。

设备配置示例职责
主路由192.168.10.1连接上游网络,初期继续提供 DHCP。
OpenWrt192.168.10.2,上游网关为 192.168.10.1转发测试设备流量,运行内核与本地 DNS 服务。
测试电脑网关与 DNS 均先设为 192.168.10.2验证接管链路,暂不改其他设备。
其他设备仍由主路由分配原网关与 DNS保留正常上网路径,减少试验影响。

网关决定数据包下一跳,DNS 决定域名解析路径,两者不是同一个开关。只改 DNS,通常不会接管普通网页连接;只改网关,也不保证设备采用旁路由的 DNS 策略。浏览器的安全 DNS、自带解析器的应用以及 IPv6 默认路由,都可能形成另一条路径。

内核选择:按节点配置判断

OpenWrt 上直接运行的是内核进程,不是桌面客户端界面。v2rayN 管理桌面配置,v2rayNG 与 v2flyNG 管理 Android 配置;这些客户端的菜单不能直接搬到路由器上。服务器地址、端口、身份字段、传输方式、TLS 与服务名称等参数,需要转换成所选内核能够读取的配置。

V2Fly 内核

推荐

本文以 V2Fly 的 V2Ray 5.x 命令行为主线。已有 VMess 等兼容配置时,可先沿用对应内核,减少迁移变量;仍须按实际版本核对传输字段。

适合:已有兼容配置,准备先验证旁路由链路

Xray 内核

节点明确要求 REALITY 或 XTLS Vision 时,应使用支持相应能力的 Xray 版本。不能只把可执行文件改名为 v2ray,再假设配置字段和命令参数全部通用。

适合:节点明确依赖 Xray 特有配置

结论:先核对完整节点参数

把协议、传输、安全层和内核版本写成一份配置记录,再决定部署哪一个内核。仅看到“VLESS”或“VMess”名称,不足以判断整份节点配置是否兼容。

安装前还要核对处理器架构、存储空间与 OpenWrt 软件源。运行 uname -m 可查看运行架构,但软件包还受发行版 ABI 与依赖约束。不要混用其他 OpenWrt 分支的软件源。订阅链接也不等于原生内核配置;订阅需要由明确支持其格式的工具解析,更新后应先测试再替换运行配置。

部署顺序:先转发,再接管单台设备

不要同时修改全网 DHCP、DNS 与防火墙。推荐先备份配置,再只改变一台测试电脑。下面菜单以常见 LuCI 界面为例;翻译或版本可能略有差异,应按页面字段确认,不要仅凭按钮位置操作。

  1. 保存备份

    进入「系统」→「备份/升级」→「生成备份」,保存现有配置。记录电脑原来的网关和 DNS,同时保留直连 OpenWrt 管理地址的方式。

  2. 固定地址

    进入「网络」→「接口」→「LAN」→「编辑」,确认静态地址为示例中的 192.168.10.2/24,上游 IPv4 网关为 192.168.10.1。检查是否存在第二个 DHCP 服务,避免两台设备竞争分配地址。

  3. 验证转发

    暂不启用透明代理,只把测试电脑网关改为旁路由。进入「网络」→「防火墙」检查相关区域的转发策略与需要的源地址转换,确认普通直连可以工作。

  4. 测试内核

    准备完整配置后执行 v2ray test -c /etc/v2ray/config.json。通过后先前台运行,观察日志;再交给已配置的 procd 服务管理。旧版命令不同,先查看 v2ray help。

  5. 限定接管

    只匹配测试电脑 192.168.10.100 的流量,配置透明入站、策略路由与防火墙。确认直连、代理和 DNS 都符合预期后,再考虑由 DHCP 下发旁路由网关。

# 以下为 V2Fly V2Ray 5.x 的检查与前台运行示例
v2ray version
v2ray test -c /etc/v2ray/config.json
v2ray run -c /etc/v2ray/config.json

# 以下在另一个 SSH 会话中检查系统状态
ip -4 route show
ip -4 rule show
ss -lntup
logread -e v2ray

透明代理:入站、标记与策略路由

透明代理不是把系统代理端口对外开放。常见方案中,REDIRECT 主要用于 TCP 重定向;TPROXY 可以处理 TCP 和 UDP,但需要内核模块、透明套接字支持、报文标记与策略路由共同配合。具体入站设置必须匹配防火墙采用的机制。

OpenWrt 22.03 起默认防火墙体系转向 firewall4 与 nftables。旧教程中的 iptables 命令不能直接当作当前配置依据。先查看系统实际使用的防火墙,并确认所需的 TPROXY 支持可用;命令执行成功,也不代表规则已命中目标流量。

12345
示例透明入站端口
0x1
示例策略路由标记
100
示例独立路由表编号

以上是规划值,不是实测数据,也不是所有系统的固定要求。TPROXY 规则把指定连接交给 12345 入站,并设置标记;对应的 ip rule 将带标记的报文送到独立路由表,表内需要本地投递路由。标记值、掩码与路由表编号必须成套核对,并避免与已有策略冲突。

检查层核对内容遗漏后的现象
流量入口源地址、LAN 接口与 TCP/UDP 匹配范围内核没有连接记录,或误接管其他设备。
排除规则局域网、管理地址、广播组播、节点服务器地址管理页失联、局域网服务异常或代理循环。
透明入站监听地址、端口、原目标读取及 TPROXY 套接字选项流量到达本机,却没有可用进程接收。
策略路由报文标记、规则优先级与本地投递路由报文继续转发或被丢弃,入站仍无请求。
内核出站服务器参数、DNS 与直连/代理规则顺序入站有记录,但出站连接失败。

最初只接管 LAN 转入流量,不要立即接管路由器自身的 OUTPUT 流量。内核连接远端服务器时会产生新的本机连接;若这些连接再次被送回透明入站,就会形成循环。后续确需接管本机流量时,要设计独立的出站标记或进程排除,并处理节点域名解析后的地址变化。

DNS 与分流:解析路径要能解释

推荐把 DNS 当作独立服务规划。终端向旁路由的 53 端口查询,由 dnsmasq 等本地解析服务转发到合适的上游。V2Ray 配置中的 DNS 模块并不自动等于一个对 LAN 开放的 DNS 服务;需要另行配置监听或转发链路。

一种可检查的设计是让本地 DNS 服务监听 LAN 的 53,再把指定查询转交给本机 127.0.0.1:1053 上已经运行的解析服务。端口只是示例,必须确认实际有服务监听。若下游解析服务又把查询发回 192.168.10.2:53,就会形成 DNS 转发循环。

# 从安装了 nslookup 的测试电脑执行
nslookup example.com 192.168.10.2

# 在 OpenWrt 上核对监听与策略
ss -lnup
ip -6 route show
nft list ruleset

结论:用日志确认路径,不用测速猜路径

分别测试一个明确直连的目标和一个明确代理的目标,对照 DNS 日志、规则计数器与内核出站标签。网页能打开只能证明连接完成,不能证明它走了预期的出站。

透明接管后的流量可能只带目标 IP。若分流依赖域名,就要说明域名信息从哪里获得;内核嗅探只能识别部分协议中的信息,并非所有应用都可还原域名。DNS 返回地址、域名规则与实际连接应保持一致。相关字段可继续查看DNS 设置说明,但桌面客户端的设置项不能直接视为 OpenWrt 防火墙规则。

常见故障:按链路逐层排查

改网关后全都打不开,先查哪里?

先把测试电脑网关恢复为主路由,确认上游正常。再关闭透明接管,只验证旁路由普通转发。检查 LAN 转发策略、上游默认路由和回程路径,不要先更换节点。

内核在运行,为什么没有连接记录?

检查电脑实际网关是否为 192.168.10.2,再看 nftables 规则计数器。若计数增长但入站无记录,核对 12345 监听和标记到路由表的映射,同时排除浏览器仍使用显式代理的情况。

能连接 IP,域名却一直超时?

运行 nslookup example.com 192.168.10.2。检查 53 端口是否监听、LAN 到本机的 DNS 输入是否允许,以及上游解析是否可达;若使用 1053 转发,再确认该端口存在真实服务。

网页正常,游戏和部分应用不通?

检查是否只配置了 TCP 重定向,以及节点和出站是否支持所需 UDP。查看 IPv6 默认路由与相关规则。不要通过永久封锁某种协议来掩盖接管缺失,应先确认应用实际使用的传输。

防火墙重启后代理失效怎么办?

对比重启前后的 nft list ruleset 与 ip rule show。自定义规则、策略路由和内核服务都要有持久化与启动顺序安排;同时确认没有另一份规则重复添加相同标记。

共享日志时,保留时间、入站标签、出站标签和错误类型即可。超时可能来自服务器不可达、解析失败或回程异常;端口占用则应从 ss -lntup 中找监听进程。不要只截最后一行“连接失败”,也不要公开完整订阅链接或身份字段。

验收与回退:扩大到全网之前

旁路由的价值是集中管理,但故障影响范围也会扩大。单设备试运行至少应覆盖重启、DNS 查询、局域网访问、直连与代理出站、UDP 和 IPv6。没有完成这些检查前,保留主路由原有 DHCP 分配,不急着让全网改网关。

  1. 验证重启:重启 OpenWrt 后,确认内核服务、DNS、透明规则和策略路由均恢复,且没有重复规则。
  2. 验证内网:访问主路由管理页、文件共享和其他本地服务,确认局域网排除规则没有误伤。
  3. 验证失效行为:停止内核,观察被接管连接的表现。没有明确设计故障旁路时,代理流量通常会失败,不能假定它会自动直连。
  4. 验证回退:把测试设备网关和 DNS 改回原值,再移除自定义接管规则与策略路由。只停止内核、保留重定向规则,仍可能导致断网。
  5. 最后再推广:通过主路由 DHCP 设置下发旁路由网关和 DNS 后,更新客户端租约,并抽查实际收到的地址。静态配置设备需要单独处理。
下载v2rayN查看平台与安装包