群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤

作者:river_wind

背景介绍

最近在家里的nas上部署了clash+adguard home,可以实现家庭网络中所有设备通过clash网络分流,以及adguard home去广告。 中间踩了很多坑,也发现网上对这种情况的介绍很少,有些文章甚至里面有错误,直接照搬是不行的。

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图
群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图1

环境介绍

  • 群晖nas DSM 7.2

  • docker 任意版本都行

  • docker image

    • adguard/adguardhome: “v0.107.36”

    • dreamacro/clash: “v1.17.0”

部署clash

主要配置如下:

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图2

这里非常重要的是clash的网络模式一定要用host,如果用bridge的话,后面会形成环状网络导致CPU暴增服务无法使用 将docker容器中的/root/.config/clash映射到文件夹/path你自己新建一个文件夹 然后下载你clash服务提供商提供的yaml配置,这里我贴下我的: !

redir-port: 转发端口,该端口将接受到所有tcp请求,给到clash进行分流处理,这个端口相当于所有请求的入口,后面在配置iptables转发策略时会用到dns: 这里是启用了clash提供的dns服务listen:clash提供的dns服务绑定的端口nameserver:这里非常重要,这里填的是clash的dns服务的上级dns,我们使用adguard home的ip再加上一个公共的dns服务。adguard home的dns服务我们后面配置。

到这里clash就配置完成了,可以启动容器了。

部署adguard home

主要配置如下:

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图3

该容器可以使用bridge网络,端口映射的用途:

3000->3000:用于adguard home的前端页面,可以请求宿主机ip:3000访问53->5656:这里将容器里面的53端口映射到宿主机的5656端口,这里提供出来的dns服务IP为宿主机IP:5656,也就是上面clash配置文件中dns的nameserver的配置

文件映射两个路径,一个是配置文件夹,一个是工作文件夹。 这里adguard home就配置完成了,启动容器。

iptables流量转发

这一步是clash+adguard home要结合起来使用最重要的一步,也是网上很多文章都没有讲到的一步。 直接贴相关命令:

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图4

执行上面的命令后,所有nas上的配置就完成了,但是这里要注意一下,nas重启后,所有iptables的策略就失效了,这里可以在nas控制面板-计划任务中添加开启启动的任务,执行上面的命令,这样机器重启后就可以生效了。 这里还提供不重启机器去除iptables的策略脚本:

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图5

代理配置

非侵入式代理配置

非侵入式配置就是在每台上网设置的网络设置中,将网关和dns都设置为nas的ip

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图6

侵入式代理配置

上面这样配置的话,需要所有上网设备上都需要配置一遍,很麻烦,可以直接在路由器上设置网关和dns

群晖Nas使用docker部署clash+adguardhome实现家庭网络透明代理及广告过滤插图7

配置完成后路由器重启完,就可以安心上网了!

阅读更多网络存储精彩内容,可前往什么值得买查看

发布于:北京

原文链接:https://k.sina.cn/article_1823348853_6cae187502001b068.html

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享