旁路网关:使用 CatWrt 来提升网络体验
前言
最近笔者外出实习,购买了一台 HUAWEI CPE 用于上网(主要是电信的签约有些坑)。miaoer 得知后,送了一台已经刷好 CatWrt(OpenWrt)系统的 R2S 给我体验。当然,我也简单体验了一下路由级别的 Proxy,突然理解了为什么他们对这个如此热衷。
网络拓扑图
我的网络拓扑非常简单,如下所示:
CPE 设置
在 CPE 端,对手机设置了 DHCPv6 黑名单,不向手机下发 v6 相关的 IP 配置信息,同时将 DNS 设置为 CatWrt,然后对 MAC 和 IP 进行静态绑定
CatWrt 设置
软件配置
关于 OpenWrt,其实我早在虚拟机中体验过。给其他群友解决软路由问题时,也曾了解过相关的软件生态。大部分软件都强耦合 dnsmasq 这个 DNS + DHCP 软件,虽然简单,但我个人觉得在 OpenWrt 中使用它容易引发很多非预期行为。
首先,我禁用了 dnsmasq 的启动,不允许其自启并关闭该软件(虽然没完全关闭,但至少不再捣乱)。
我希望在内网中使用 AdGuard Home 作为 DNS 解析器,并将我的 DNS 信息加密传送到 DNS 服务器。这一步很简单,通过 WebUI 配置即可。但需注意,AdGuard Home 不能接管 53 端口,可以将其设置为 8053 端口。配置截图如下:
你可能会问,那么谁接管 53 端口呢?当然是 Proxy Software,让 Meta Core 接管 53 端口,这样 Meta 可以第一时间获取 DNS 解析请求,并根据域名进行分流,最大化 Meta 的规则作用。
第一步是,将 Meta 的 DNS 设置为 53 端口。
然后开启自定义上游 DNS,地址为 127.0.0.1:8053,将 DNS 请求转发给 AdGuard Home。
然后使用 redir-host + 混合模式,并开启 Meta Core 的 IPv6 支持。
接口配置
我对 v6 也有追求,所以开启了 Meta Core 的 v6 支持。这需要让 CatWrt 也拥有一个 v6 地址。通过 WebUI 配置这一步很简单,效果如下:
在主路由上,我固定了 CatWrt 的 V4 和 V6 地址。
最后,只需在需要接入的终端设备上设置自定义 IP 地址,网关指向软路由(CatWrt)即可。
成品
最终效果如图:
可见,已经实现了域名分流。
DNS 查询流程图:
问题
Q:手机 WI-FI 不支持自定义 IPv6,但 Meta 开启了 V6 支持,该如何解决?
A: 在主路由一侧,不对手机下发 v6 IP 配置。