部署实践 预计阅读 14 分钟

路由器与旁路由部署 V2Ray 内核概览:架构选择与注意事项

梳理主路由直跑、旁路由网关两种部署架构的差异与适用场景,概览内核配置文件的关键字段、透明代理的基本思路,以及性能瓶颈与固件兼容性的评估要点。

把 V2Ray 或 Xray 内核放到路由设备上,目标通常不是增加一个手动设置的 SOCKS 代理,而是让局域网设备经过统一网关完成流量识别、路由分流和 DNS 处理。部署是否稳定,主要取决于网关位置、Linux 网络能力、内核配置、规则数据和硬件性能,而不是仅看配置文件能否启动。

本文速览

本文适合准备在家庭或小型办公网络部署网关代理的读者。内容覆盖主路由直跑与旁路由两种架构、V2Ray 与 Xray 内核选择、透明代理入口、策略路由、DNS 防回环、性能测试和故障定位,读完可以先完成架构评估,再决定是否进入实际部署。

先确定网关位置:主路由直跑还是旁路由

主路由直跑是指承担拨号、NAT、DHCP 和防火墙职责的设备同时运行内核。数据路径最短,客户端默认网关不需要调整,局域网中的新设备也容易自动进入规则体系。代价是所有网络职责集中在一台设备上,内核异常、规则错误或内存不足都可能影响整个局域网。

旁路由网关通常与主路由处于同一网段,由主路由继续负责外网接入,旁路由负责选定设备的转发与透明代理。它便于单独重启和回退,也适合先选择一台电脑或安卓设备试运行,再逐步扩大范围。需要注意的是,旁路由并不是接上线就会自动接管流量,客户端默认网关、DHCP 下发和静态路由必须明确配置。

主路由直跑

拨号、NAT、DHCP、分流与内核进程集中运行,数据路径短,但故障影响范围最大。

适合:硬件余量充足、网络结构简单、可安排维护窗口

旁路由网关

推荐

外网接入与代理网关分离,可按设备逐步接管,配置失败时能快速切回主路由。

适合:家庭网络试部署、需要低风险回退、设备分组管理

终端独立运行

由 v2rayN、v2rayNG 或 v2flyNG 在终端处理订阅和代理,不改动局域网网关。

适合:设备数量少、只处理单机流量、不需要全网分流

选择前先画出实际数据路径。例如旁路由地址为 192.168.1.2、主路由地址为 192.168.1.1,被接管设备的默认网关应指向 192.168.1.2,旁路由的默认路由再指向 192.168.1.1。如果客户端仍把主路由作为默认网关,旁路由上的透明代理规则不会收到这些流量。

结论:第一次部署优先保留独立回退路径

先让单台测试设备使用旁路由网关,确认 DNS、国内直连、代理出口和断线恢复均正常,再修改 DHCP 批量下发。这样可以把配置错误限制在测试设备,而不是同时中断全网。

内核、固件与处理器能力怎么评估

路由设备上的“支持 V2Ray”可能只表示能够运行某个二进制文件,并不代表固件已具备透明代理所需的全部能力。至少要确认处理器架构匹配、系统能够执行目标内核、可用存储足够、服务管理器能够拉起进程,并且内核网络模块支持策略路由与透明转发。

V2Ray 内核适合既有 VMess、VLESS 和常见传输配置;Xray 内核在 VLESS、透明代理和较新传输能力方面更常见。两者的配置结构相近,但并非所有字段都能直接互换。订阅链接也不能由路由内核直接当作配置文件读取,通常需要管理层先解析订阅,再生成符合内核格式的出站配置。

推荐方案:网关负责分流,终端保留独立诊断入口

路由网关
  • 固定内核版本与配置路径
  • 透明入口监听 12345 端口
  • 按域名与目标 IP 执行分流
  • 日志由系统服务统一轮转
测试终端
  • 桌面使用 v2rayN 7.x 验证节点
  • 安卓使用 v2rayNG 或 v2flyNG 对照测试
  • 保留直连网关用于故障回退
  • 分别记录 DNS 与代理出口结果

节点可用性与网关转发能力分开验证,能够避免把订阅失效误判为路由规则故障。

处理器性能不能只看核心数。相同的四核设备可能因主频、缓存、加密指令和散热设计不同而出现明显差距。内存方面,内核本身、规则数据、DNS 缓存、日志和固件后台服务会共同占用空间;只有 128 MB 内存的旧设备在加载较大 GeoSite 数据后更容易触发回收或进程退出。

12345
透明代理示例端口
1 GB
建议起步内存
32 MB
建议预留配置与日志空间
10 分钟
持续负载测试时长

配置文件的关键字段与透明入口

网关配置至少包含入站、出站、路由和日志四部分。透明代理入站常用 dokodemo-door,并通过 followRedirect 接收防火墙重定向后的原始目标地址。出站应设置清晰的标签,例如 proxydirectblock,路由规则再引用这些标签。

下面是结构示意,省略了真实服务器地址、认证信息和完整 DNS 配置。示例监听 12345,同时接收 TCP 与 UDP,并启用目标嗅探。实际使用时,出站协议和传输字段必须与节点参数一致。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "transparent-in",
      "port": 12345,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp,udp",
        "followRedirect": true
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "streamSettings": {
        "sockopt": {
          "tproxy": "tproxy"
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": []
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom"
    },
    {
      "tag": "block",
      "protocol": "blackhole"
    }
  ],
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

geoip:private 应放在靠前位置,避免局域网、回环和保留地址进入代理出站。域名规则通常先由嗅探结果或 DNS 结果参与匹配,未命中时再按目标 IP 判断。规则由上到下执行,范围过大的规则放在前面,会遮挡后续更精确的直连或阻断规则。

  • inbounds:确定透明入口监听地址、端口、网络类型与重定向行为。
  • outbounds:保存代理、直连和阻断出口,标签必须与路由规则完全一致。
  • routing:按域名、IP、端口、入站标签等条件决定流量出口。
  • dns:决定域名向哪个服务器查询,以及查询流量是否经过代理。
  • log:首次部署建议使用 warning 或临时切换至 info,稳定后避免长期输出过量日志。

结论:先验证最小配置,再加入订阅和规则数据

先用一个入站、一个可用出站和一条私网直连规则确认内核可启动,再逐项加入 DNS、GeoIP、GeoSite 与多节点选择。一次引入全部功能,会让端口、字段和规则错误难以分离。

透明代理、策略路由与 DNS 回环

透明代理并不是内核单独完成的功能。防火墙负责选中流量并设置标记,策略路由把带标记的数据包送到本地透明入口,内核读取原始目标后再选择出站。TCP 可以使用重定向或 TPROXY,UDP 通常需要 TPROXY 才能保留目标信息。具体命令取决于固件使用的防火墙后端。

以下命令只展示 Linux 策略路由与 TPROXY 的核心关系,不是可直接覆盖所有固件的完整脚本。执行前应确认系统包含对应模块,并排除网关自身、局域网地址、内核出站连接和管理端口,否则容易形成流量回环。

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

iptables -t mangle -N V2RAY
iptables -t mangle -A V2RAY -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A V2RAY -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1

旁路由还需要开启 IPv4 转发,可通过 sysctl net.ipv4.ip_forward 检查,返回 1 才表示已启用。若使用 IPv6,则必须单独设计 IPv6 路由与防火墙规则;仅处理 IPv4 时,应确认客户端不会通过未接管的 IPv6 默认路由绕过旁路由。

  1. 先用 ip route 确认旁路由默认出口指向主路由。
  2. ip rule 检查标记 1 是否查询路由表 100
  3. 用防火墙计数器确认测试流量确实进入自定义链。
  4. 检查 12345 是否由目标内核监听,且监听协议包含 TCP 与 UDP。
  5. 最后查看内核日志,区分“没有流量进入”和“出站连接失败”。

DNS 最常见的问题是查询路径与代理路径互相套用。例如局域网设备把旁路由设为 DNS,旁路由又把查询发送到会被透明规则重新截获的地址,最终出现超时或重复连接。处理方式是给 DNS 出站设置明确标签,或在防火墙中排除本地 DNS 进程与上游地址。

性能瓶颈要用持续负载判断

路由设备的吞吐由协议、传输层、加密计算、连接数量和散热共同决定。网页偶尔打开并不能证明性能足够,短时测速也可能被 CPU 突发频率掩盖。更有效的方法是在固定节点和固定网络条件下持续传输 10 分钟,同时记录吞吐、CPU、内存、温度和丢包。

一组实验室参考条件为四核 ARM Cortex-A53 1.5 GHz、1 GB 内存、千兆网口、300 Mbps 外网。直连实测约 286 Mbps;启用单个 VLESS over TCP with TLS 出站后,持续吞吐约 126 Mbps,CPU 峰值 91%,设备温度从 54°C 上升到 72°C。该结果只说明此硬件组合存在计算瓶颈,不能替代对具体设备的测试。

286 Mbps
样机直连吞吐
126 Mbps
代理持续吞吐
91%
测试 CPU 峰值
72°C
十分钟末温度

如果 CPU 单核长期接近满载而网口利用率不高,瓶颈多半在协议处理或加密计算;如果 CPU 较低但丢包增加,应检查网卡驱动、软中断和队列;如果运行数分钟后速度逐步下降,则要检查温度与降频。大量短连接还会提高连接跟踪表和内存压力,与单连接测速结果并不相同。

观察项 典型现象 优先检查
CPU 单核持续 90% 以上,吞吐不再增长 协议开销、加密能力、进程线程分布
内存 可用内存持续下降,内核进程被终止 规则数据、日志大小、连接数量
温度 前两分钟速度正常,之后阶梯式下降 散热、降频状态、设备摆放
丢包 延迟抖动,UDP 应用首先异常 网口协商、软中断、防火墙队列

家庭千兆网络并不意味着网关必须跑满千兆代理吞吐,但至少应覆盖实际外网带宽,并保留约 20% 的计算余量。若 300 Mbps 外网在测试中只能稳定处理 126 Mbps,继续增加规则并不能解决硬件瓶颈,应降低接管范围、改用性能更高的旁路由,或让高负载终端独立运行客户端。

上线前检查与常见故障处理

部署完成后不要只看内核状态显示“运行中”。完整验证应覆盖直连域名、代理域名、局域网地址、DNS 查询、TCP、UDP 和网关重启恢复。还要检查配置文件权限、系统时间和规则数据位置,因为证书校验依赖准确时间,而 GeoIP、GeoSite 文件缺失会导致对应规则无法按预期加载。

  • 客户端能访问主路由与旁路由的管理地址,私网流量没有进入代理。
  • 国内直连规则与代理规则分别命中预期出站标签。
  • 53 端口只有计划中的 DNS 服务监听,不存在重复占用。
  • 透明入口端口 12345 未暴露到外网接口。
  • 重启后内核、策略路由和防火墙规则按正确顺序恢复。
  • 停止内核时有明确降级策略,不让全部流量继续送往失效端口。

旁路由已经启动,设备流量为什么完全不经过它?

先在设备上查看默认网关。若仍是主路由地址,就把测试设备网关改为旁路由地址,再用防火墙计数器确认数据包是否进入透明代理链。只修改 DNS 地址不会自动改变默认转发路径。

网页可以打开,语音或游戏流量却超时怎么办?

检查透明入口是否同时监听 TCP 与 UDP,并确认 UDP 规则使用 TPROXY 且标记进入路由表 100。随后查看出站节点是否支持当前 UDP 用法,不要只依据 TCP 网页测试判断整体连通性。

重启旁路由后必须手动执行命令才能恢复?

把启动过程拆成网络就绪、内核启动、策略路由加载和防火墙加载四步,并让后续步骤依赖前一步成功。若防火墙先于透明端口生效,启动阶段的流量可能被送到尚未监听的 12345 端口。

订阅在 v2rayN 中可用,放到路由器上却启动失败?

先在 v2rayN 7.x 的「设置」→「参数设置」中确认实际 Core 类型,再对照路由器上的内核类型和版本。订阅管理层生成的字段可能依赖特定内核,不能把客户端导出的全部字段直接视为通用配置。

访问局域网存储时速度变慢,应该先改哪条规则?

geoip:private 或明确的局域网网段直连规则放在代理规则之前,并确认防火墙在进入 TPROXY 前已排除 192.168.0.0/16 等实际私网范围。修改后观察规则计数,而不是只清理浏览器缓存。

最终配置应保留一份可启动的最小版本和一份当前运行版本。每次只调整一个变量,例如更换内核、更新规则数据或修改 DNS 上游,调整后完成同一套验证。路由器部署的可靠性来自可观察、可回退和可重复,而不是一次写入大量规则后长期不检查。

下载 v2rayN 进入客户端安装包页面