本帖最后由 丶企鹅未婚夫 于 2023-8-22 22:29 编辑
pve7用了2年,挺稳定的,最近看PVE升级到8.0了,把我的小玩具也升级了一下,升级后运行的也挺好,没啥问题,但是心里有点不爽啊,其实就是想折腾一下,玩具嘛。所以全部重装了一下,这里把dns的设置给大家分享一下,也当作是自己的一个记录吧。 这里使用的是alpine的LXC容器作为底层。alpine非常小,很节省资源,用起来也比较简单。大部分docker也是用alpine实现的。我对其算是情有独钟。 为什么和论坛其他人各种套娃方式不一样呢?因为单个adguardhome本身是可以实现dns分流效果的,因为功能隐藏的有些深,没人发现罢了。我们能用一个软件实现的功能为什么要用多层套娃呢。 原理:这里利用adg的上游服务器配置文件,实现国内白名单列表由阿里的doh来解析,其他的都用另外填入的国外doh服务器来解析,实现国内外分流。 国内用阿里实现速度快,国外用其他实现防污染。也可以国外白名单,国外列表指定某个doh解析,国内用其他的上游解析。也可以实现国内指定一个doh解析,需要代理的指定一个doh解析,剩下的用其他doh来解析。总之算是比较灵活。 这里再添加一点说明,adg支持[/265.com/]https://dns.alidns.com/dns-query 这种形式为某个的域名指定dns服务器解析。 上面的语句就是265.com这个域名极其子域名都由阿里的doh来解析。其实可以把这种都填在上游服务器列表里面,但是几万条的话你复制进去会卡死的,所以用配置文件的方法来实现。 这里实现的方法就是用脚本自动下载Loyalsoldier/“师夷长技以制夷”-rules-dat这个项目下面的直连域名列表,可直连的苹果域名列表,可直连的谷歌域名列表,然后把下载的所有列表都转换成adg可以识别的格式,并且拼接在一个文件中,提供adg来使用。 所以你要是不嫌麻烦的话,也可以修改我提供的sh文件,把需要代理的域名列表也下载下来,然后指定他们用谷歌和opendns的doh来解析。然后关闭adg设置里面的EDNS客户端子网,让/科/学/路由代理谷歌和opendns的doh域名,这样就实现了需要代理的网站直接用你的“师夷长技以制夷”来解析,国内的继续用阿里doh来解析。我在sh里面也提供了相关的语句,取消注释添,在最上面加下载网址网址即可。 其他的漏网之鱼就用df.up里面的上游来解析。 感谢Loyalsoldier大神提供的域名列表! 这里说一下我的网络架构。 ①一个极简的openwrt虚拟机,作为主路由使用,功能是拨号,提供DHCP服务,发射WIFI信号。 ②一个极简的openwrt旁路由,用LXC的方式安装,只用来番/羽/土/蔷。 ③一个dns服务器,就现在教程里面的这个。 建议: ①建议大家不要执着于ipv6,如果你番/羽/土/蔷的话,那么最好关掉ipv6。使用ddns的话只打开主路由的ipv6就行,可以用socat端口转发实现联通内网其他没有ipv6的设备,如果要链接ipv6下载的话,建议需要的机器设置静态内网ipv6地址使用。 ②和我一样玩all in one的人,建议尽可能的把各种功能分开到不同的虚拟机或者LXC容器里面部署。这样你折腾的时候其它服务不容易崩。PVE本身还是非常稳定的,只要你保持PVE母机的环境不被污染,不要乱安装其他服务,一般没啥事。 好了,教程开始了。都是傻瓜式的,大家直接照着做就行,几分钟搞定。 1.下载alpine的ct模板。
2.创建alpine的ct
这里主意一下,防火墙关闭,没啥用,一个主路由防火墙就够了,ipv4那里自己填吧。网关那里要填写能番/羽/土/蔷的路由器ip,因为下载adguardhome是从github上面拉取的。 我这里硬盘给了256M。内存给了512M。 然后打开容器的自动开机自启动。 到这里lxc的alpine安装完成。 3.打开刚刚创建好的容器。 进行初始化设置。 输入以下命令。 - sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
复制代码更换国内源 - apk add --no-cache tzdata
- ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- echo "Asia/Shanghai" > /etc/timezone
复制代码设置国内时区,因为后面要用到定时器实现自动更新文件,所以这一步是必要的。 安装curl工具。安装adguardhome要使用,后面有个自动运行脚本也要使用。 安装bash工具,执行脚本的时候要使用到。
初始化alpine
4.现在开始安装adguardhome了,我这里选择的是beta版本安装。 - curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c beta
复制代码你也可以安装最新的稳定版 - curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
复制代码
安装adg
出现这样的页面安装成功。 现在网页打开192.168.1.249:3000进入到adg的初始化页面。
首次网页adg
需要注意的就是这里,因为我们是单独的dns服务器,所以不用改这里,默认就行。注意的是,下次打开的时候直接输入192.168.1.249即可,不用后面添加3000的端口号。 然后重启,浏览器输入192.168.1.249 看看服务是否能够正常启动。没问题的话,就继续往下。 5.重启之后登陆,现在因该在默认的/root目录下 依次执行以下三条命令 在/root下创建list文件夹 进入list文件夹 在list文件夹下面创建list.up文件 这个list.up文件填不填内容都无所谓。 英文输入法状态下 按esc键 然后保存退出即可 主意,wq前面有个冒号。 创建默认上游服务器文件df.up 英文状态下按 “ i ” 键进入插入模式。 粘贴以下内容 - # https://doh.360.cn/dns-query
- # https://dns.google/dns-query
- https://doh.opendns.com/dns-query
- https://doh.dns.sb/dns-query
- https://dns.cloudflare.com/dns-query
- https://dns.quad9.net/dns-query
- # https://dns-unfiltered.adguard.com/dns-query
- # https://77.88.8.8:443/dns-query
复制代码这里是默认的上游服务器。推荐大家都使用这种doh的服务器,加密防泄漏。除了提供dns服务的公司知道你访问什么网站,运营商都不知道。 然后保存退出 那现在主意一下我们的/root/list/目录下存在以下两个文件 list.up df.up 可以用命令ls来查看当前文件夹下的文件。 可以用命令pwd来查看当前所在目录。 好了 现在我们写脚本。创建list.sh文件。 按i键进入插入模式。粘贴我在后面提供的脚本文件进去。 保存并退出。 给脚本可执行权限。 初次执行脚本。 鉴于有人执行出现问题,这里贴一个我个人执行的结果(单独给脚本设置了重试次数2和最大限制时间10秒)你们要设置的话改一下这一句即可。 if curl --connect-timeout 3 -m 10 --retry 2 --output "/root/list/$filename" "$url" ; then
- alpine-adg:~/list# ./list.sh
- Start downloading from github...
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
- curl: (28) Connection timeout after 3000 ms
- direct-list.txt download failed!!!,Removing direct-list.txt ......
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- apple-cn.txt download failed!!!,Removing apple-cn.txt ......
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0
- curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
- Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
- 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
- curl: (28) Connection timeout after 3000 ms
- google-cn.txt download failed!!!,Removing google-cn.txt ......
- 1.Check that all files are downloaded...
- Find some files not downloaded successfully, remove all downloaded files, and try to download from the CDN agent site. .
- Removal successful
- Start downloading files from the CDN proxy site...
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 100 797k 0 797k 0 0 123k 0 --:--:-- 0:00:06 --:--:-- 143k
- direct-list.txt downloaded successfully!!!
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 100 4167 0 4167 0 0 1537 0 --:--:-- 0:00:02 --:--:-- 1537
- apple-cn.txt downloaded successfully!!!
- % Total % Received % Xferd Average Speed Time Time Time Current
- Dload Upload Total Spent Left Speed
- 100 4265 0 4265 0 0 2499 0 --:--:-- 0:00:01 --:--:-- 2501
- google-cn.txt downloaded successfully!!!
- 2.Check that all files are downloaded...
- 3.Check that the files are stored in a local directory...
- direct-list.txt exists!!!
- apple-cn.txt exists!!!
- google-cn.txt exists!!!
- cp list.up to list.up.bak...
- The backup is complete
- ......txt to adg......
- !!!!!......OK......!!!!!
- Cleaning......
- Restart the ADG service......
- * Stopping AdGuardHome ... [ ok ]
- * Starting AdGuardHome ... [ ok ]
- ......ojbk enjoy......
- alpine-adg:~/list#
复制代码说明一下,我现在dns服务器是用的主路由网关,没有用/科/学/网关,所以执行输出上面显示github下载文件失败。从cdn代理网站上下载成功。
重点主意:以下是实现分流的核心内容
|