本文速览

本文面向已经能使用桌面或安卓客户端、准备让局域网设备共用代理出口的用户。先用一台测试设备确认旁路由网关,再依次检查内核、透明入口、DNS 和分流规则。读完可以判断该把内核放在主路由还是旁路由,并明确哪些配置属于 OpenWrt 网络层、哪些属于 Xray 或 V2Fly 内核。这里提供部署路线与核对方法,不提供可以脱离设备环境直接套用的完整防火墙脚本。

一、主路由与旁路由:先确定流量经过哪里

透明代理的前提是流量实际经过运行内核的设备。“同一个局域网里放了一台 OpenWrt”不等于其他设备会自动使用它。主路由负责默认网关时,可以在转发路径上接管流量;旁路由只接入交换机时,通常需要修改终端默认网关,或者由主路由通过策略路由把指定流量送过去。

旁路由单设备试点

推荐

保留原主路由的拨号、无线与 DHCP,只给一台测试电脑指定旁路由网关。故障范围小,恢复时只需还原这台电脑的网络设置。

适合:已有稳定网络、首次部署透明代理

主路由直接运行内核

OpenWrt 同时承担网关与代理转发,路径较直观,但内核故障、防火墙变更和资源不足都可能影响整个局域网。

适合:熟悉 OpenWrt、能够维护统一网关

主路由策略送往旁路由

终端继续使用主路由网关,由主路由按设备或网段转发给旁路由。需要设计往返路径和回环排除,不能只加一条默认路由。

适合:需要集中控制设备分组、具备策略路由经验

单网口旁路由常出现“主路由与终端位于同一子网”的情况:去程先到旁路由,回程却可能由主路由直接发给终端。是否需要源地址转换,要根据回程、状态防火墙和连接跟踪决定,不能把开启 NAT 当作万能步骤。同接口转发还可能触发 ICMP 重定向,部署时应检查终端是否因此绕开预期网关。

二、规划地址与端口:避免两个 DHCP 同时发地址

以下采用一个明确的示例网络:主路由为 192.168.10.1,旁路由为 192.168.10.2,测试电脑为 192.168.10.100,子网掩码为 255.255.255.0。这些是本文规划值,不是设备出厂设置;使用前应确认地址未被占用,并把旁路由地址排除在动态地址池之外。

对象示例设置作用
主路由192.168.10.1/24连接上游网络,保留现有 DHCP 服务
旁路由 LAN192.168.10.2/24固定管理地址,上游网关指向主路由
测试电脑192.168.10.100/24默认网关与 DNS 暂设为旁路由地址
其他终端维持现有自动配置试点期间继续使用原网络路径
53
终端访问旁路由 DNS 的端口
1053
示例内部 DNS 服务端口
12345
示例透明代理入站端口

端口必须与实际监听配置一致。本文用 1053 表示可选的本机解析服务,用 12345 表示透明代理入站;安装内核不会自动创建这两个监听。dnsmasq 通常向终端提供 53 端口服务,不要让另一个进程同时抢占同一地址的 53 端口。

三、Xray 与 V2Fly:协议配置决定内核选择

V2Ray 是项目与技术生态中的常见称呼,部署时仍要区分具体内核。Xray 与 V2Fly 不是互换名称,也不能保证同一份配置在两者之间直接通用。已有连接若要求 REALITY 或 XTLS Vision,应核对 Xray 的对应支持;使用 VMess 等连接时,则按服务端参数、传输方式和所选版本确认兼容性。

cat /etc/openwrt_release
ubus call system board
uname -m

# 已安装对应内核时检查版本
xray version
v2ray version

安装渠道优先使用与当前固件版本、架构相匹配的软件源。OpenWrt 22.03 起默认防火墙切换到 firewall4 与 nftables;旧版基于 iptables 的教程不能直接视为通用方案。软件包管理工具也可能随固件版本变化,应先确认当前系统使用的工具,不要混用不同发行版本的软件源。

结论:先验证连接,再接管流量

在修改网关之前,先让旁路由上的内核通过显式代理入口完成一次连接测试。这样可把“节点或配置失败”与“透明转发失败”分开,避免同时排查协议、DNS 和防火墙。

四、OpenWrt 部署步骤:网络、内核、转发分开完成

下面的菜单路径按常见中文 LuCI 界面描述,字段名称可能随固件与翻译变化。操作前保存现有配置,并确保有一台设备仍可直接访问主路由。首次试点不要修改全网 DHCP 网关,更不要在远程连接中一次性替换所有防火墙规则。

  1. 保存配置

    进入「系统」→「备份/升级」→「生成备份」,保存当前配置。记录主路由地址、DHCP 范围和旁路由接线方式,预先准备直连管理入口。

  2. 固定地址

    进入「网络」→「接口」→「LAN」→「编辑」→「常规设置」,配置静态地址 192.168.10.2、掩码 255.255.255.0、网关 192.168.10.1。确认管理地址可访问,再处理 DHCP。

  3. 验证内核

    安装匹配架构的 Xray 或 V2Fly,创建对应格式的配置。先做语法检查,再启动临时显式代理入口测试连接;此时不启用全局流量接管。

  4. 配置转发

    按当前防火墙后端建立透明入口、流量标记与必要的策略路由。先限定来源为 192.168.10.100,并排除旁路由本机、内核出口及管理网段。

  5. 接入测试机

    把测试电脑的默认网关与 DNS 改为 192.168.10.2,关闭该电脑上的系统代理,分别测试直连地址、代理目标和域名解析,防止桌面客户端掩盖路由故障。

  6. 设置自启

    确认测试通过后,再配置 procd 服务与防火墙持久化规则。通过「系统」→「启动项」检查服务状态,并重启设备验证规则和进程都能恢复。

下面使用约定的配置位置演示检查命令。仅执行已安装内核对应的一组;文件路径需要与服务启动参数一致。V2Fly 示例使用 v5 命令形式,旧版本应先查看自身帮助,不要照搬参数。

# Xray 配置检查
xray run -test -config /etc/xray/config.json

# V2Fly v5 配置检查
v2ray test -c /etc/v2ray/config.json

# OpenWrt 服务日志
logread

配置检查成功只说明文件能够被解析,不证明远端可达。正式运行还要检查进程权限、日志输出、监听地址、系统时间与证书验证。路由器重启后时间尚未同步,可能导致 TLS 连接失败,应把时间同步纳入启动后核对项。

五、透明代理原理:防火墙接管与内核分流是两层

第一层由 OpenWrt 决定哪些包交给内核,第二层由内核决定交进来的连接走直连出口还是代理出口。只写内核 routing 规则却没有透明入口,终端流量不会凭空进入内核;只做防火墙转发却没有正确的出站配置,也无法完成代理连接。

机制主要作用部署注意
REDIRECT把连接重定向到本机端口,常用于 TCP 接管要匹配内核恢复原目标地址的方式,不能把 TCP 方案直接套给 UDP
TPROXY透明地把流量送至本机监听,可用于 TCP 与 UDP需要透明套接字支持、标记、策略路由和配套防火墙规则
内核路由按域名、目标地址、端口等选择出站注意规则顺序、域名信息来源和所用数据文件
出口排除防止内核发起的连接再次被接管按进程、标记或目的地址等条件设计,兼顾节点域名解析

以 Xray 为例,透明入口可使用 dokodemo-door,配合 followRedirect 及匹配的 socket 设置;这些字段仍需按具体模式组合。TPROXY 常配合一张专用路由表,把带指定标记的包作为本地流量送到回环设备。标记值和路由表编号属于本机规划,必须避开已有 VPN、策略路由或其他服务占用的值。

六、DNS 与 IPv6:网关正确也可能绕开分流

终端 DNS 指向旁路由后,还要检查旁路由把查询发往哪里,以及这条路径是否符合分流目标。让直连域名使用合适的解析出口、让代理域名的查询通过预期通道完成,比把所有解析请求简单塞进同一个出口更容易定位问题。不要让 dnsmasq 转发给内核,而内核解析又回到 dnsmasq,形成解析循环。

  1. 明确监听关系。终端访问 192.168.10.2:53;若设置独立本机解析服务,可让 dnsmasq 转发到 127.0.0.1:1053。后者必须真的支持所需 DNS 请求,不能拿普通代理端口代替。
  2. 核对转发设置。在「网络」→「DHCP/DNS」中检查 DNS 转发与上游解析来源,确认没有意外沿用运营网络提供的解析器。修改前记录原值,以便回退。
  3. 区分内核 DNS。内核内置 DNS 是否用于路由判断、是否提供可供局域网访问的 DNS 入站,是不同问题。不能仅凭配置里有一个 DNS 字段,就认定已经接管终端解析。
  4. 检查加密解析。浏览器的安全 DNS 或应用自带解析可能绕过终端设置。测试时先统一解析路径,再决定如何通过设备设置或路由策略处理。
  5. 单独检查 IPv6。IPv4 网关改为旁路由后,终端仍可能根据主路由的 IPv6 路由通告直连上游。应为 IPv6 建立对应转发与 DNS 策略,或在测试设备上临时停用它来隔离问题。

FakeDNS 会返回合成地址,再由内核恢复目标域名。它不是“打开就防泄漏”的开关:分配地址范围、终端缓存、透明入口和路由识别必须协同。第一次部署建议先完成普通 DNS 与 TCP、UDP 转发验证,再评估是否需要 FakeDNS,避免把地址映射故障和网关故障混在一起。

七、排查与回退:按地址、解析、转发顺序检查

连接失败时先看基础网络,不要立刻更换协议。测试电脑能访问旁路由管理地址,旁路由能到达主路由,内核显式代理可用,三项都成立后,才集中排查透明接管与 DNS。测试工具可能来自可选软件包,缺少命令时先确认安装情况,不要据此判断网络已经损坏。

# 在旁路由检查地址、路由与策略规则
ip addr show
ip route show
ip rule show

# 使用 firewall4 的系统检查实际规则
nft list ruleset

# 在具备 nslookup 的测试终端检查指定 DNS
nslookup example.com 192.168.10.2
现象优先检查判断方向
管理页也打不开地址冲突、网线、掩码与设备路由先修复局域网连通性,不涉及代理协议
显式代理可用,透明模式失败来源匹配、透明监听、标记与策略路由重点检查 OpenWrt 接管路径
解析超时或反复失败53 端口监听、上游可达性、解析循环分别测试终端到旁路由与旁路由到上游
只有部分应用绕过代理UDP、IPv6、应用自带 DNS 与网关不能只凭浏览器页面判断全设备流量
重启后失效procd、自启、规则持久化与时间同步检查启动过程,而非重复导入订阅

结论:保留单设备回退入口

在全网推广前,把测试电脑网关和 DNS 恢复为原设置,确认原网络仍可使用。之后逐台加入旁路由策略,并记录每次变更;只有重启、DNS、UDP 和 IPv6 检查都通过,才考虑统一下发网关。

旁路由部署的关键不在于让内核进程“运行中”,而在于形成可解释、可验证、可回退的网络路径。先确认协议连接,再确认流量进入内核,最后确认直连与代理分别从正确出口离开。桌面与安卓客户端适合先验证连接参数;OpenWrt 则需要额外维护防火墙、网关、DNS 与服务生命周期。