Linux 路由器与旁路由部署概览:内核直跑的接管边界

面向部署前选型,解释网关、DNS、转发与内核的分工,比较主路由和旁路由的流量路径,并梳理权限、资源占用与回退准备,不扩展客户端推荐清单。

本文速览

这篇概览适合准备在 Linux 主机上直接运行 V2Ray 或 Xray 内核,并让局域网设备经由该主机转发流量的读者。重点不是复制一份规则,而是先判断主路由、旁路由、DNS 与透明接管各自负责什么,最后得到一套可测试、可观察、可撤回的部署顺序。

先分清“内核直跑”接管了什么

这里的“内核”指运行在用户空间中的 V2Ray 或 Xray 代理核心,不是把代理功能编译进 Linux 内核。代理核心负责接收被送入入站端口的连接,按照路由规则选择直连、阻断或远端出站;Linux 本身仍负责网卡、地址、路由表、连接跟踪、转发和防火墙。

因此,程序显示“运行中”只说明进程已经启动,不代表局域网流量必然经过它。要完成网关接管,数据包必须先到达这台 Linux 主机,再由 nftables 或 iptables 将目标流量送入透明代理入口。返回流量也要沿着可预期的路径回到原设备,否则会出现连接建立后立即中断、部分网站能开而其他应用超时等现象。

旁路由试运行

推荐

保留原主路由拨号与 DHCP,只让一台测试设备把默认网关和 DNS 指向 Linux 主机。影响范围小,便于确认转发、DNS 和代理规则。

适合:首次部署、逐台迁移、需要快速回退

主路由接管

Linux 主机承担默认网关、地址分配与转发,全部终端天然经过它。路径直接,但配置错误会影响整个局域网。

适合:网络结构明确、已有备用管理入口

显式代理

终端手动填写 HTTP 或 SOCKS 地址,不改默认网关。它能先验证节点和出站,但不能代表透明接管已经完成。

适合:验证内核出站、排除防火墙变量

结论:先接管一台测试设备

不要第一步就修改全网 DHCP。先固定一台终端的地址、网关和 DNS,确认直连、代理、域名解析与回退都正常,再扩大接管范围。

网关、DNS、转发与代理核心的职责

默认网关回答的是“数据包下一跳去哪里”。DNS 回答的是“域名解析成什么地址”。Linux 转发负责让从一个接口进入的数据包能够从另一个接口离开,而代理核心只处理真正送到其入站的连接。这四部分相互配合,但任何一部分正常都不能替另外三部分证明部署成功。

例如,终端可以通过 Linux 上的 DNS 服务得到正确地址,却仍然把数据包发往原路由;也可能默认网关已经改成 Linux,但系统未启用 IPv4 转发,导致终端连局域网外地址都失败。另一个常见情况是转发正常、透明入口也在监听,但防火墙没有排除网关自身、局域网网段或远端服务器地址,最终形成循环。

53
局域网 DNS 常用监听端口
12345
本文透明入站示例端口
100
策略路由表示例编号
1
net.ipv4.ip_forward 目标值
网关部署中的职责边界
组件 主要职责 单独正常时不能证明什么
默认网关 把终端的非本地流量送到 Linux 主机。 不能证明 Linux 已转发或代理该流量。
DNS 接收查询并返回域名解析结果。 不能证明后续 TCP、UDP 连接采用同一条路径。
防火墙与策略路由 标记、重定向或透明接收选定的数据包。 不能证明代理核心的出站参数可用。
V2Ray 或 Xray 核心 处理入站连接并执行域名、IP 与协议路由规则。 不能证明终端流量已经到达透明入口。

主路由与旁路由的流量路径差异

主路由模式下,Linux 通常同时持有局域网接口和上游接口,终端通过 DHCP 自动取得它作为默认网关。数据包从局域网接口进入,经过路由判断、防火墙和代理规则后,再从上游接口发出。路径统一,分流规则容易集中维护,但 DHCP、NAT 或转发中的一次错误就可能让整个网络失去外部连接。

旁路由模式下,原路由仍负责上网与地址分配,Linux 主机位于同一局域网。只有把默认网关明确指向旁路由的终端才会经过它。若终端网关仍是原路由,仅把 DNS 改成旁路由,那么旁路由通常只能看到 DNS 查询,看不到后续连接,透明代理规则自然不会命中。

还要检查回程。旁路由将数据包转发给原路由后,原路由需要知道响应如何返回终端。常见做法是在旁路由出口进行源地址转换,或者在原路由上添加指向测试网段的静态路由。前者部署简单,但原路由看到的是旁路由地址;后者保留源地址,要求网络设备具备明确的路由配置能力。

结论:DNS 地址不能代替默认网关

如果目标是透明接管,测试终端的默认网关必须真正指向 Linux 主机;只修改 DNS 适合验证解析,不足以验证流量接管。

按可回退顺序完成部署

部署时应把“节点是否可用”和“网关是否接管”拆成两次测试。先用显式代理验证核心配置和远端连接,再启用 Linux 转发与透明规则。这样一旦出错,可以快速判断问题在代理出站还是本地网络路径。

  1. 记录原网络

    保存测试终端原来的 IP、子网掩码、默认网关与 DNS。旁路由也要固定局域网地址,避免 DHCP 租约变化后失去管理入口。

  2. 验证核心出站

    先让 V2Ray 或 Xray 监听仅供测试的 HTTP/SOCKS 端口,例如 10808,并在单个应用中显式填写该地址。此时不启用透明转发。

  3. 确认核心类型

    如使用 Windows 测试终端交叉验证同一份节点参数,可在 v2rayN 打开「设置」→「参数设置」→「Core 类型」,确认所选核心与协议配置匹配。

  4. 打开系统转发

    检查 net.ipv4.ip_forward 是否为 1,再确认 FORWARD 链允许测试网段通过。先保持普通路由可用,不急于加入透明规则。

  5. 接入透明入口

    为 TProxy 设置数据包标记、策略路由和本地路由表,将选定 TCP/UDP 流量送入 12345,并排除局域网、组播、广播、网关自身和远端服务器地址。

  6. 逐项扩大范围

    先测试一个固定 IP,再按设备组扩大。每次只改变网关、DNS或规则中的一项,并保留停用透明规则后恢复普通转发的操作入口。

下面的命令用于查看状态,不会替你生成防火墙规则。输出中应重点确认转发值、策略规则、路由表和监听端口是否与自己的配置一致。若系统使用 nftables,就应直接查看实际规则集,而不是只检查兼容层显示的内容。

sysctl net.ipv4.ip_forward
ip rule show
ip route show table 100
nft list ruleset
ss -lntup | grep -E '(:53|:10808|:12345)'

TProxy、重定向与 TUN 应怎样选择

透明接管并不只有一种实现。TCP 重定向规则容易理解,但原始目标和 UDP 处理能力受实现方式限制。TProxy 可以在保留目标信息的同时接收 TCP 与 UDP,更适合需要域名、IP 和传输层联合分流的网关,不过它依赖防火墙标记、策略路由和代理核心透明入站配置,排错步骤更多。

TUN 则让代理核心创建虚拟网络接口,从路由层接收流量。它能减少部分防火墙重定向逻辑,但仍需正确设置路由、DNS、接口权限和回避规则。若默认路由错误地再次指向 TUN,远端服务器连接也可能被送回代理自身,形成循环。

三种接管方式的部署重点
方式 适合范围 主要检查点
TCP 重定向 先验证 TCP 网页访问和基础分流。 重定向链、目标端口、局域网与保留地址排除。
TProxy 需要同时处理 TCP、UDP 并保留原目标。 数据包标记、策略规则、table 100、本地路由与入站权限。
TUN 希望由虚拟接口统一承接路由流量。 接口权限、默认路由、MTU、DNS 与远端地址回避。

部署初期不建议同时叠加 TProxy 与 TUN。两条接管链并存时,同一连接可能被重复处理,日志中只看到不断重连,却很难从表面判断流量在哪一步回环。先选一种方式跑通 TCP、UDP 和 DNS,再决定是否有切换方案的必要。

DNS 与路由分流要分别验证

基于域名的分流需要可靠的域名信息来源。代理核心可能从入站协议、DNS 结果或流量探测中获得域名,但这些来源并不总是等价。若终端已经把域名解析成 IP,再以透明流量进入网关,核心看到的可能只有目标 IP,此时仅配置域名规则不一定命中。

DNS 还要避免自我循环。例如,Linux 上的本地 DNS 把查询转给代理核心,而核心配置的上游域名又需要调用同一个本地 DNS,查询就会反复回到原入口。较稳妥的做法是明确区分局域网监听地址、核心内部查询和上游解析路径,并在日志中确认一次查询只有可解释的请求与响应。

旁路由能解析域名,但网页仍直连?

先查看测试终端的默认网关。若网关仍是原路由,只有 DNS 查询经过旁路由。把一台测试设备的默认网关改为 Linux 地址,再检查透明入口计数是否增加。

启用规则后所有连接都超时?

先停用透明规则,确认普通转发恢复;再检查远端服务器地址、Linux 本机流量和局域网网段是否已排除。随后核对端口 12345 是否实际监听。

TCP 正常但 UDP 不通?

确认透明入站启用了 UDP,防火墙规则匹配 UDP,并检查 TProxy 标记与 table 100 的本地路由。只配置 TCP 重定向不会自动接管 UDP。

日志里反复出现重连?

检查代理远端连接是否再次进入透明入口。临时排除远端服务器 IP,并查看路由表确认核心自身的出站没有指回 TUN 或 TProxy 链。

停掉核心后全网无法访问?

说明防火墙仍把流量送往已关闭的入口。回退时应同时撤销透明规则和策略路由,恢复普通 FORWARD 与原 DNS,而不是只停止进程。

资源占用、验收指标与回退准备

网关负载不能只看空闲时的内存。加密连接数量、UDP 会话、日志级别、DNS 缓存和规则规模都会影响资源使用。还要观察软中断、单核占用与网卡吞吐,因为低功耗设备可能在总 CPU 看似不高时,已经有一个核心达到瓶颈。

一组用于建立基线的实测环境为:四核 N5105、4 GB 内存、Linux 6.1、千兆有线接口,单台终端持续传输 500 Mbps,并维持约 800 条连接。运行透明代理后,代理核心常驻内存约 118 MB,整机 CPU 在 18% 至 27% 间变化。这个结果只用于说明记录方法,协议、加密方式、规则数量和硬件不同都会改变数值。

500 Mbps
基线持续传输吞吐
800
测试期间并发连接约数
118 MB
代理核心常驻内存约值
18–27%
测试样机整机 CPU 区间

验收时至少记录直连基线、显式代理、透明接管三组结果,并分别测试首次解析耗时、持续吞吐、连接建立、UDP 和规则命中。若透明接管比显式代理明显更慢,应优先检查 MTU、重复接管、DNS 等待和单核瓶颈,而不是直接更换协议名称。

  1. 备份启用前的路由表、防火墙规则、DNS 配置和系统转发值。
  2. 准备一条命令或服务操作,同时撤销透明规则与策略路由。
  3. 保留原主路由的 DHCP 配置,旁路由试运行期间不要立即删除。
  4. 设置日志轮转,避免调试日志长期写入占满磁盘。
  5. 重启 Linux 主机后重新验收,确认规则加载顺序不会早于网络接口就绪。

部署前的最终判断

如果目标只是让少量应用使用代理,显式代理通常更容易观察,也不需要改变整个局域网路径。如果目标是接管电视、终端工具或不便逐个设置代理的设备,网关模式才有明显价值,但代价是需要同时维护路由、DNS、防火墙与代理核心。

首次部署更适合从旁路由和单台测试终端开始:先验证 10808 显式代理,再打开系统转发,最后把透明入口接到 12345。确认规则命中、DNS 路径、TCP、UDP、IPv4 与回退操作后,才考虑迁移 DHCP 或让 Linux 成为主路由。

客户端与安装入口

需要先在桌面设备验证节点参数时,可前往下载页选择 v2rayN;完成基础连接后,再按教程检查导入、核心类型与代理生效状态。

v2rayN下载