旁路由部署 V2Ray 内核:路由器与 Linux 小主机直跑 Xray 的思路

介绍主路由与旁路由两种部署拓扑,以及内核直跑时网关指向、透明代理、DNS 接管等关键环节,并列出常见的配置坑。

本文速览

旁路由部署不是把桌面客户端搬到路由器上。它需要同时处理网关、内核入口、防火墙、DNS 和回程。本文面向能登录 Linux 终端的读者,用一个明确的 IPv4 测试网段说明部署顺序:先验证 Xray 出站,再接入单台设备,最后扩展透明代理范围。配置片段只用于分层验收,不是一份复制后即可接管全网的脚本。

一、主路由与旁路由的流量路径

主路由承担上网出口,通常负责拨号、地址分配和 NAT。旁路由则是在现有局域网里增加一台转发设备,让选定终端先把流量送给它,再由它决定直连还是交给代理出站。旁路由只接上网线,并不会自动获得其他设备的流量;必须通过终端网关、DHCP 选项或主路由策略路由明确引流。

本文示例中,主路由为 192.168.10.1/24,Linux 小主机为 192.168.10.2/24,测试电脑为 192.168.10.100/24。这些地址是教学用私网地址,部署前要按实际网段调整,并在主路由中保留小主机地址,避免与 DHCP 动态分配冲突。

单台终端旁路由

推荐

保持主路由现状,只将测试电脑的默认网关改为 192.168.10.2。小主机的默认网关仍为 192.168.10.1。影响范围小,断网时容易恢复。

适合:首次验证、已有家庭网络、逐台迁移

主路由直接运行

在主路由上运行 Xray,并在同一设备完成引流。路径较集中,但需要确认处理器架构、可用内存、存储空间和防火墙集成方式。

适合:可控路由系统、能够维护防火墙的用户

双网口独立网段

小主机上游接主路由,下游使用独立子网。下游终端统一把小主机作为网关,回程更清晰,但需要单独配置地址分配、转发与出口 NAT。

适合:独立测试网络、长期网关部署

结论:先限制到一台测试电脑

首次部署不要直接修改全网 DHCP 网关。先让 192.168.10.100 走旁路由,确认普通网页、DNS 和局域网访问均正常,再考虑批量接入。

二、直跑 Xray 前的环境检查

V2Ray 常被用作这类代理工具的统称,但 Xray 与 V2Fly 是不同内核项目,配置能力不能混为一谈。这里采用 Xray。v2rayN 是桌面客户端,v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核;它们的订阅管理和界面设置,不等于 Linux 上已经配置好透明代理。

在路由器上要先检查 CPU 架构和系统 C 库要求,在 Linux 小主机上要确认服务管理器、防火墙体系及二进制路径。不能把一个架构的可执行文件直接搬到另一种架构,也不应在已有管理脚本的设备上再叠加另一套规则。

# 查看架构、内核和当前网络状态
uname -m
uname -r
ip -br address
ip route
timedatectl status

# 以下命令假定 Xray 已安装在这个路径
/usr/local/bin/xray version
/usr/local/bin/xray run -test -config /etc/xray/config.json

# 查看本文示例涉及的端口
ss -lntup | grep -E ':(53|10808|12345)\b'
10808
示例本机 SOCKS 测试端口
12345
示例 TCP 透明入口端口
53
传统 DNS 的 TCP 与 UDP 端口

这些数字是配置约定,不是性能测试结果。若端口已有占用,要同时调整内核配置与防火墙规则。系统时间也应保持准确;TLS 握手依赖证书有效期,时间错误可能表现为连接失败,而不是单纯的路由问题。

三、按五步接入测试终端

操作顺序应从应用层到网络层。先证明内核能主动连接,再证明终端流量能到达旁路由,最后处理透明入口。反过来一次改网关、DNS 和防火墙,出了问题就很难区分是哪一层失效。

  1. 记录原配置

    记录测试电脑原来的地址、网关和 DNS,保存小主机的 ip route 输出,并备份 /etc/xray/config.json。远程维护时保留一条本地管理通道。

  2. 验证出站

    在 /etc/xray/config.json 配置仅监听 127.0.0.1:10808 的 SOCKS 入口和已确认的代理出站。先执行配置测试,再从小主机主动请求目标地址。

  3. 设置网关

    Windows 测试电脑进入「设置」→「网络和 Internet」→ 当前网卡属性 →「IP 分配」→「编辑」,选择手动 IPv4。示例地址为 192.168.10.100,子网掩码为 255.255.255.0,网关为 192.168.10.2。不同版本字段位置可能略有变化。

  4. 接入 TCP

    增加 12345 透明入口,防火墙只匹配测试电脑来源和实际 LAN 接口。先处理 TCP,保留内网目的地址直连,不同时加入 UDP 与设备自身流量接管。

  5. 接入 DNS

    小主机的 DNS 服务能够回答查询后,再将测试电脑 DNS 改为 192.168.10.2。验证 UDP 53、TCP 53 和域名解析结果,最后重连网卡并检查设置是否生效。

小主机自己的默认路由必须指向主路由,不能指向自己。在单网口、同子网方案中,直连转发包可能由主路由直接回到终端,形成非对称路径。是否采用受限 SNAT,应根据回程与状态防火墙要求决定;SNAT 会隐藏原始终端地址,不是可以随手开启的万能修复。

四、透明入口与防火墙如何配合

透明代理由两部分组成:防火墙负责把符合条件的包送到本机入口,Xray 负责读取原始目的地址并选择出站。仅监听一个端口不会自动截获终端流量;仅设置重定向而没有对应入口,也不会产生可用代理。

接入方式关键机制部署边界
显式 SOCKS应用主动连接本地入口适合先验证出站,不需要透明引流
TCP REDIRECTNAT 重定向配合原始目的地址读取适合分阶段验证 TCP,不代表 UDP 已被接管
TPROXY透明套接字、包标记、策略路由可处理 TCP 与 UDP,需要内核及防火墙配套

下面是用于直连验收的最小配置。它提供本机 SOCKS 和 TCP 透明入口,但唯一出站为 freedom,所有请求仍然直连。它不包含代理节点、DNS 服务或防火墙规则,不能把它误当作最终代理方案。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    },
    {
      "tag": "lan-tcp",
      "listen": "0.0.0.0",
      "port": 12345,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp",
        "followRedirect": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

TPROXY 不是把 REDIRECT 的名字换掉即可。它通常要用包标记选择专用路由表,并在该表中设置本地投递路由,内核入口也要启用对应透明套接字选项。标记值、路由表编号及防火墙优先级必须与已有系统规则错开。本文不提供脱离设备环境的全网规则脚本。

五、DNS 接管要独立验收

网关和 DNS 是两项独立配置。把终端网关改成旁路由,并不保证它会使用旁路由解析域名。终端可能继续查询主路由,也可能使用浏览器加密 DNS。传统端口 53 的重定向,不能自动接管基于 HTTPS 的 DNS 请求。

建议先在小主机上准备一个只对可信 LAN 提供服务的解析器,然后让它明确选择上游路径。Xray 配置里的 dns 字段用于内核内部解析,不等于已经在局域网地址上开放了一个通用 DNS 服务。内核解析、终端查询和路由匹配需要分别验证。

检查对象验证方法判断重点
终端 DNS 指向查看网卡当前 DNS 地址确认不是仅修改了默认网关
UDP 查询dig @192.168.10.2 example.com A确认服务监听、来源授权和上游可达
TCP 查询dig +tcp @192.168.10.2 example.com A确认 TCP 53 没有被漏掉
IPv6 解析dig @192.168.10.2 example.com AAAA确认 IPv6 数据路径与预期一致

透明入口收到的流量常常只有目标 IP。如果希望按域名分流,需要考虑域名信息从何而来。嗅探可从部分 HTTP 或 TLS 流量提取信息,但不能保证覆盖所有连接;启用嗅探也不意味着浏览器的 DNS 行为被统一。IP 规则与域名规则要结合实际入口能力设计。

六、转发、回程与启动顺序

旁路由上未被透明入口捕获的包仍需要正常转发。Linux 的 IPv4 转发开关、FORWARD 放行规则和上游回程必须同时成立。打开转发开关不是允许所有包通过,防火墙也不应因此改成全放行。

# 查看 IPv4 转发是否开启
sysctl net.ipv4.ip_forward

# 查看反向路径过滤设置,是否调整需结合实际拓扑判断
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter

# 查看规则与策略路由,不要在远程会话中直接清空规则
sudo nft list ruleset
ip rule show
ip route show table all

# 仅适用于已创建 xray.service 的 systemd 环境
systemctl status xray --no-pager
journalctl -u xray -n 80 --no-pager

严格反向路径过滤在策略路由或非对称回程下可能丢包,但不应遇到断网就全局关闭。先确认包从哪个接口进入、反向路由指向哪里,再决定是否在相关接口采用合适策略。使用 nftables 或 iptables 应遵循系统现有管理方式,避免两套脚本互相覆盖。

七、常见故障与恢复顺序

排查时固定一台终端、一个目标和一种协议。先检查显式 SOCKS 是否能通,再看透明 TCP,最后看 DNS 与 UDP。不要把所有超时都归为节点问题:包可能根本没有进入 Xray,也可能已经从内核出站但回程被防火墙丢弃。

现象优先检查处理方向
小主机 SOCKS 也失败出站参数、系统时间、服务日志先修复应用层,不修改终端网关
SOCKS 正常,透明访问失败来源匹配、入口监听、规则计数确认包是否抵达 12345 入口
直连 IP 可达,域名失败DNS 监听与上游、TCP/UDP 53独立验证解析服务,不反复更换节点
网页正常,UDP 应用失败是否只接管了 TCP补齐 UDP 方案后再验收,不能用 TCP 成功代替
部分连接绕过旁路由IPv6 路由、应用自设代理与 DNS检查完整双栈路径和应用行为
重启后全网断开地址变化、服务启动、规则持久化按地址、服务、规则的顺序恢复

需要观察链路时,可在小主机使用 tcpdump -ni eth0 host 192.168.10.100,其中 eth0 必须替换为实际接口名。抓包可能包含域名和通信元数据,应缩小范围、短时间运行,并在分享前隐藏敏感信息。规则计数和入口日志结合起来,比只看浏览器报错更容易定位断点。

结论:保留明确的撤回路径

验收前不要扩展到全网。故障时先把测试电脑网关恢复为 192.168.10.1,并恢复原 DNS;随后仅撤销本次新增规则,不清空整个防火墙。确认主路由直连正常后,再逐层恢复旁路由配置。

旁路由的核心价值是集中处理指定设备的流量,而不是减少网络配置工作。稳定方案需要把入口、出口、DNS、回程和重启行为都写清楚。若只是单台电脑或 Android 设备使用代理,先通过客户端完成节点与协议验证,通常比直接接管网络更容易排查。基本概念可查阅概念速查,连接问题可参考高级用法中的连接排查。

下载v2rayN