OpenWrt + OpenClash + AdGuard Home 打造家庭专用网络

注意
本文最后更新于 2023-09-11,文中内容可能已过时。

搞了个低功耗小玩具N5105,做软路由刚刚好。

总体方案

家庭网络,要使用顺手,我认为要符合以下几点:

  1. 光猫只桥接信号,主路由负责拨号,摆脱光猫弱鸡性能,保证并发量及持续稳定。
  2. 旁路由负责科学上网、VPN、DNS防污染、广告过滤等,功能只覆盖专用网络内部使用,影响面可控,保障就算旁路由宕机,也不影响大众群体网络正常访问。
  3. NAS可根据储存数据的重要性分情况考虑,更建议独立机器部署,以免磁盘共用使得物理读写频繁损耗加剧,从而影响导致整体性能。

主路由规划

为达到以上要求,方案自然就出来了。

  1. 主路由通过 DHCP 规划网段,以一个C段(192.168.3.0/24)为例,可分网段管理:
    • 主路由设置内网IP(192.168.3.1),DNS自动获取或手动设置均可;
    • 旁路由设置静态IP(192.168.3.2),GW(192.168.3.1),DNS(223.5.5.5);
    • 正常接入网络自动获取,IP(192.168.3.101 - 192.168.3.200),GW(192.168.3.1),DNS(223.5.5.5、119.29.29.29);
    • 对家庭成员常用设备手工静态分配,IP(192.168.3.41 - 192.168.3.80),GW(192.168.3.1),DNS(223.5.5.5、119.29.29.29);
    • 个人专用网络静态分配,IP(192.168.3.91 - 192.168.3.100),GW(192.168.3.2),DNS(192.168.3.2、223.5.5.5);
    • 剩余地址按需分配使用。

旁路由配置

最终方案:客户端→AdGuard Home(53)→OpenClash(7874)

配置思路
  1. 客户端→Dnsmasq(53)→Clash(7874)→AdGuard Home(5335)
  2. 客户端→Dnsmasq(53)→AdGuard Home(5335)→OpenClash(7874)
  3. 客户端→AdGuard Home(53)→OpenClash(7874)

按思路1,在OpenClash里开启DNS劫持,让Dnsmasq把请求转发到OpenClash,然后在OpenClash里设置自定义上游DNS,把底下所有的上游DNS勾选都去掉,新建一个FallBack从AdGuard Home里获取结果;配置虽然成功了,但广告去除效果不好,根因是要屏蔽广告的地址经过OpenClash时就被代理出去了,所以不会向上游AdGuard Home去请求解析,而且AdGuard Home里客户端只能看见127.0.0.1这一条,也不够完美,所以这方案放弃;随后尝试方案2,AdGuard Home里的客户端也都能正常显示了,发现前面多了Dnsmasq似乎多余了,因为它只负责转发,所以衍生出方案3,但有个缺点,因为Dnsmasq和DHCP功能是在一起的,跳过了Dnsmasq则DHCP也不能用了,解决方案就是禁用旁路由DHCP功能,去lan接口里设置忽略此接口(不在此接口提供DHCP服务),完美。

安装OpenWrt系统

  • 网络-接口-Lan,底下基本设置勾选 「忽略此接口」
  • 网络-DHCP/DNS-高级设置,把DNS服务器端口由53改为其他,比如5335,主要不要端口冲突,保存生效

OpenClash科学上网

  • 服务-OpenClash-全局设置-DNS设置,去掉本地DNS持,勾选自定义上游DNS服务器,然后在下面自定义DNS里看够不够,有更好的DNS也可以加上去,勾选远程域名解析,应用配置

AdGuard Home广告过滤

  • 服务-AdGuard Home,点更新核心,点启用,重定向选择「无」,点手动设置,按如下修改,改完保存&应用

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    bind_host: 0.0.0.0
    bind_port: 3003
    ...
    dns:
      bind_hosts:
      - 0.0.0.0
      port: 53
      ...
      upstream_dns:
      - 127.0.0.1:7874
  • 配置结束,点击AdGuard Home里AdGuardHome Web:3003,可以打开ADG的管理界面,点击「过滤器->DNS封锁清单」,去网上找一些大神维护的ADG的去广告规则,加进去。

0%