旁路由网络架构允许你在主路由之外再部署一台 OpenWrt 旁路由。你可以将特定的家庭设备网关指向这台旁路由,通过自定义代理规则,将其互联网流量经由美国独立服务器转发。

配置错误很容易导致路由环路,并暴露未加密的 IPv6 DNS 泄露。但你仍然可以在保留全网精细代理控制的前提下,修复这些问题。

为了保证稳定性,你需要完成四个关键配置步骤。首先,为 OpenWrt 硬件分配一个静态 IP 地址。其次,关闭旁路由上的 DHCP 服务。然后,启用 OpenClash 的 Meta TUN 模式,实现全量流量接管并通过美国独立服务器转发。最后,配置 NDP 代理,使双栈路由得以正确工作。采用这种方案后,OpenWrt 旁路由可以高效承载 OpenClash 的运行。

要点速览

  • 在主路由所在网段内,为 OpenWrt 旁路由分配一个静态 IP 地址。
  • 关闭旁路由上的本地 DHCP 服务,避免全网 IP 地址冲突。
  • 启用 OpenClash Meta TUN 模式,将局域网设备的全部流量导入自定义代理规则。
  • 配置自定义 DNS 以防止未加密的 DNS 请求泄露,并避免路由环路。
  • 通过配置 NDP 代理或中继模式,安全处理网络中的 IPv6 双栈流量。

为旁路由刷写 OpenWrt 固件

准备 OpenWrt 固件安装

例如 mini-PC 或基于树莓派运行 OpenWrt 的目标设备,都需要一份干净的系统镜像。刷写 OpenWrt 固件必须确保镜像文件完整无误,否则会导致常见的启动失败。你需要获取官方的 factory 固件包,或为对应架构专门编译的定制 OpenWrt 固件镜像。

在开始刷机之前,你必须先校验镜像文件。损坏的安装文件会在首次开机配置时造成无法恢复的启动错误。

  1. 从 OpenWrt 官方网站下载与你路由器型号对应的固件镜像。
  2. 在 OpenWrt 官网找到该固件文件对应的 MD5 校验值。
  3. 使用校验工具,计算你已下载固件文件的 MD5 校验和。
  4. 将你计算得到的校验值与官方提供的 MD5 校验值进行对比。
  5. 如果校验值一致,说明固件文件未损坏,可以安全刷写;如果不一致,请勿使用该文件刷机。
  6. 在为旁路由刷机前,同样执行上述校验流程,以避免因固件损坏导致安装失败。

使用 BalenaEtcher 等工具,将已经验证过的镜像写入存储介质,再据此对系统进行刷机。然后将准备好的存储介质插入硬件设备并开机。

初始化 OpenWrt 旁路由网络

开机后你需要第一时间重新配置本地网络参数。OpenWrt 旁路由必须在主路由网段中使用静态 IP 地址。你可以通过 SSH 编辑 /etc/config/network 来修改默认网络设置,并将默认网关地址指向主路由的 IP。

同时,你需要关闭本机的地址分配功能,以避免全网出现 DHCP 冲突。在 /etc/config/dhcp 中编辑相关服务配置。为 LAN 接口显式设置 option dhcpv4 'disabled'option dhcpv6 'disabled'option ra 'disabled'

uci set dhcp.lan.dhcpv4='disabled'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra='disabled'
uci commit dhcp
/etc/init.d/dnsmasq restart

完成这一步后,基础环境就已准备就绪。现在你的 OpenWrt 固件可以安全地工作在主网络内部,而不会产生路由错误。刷机阶段顺利结束,接下来即可进入代理配置环节。

在旁路由上配置 OpenClash

OpenClash TUN 模式配置

你可以在这台旁路由上部署 OpenClash,从而完全掌控网络流量。在安装 openclash 之前,需要先准备好所有系统软件依赖。登录 Web 管理界面,打开软件管理页面,移除系统自带的 dnsmasq 软件包,并安装 dnsmasq-full。这个包为自定义 DNS 分流规则提供了关键支持。随后在 Shell 终端中运行以下命令,一次性安装 openclash 所需要的依赖,避免缺少库文件:

opkg update && opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base

将下载好的软件包上传到 openwrt 运行环境中。上传过程中,你可能会在浏览器中短暂看到 XHR 报错,这是界面提示问题,可以忽略并刷新页面。在“服务”菜单中打开 openclash 插件面板,在首次配置时选择 Meta 内核。Meta 内核可在三层抓取整个局域网的流量。

  1. 在「配置文件管理」中添加你的订阅链接。
  2. 选择 Clash 内核类型并保存订阅配置文件。
  3. 开启主开关以启动内核下载流程。
  4. 在系统运行日志中监控内核下载进度。
  5. 如果下载长时间无进展,将下载源切换到 CDN 镜像地址。

OpenClash Meta 内核会在系统上创建一个独立的 TUN 虚拟网卡。TUN 模式在三层直接截获所有进入系统的网络数据包,无需复杂的应用层代理配置或逐个客户端设置。该模式可以为所有接入的家庭终端稳定转发流量。

自定义 DNS 与劫持防护

合理的 DNS 配置可以防止未加密的域名查询泄露给你的互联网服务提供商。OpenClash 提供两种主要 DNS 工作模式来处理客户端请求,你需要根据实际场景选择合适的模式,以既能防止本地域名被劫持,又不影响内网服务访问。

模式DNS 请求处理方式对 DNS 劫持防护的影响
Fake-IP 增强模式将所有 DNS 请求转发到配置的 DNS 服务器。可能导致所有 DNS 查询(包括 DDNS 解析)都被转发或劫持。可通过关闭「本地 DNS 劫持」选项来避免。
Redir-Host将 DNS 请求发送到配置的 DNS 服务器,但会对部分特定域名(如 DDNS 服务域名)直接返回解析结果。避免这些特定请求被转发,从而防止对这些域名的错误 DNS 劫持。

你需要在 OpenClash 的 DNS 配置页面中仔细调整各项选项。启用自定义 DNS 服务器开关,以覆盖系统默认解析器。将 OpenWrt 本机的管理 IP 地址加入本地 DNS 服务器列表中,这一设置可以阻止旁路由与主路由之间出现无限递归的 DNS 查询环路。

如果你的家庭网络中启用了动态 DNS 服务,请在 Fake-IP 模式下关闭本地 DNS 劫持选项。这样既可以保持本地域名解析正常,又能可靠地代理外网请求。保存设置后,检查系统的实时运行日志,确认 OpenClash 已经接管客户端流量,并彻底阻断未加密的 DNS 泄露。

为 OpenWrt 启用 IPv6 双栈配置

配置 NDP 代理与前缀委派

在开启双栈前,你必须根据上游网络的实际情况选择合适的方案。不同运营商的前缀分配方式不同:有些会提供完整的前缀委派(PD),而另一些只会为主网关分配单个 /64 前缀。你需要在 /etc/config/dhcp 中针对具体的上游条件调整选项配置。

当主路由能够获得前缀委派并负责全网地址分配时,建议使用 DHCP 中继模式。此时,位于旁路由之后的设备也会从下发的前缀中获取正式 IPv6 地址。你需要将上联接口设为主接口,并将相关服务全部设置为中继。

如果运营商仅提供一个 /64 子网而没有前缀委派,则应切换为 NDP 代理模式。NDP 代理在本地接口间转发地址发现报文,使连接到旁路由的设备可以共享这一子网,同时保持直通互联网访问。

UCI 选项取值效果
dhcp.lan.rarelayLAN 接口的 RA 报文被中继
dhcp.lan.dhcpv6relayLAN 接口的 DHCPv6 请求被中继
dhcp.lan.ndprelayLAN 启用 NDP 代理
dhcp.wan.rarelayWAN 接口的 RA 报文被中继
dhcp.wan.dhcpv6relayWAN 接口的 DHCPv6 请求被中继
dhcp.wan.ndprelayWAN 启用 NDP 代理

/etc/config/dhcp 中写入这些设置以启用中继功能。保存文件后,重启 dnsmasq 服务使配置生效。

在 OpenClash 中转发 IPv6 流量

在完成网络接口设置后,你还需要让 openclash 支持双栈流量。现代客户端软件默认都会请求 IPv4/IPv6 双栈连接,如果在内核中关闭双栈支持,很容易出现未加密直连或绕过代理的情况。

在浏览器中打开 OpenClash 面板,找到全局配置中的 IPv6 开关并将其开启,此举会通知 Meta 内核同时接管 IPv4 与 IPv6 流量。

在 openclash 中启用 IPv6,可以防止客户端在访问失败时回落到未加密的直连连接。

接着进入自定义 DNS 菜单,检查当前生效的配置。开启自定义 IPv6 DNS 选项,并填入安全的 DNS 服务器地址。这样 Meta 内核就会通过加密代理通道解析双栈域名。

你还需要检查 openclash 中的 TUN 模式配置。选择原生 IPv6 TUN 模式,以创建专门用于双栈转发的虚拟适配器。该配置可以在三层截获进入系统的数据包,并直接应用你的规则集。

最后,检查 openclash 中的规则定义,确保双栈请求会被路由到包含可用外部节点的代理分组。保存当前配置并重启内核进程,整个配置过程便告完成。此时,你的 OpenWrt 网关可以正确过滤网络请求,并在所有连接上保护隐私。

客户端测试与网络优化

为客户端分配旁路由网关

完成基础配置后,需要将目标设备指向 OpenWrt 旁路由,从而让其流量通过旁路由转发。为设备手动配置网络参数是控制流量走向最可靠的方式。

要让客户端设备通过 OpenWrt 旁路由上网,可以为每台设备手动设置静态 IP,并将默认网关设为 OpenWrt 的 IP。这样可以防止客户端随意修改 ARP 项,并强制其将流量发送到旁路由。有论坛用户提到,即便客户端仍然从主路由获取 IP,只要手动将网关改成 GL-MTxxxx 的 IP,所有流量便会通过这台 GL 设备中转。

你也可以在主路由或本地网络的其他位置进行相应调整,让设备 IP 分配更加自动化。无论采用哪种方案,都建议重新检查整体网络配置,以干净地管理本地选项:

  • 手动网关设置:在系统配置文件中通过 option gateway 和 option dns 指向指定设备地址,可以强制局域网流量走向你的目标硬件。
  • 网关 IP 作为 DNS:让客户端使用主网关地址作为 DNS 服务器,可以保证 DNS 请求按代理规则正确转发。

验证代理效果与 IPv6 泄露防护

在完成所有设置后,你需要对客户端连接进行测试。在接入旁路由的目标设备上打开浏览器,访问在线 IP 检测网站,页面应显示当前代理节点的出口 IP。在 openclash 控制台中查看实时连接列表,可以确认 OpenClash 已在三层正确接管本地流量。

随后,你还需要对地址泄露进行检测。访问专门的 IPv6 测试网站,验证 IPv6 连接的安全性。测试结果应显示你的真实位置已被代理规则隐藏。得当的 openclash 核心设置会阻止任何未加密 DNS 请求直接发送到外部服务器。此时,你的家庭网络已通过 openclash 安全转发数据,并在所有活动接口上保持隐私防护。

至此,你已经在 OpenWrt 旁路由环境中成功整合了 OpenClash 与 IPv6 双栈路由。建议定期审查各个终端的网络设置,确保设备流量持续经过代理规则,而不会绕过旁路由直连外网。OpenClash 会对每一次 DNS 请求进行安全处理。

当上游链路故障导致前缀委派失效时,可以执行以下命令恢复正常连接:

  1. 使用 ifdown wan6 && ifup wan6 重启接口。
  2. 使用 ubus call network.interface.wan6 renew 触发前缀续约。
  3. 创建 /etc/hotplug.d/iface/99-fix-pd-renew,在连通性检测失败时向 odhcp6c 发送 SIGUSR1 信号。

这些定制网络设置可以提升主网络的安全性与可靠性。

常见问题 FAQ

为什么完成网络配置后无法访问 OpenWrt Web 管理界面?

通常是因为你将 OpenWrt 设置到了主路由网段之外。可以在电脑网卡上手动设置一个处于目标网段内的静态 IP 地址,恢复连通后即可重新访问管理面板。

为什么 OpenClash 无法在网关设备上正常启动?

缺少系统依赖或内核下载失败都可能导致启动错误。在启动 openclash 之前,你必须安装 dnsmasq-full。同时检查外网连接状况,必要时将内核下载链接切换为镜像源。

如何排查 IPv6 DNS 泄露等常见问题?

在代理面板中启用原生 IPv6 TUN 模式,并配置自定义 IPv6 DNS 服务器,确保双栈域名查询通过加密通道进行解析,从而防止客户端将未加密的域名请求直接发送给运营商。

为什么应该在网络中部署一台 OpenWrt 旁路由?

OpenWrt 旁路由可以承载大量加密与分流规则,而不会明显增加主路由负载。你可以将特定家庭设备纳入精细化代理控制路径,同时保持其他常规连接的稳定速度。