更新 SmartDNS 配置

This commit is contained in:
CallMeR
2023-12-10 18:00:16 +08:00
parent 906db9eac4
commit 1555ec02ca
5 changed files with 138 additions and 77 deletions
+136 -13
View File
@@ -179,12 +179,24 @@ $ sudo crontab -e
若需使用 `SmartDNS` 代替 `Adguard Home` ,可使用 Debian 官方源进行安装,但其版本通常较为 “过时” 。 若需使用 `SmartDNS` 代替 `Adguard Home` ,可使用 Debian 官方源进行安装,但其版本通常较为 “过时” 。
因此,更推荐使用其 Github 仓库中的最新稳定版进行安装,官方仓库请参阅 [pymumu/smartdns](https://github.com/pymumu/smartdns/releases) 。
多数情况下,`SmartDNS` 足以提供良好的 DNS 解析服务,但为了进一步优化 DNS 解析流程,推荐与 `Dnsmasq` 嵌套使用。
```bash ```bash
## 安装 SmartDNS ## 安装 Dnsmasq
$ sudo apt install smartdns $ sudo apt install dnsmasq
``` ```
因此,更推荐使用其 Github 仓库中的最新稳定版进行安装,官方仓库请参阅 [pymumu/smartdns](https://github.com/pymumu/smartdns/releases) 检查 `dnsmasq.service` 服务状态,确保该服务开机自启
```bash
## 检查 Dnsmasq 服务
$ sudo systemctl status dnsmasq.service
## 设置 Dnsmasq 服务开机自启
$ sudo systemctl enable dnsmasq.service
```
下载 `SmartDNS` 最新版本时,请根据系统架构选择合适的版本,逐行执行以下命令。 下载 `SmartDNS` 最新版本时,请根据系统架构选择合适的版本,逐行执行以下命令。
@@ -211,7 +223,7 @@ $ chmod +x ./install
$ sudo ./install -i $ sudo ./install -i
``` ```
修改 `SmartDNS` 配置之前,需检查 `smartdns.service` 服务状态,确保该服务开机自启 修改 `SmartDNS` 配置之前,需检查 `smartdns.service` 服务状态,确保该服务开机自启。
```bash ```bash
## 检查 SmartDNS 服务 ## 检查 SmartDNS 服务
@@ -228,8 +240,11 @@ $ sudo systemctl enable smartdns.service
若需使用 `SmartDNS` 过滤广告,则需下载其广告过滤配置文件,为可选操作。 若需使用 `SmartDNS` 过滤广告,则需下载其广告过滤配置文件,为可选操作。
```bash ```bash
## 创建 SmartDNS 配置文件目录
$ sudo mkdir -p /etc/smartdns.d
## 下载广告过滤配置文件 ## 下载广告过滤配置文件
$ sudo wget https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns/anti-ad-smartdns.conf $ sudo wget https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns.d/anti-ad-smartdns.conf
``` ```
修改 `SmartDNS` 主配置文件之前,建议关闭 `SmartDNS` 并清理 DNS 缓存文件。 修改 `SmartDNS` 主配置文件之前,建议关闭 `SmartDNS` 并清理 DNS 缓存文件。
@@ -260,10 +275,10 @@ $ sudo nvim /etc/smartdns/smartdns.conf
**额外说明:** **额外说明:**
- 当不使用 `anti-ad-smartdns.conf` 进行广告过滤时,需移除主配置文件中对应配置项。
- 由于修改了缓存路径,`SmartDNS` 的缓存将在系统重启时自动删除,请根据实际情况进行调整。 - 由于修改了缓存路径,`SmartDNS` 的缓存将在系统重启时自动删除,请根据实际情况进行调整。
- `SmartDNS` 端口监听参数为 `6053@lo` ,请根据实际情况进行调整。
- 检查配置文件中关于本地域名及其上游 DNS 服务器相关配置,请根据实际情况进行调整。 - 检查配置文件中关于本地域名及其上游 DNS 服务器相关配置,请根据实际情况进行调整。
```bash ```bash
@@ -281,13 +296,13 @@ $ sudo nvim /etc/smartdns/smartdns.conf
# server 2402:4e00:: # server 2402:4e00::
# server 2400:3200::1 # server 2400:3200::1
conf-file /etc/smartdns/anti-ad-smartdns.conf conf-file /etc/smartdns.d/*.conf
cache-file /tmp/smartdns.cache cache-file /tmp/smartdns.cache
log-level notice log-level notice
bind [::]:53 bind [::]:6053@lo
bind-tcp [::]:53 bind-tcp [::]:6053@lo
serve-expired yes serve-expired yes
serve-expired-ttl 57600 serve-expired-ttl 57600
@@ -319,7 +334,31 @@ server-https https://dns.alidns.com/dns-query
``` ```
### 6.2.定时任务 ### 6.2. SmartDNS 插件
该插件是一组为 `SmartDNS` 特别定制的配置文件,由 `bash` 脚本生成,用于加速中国境内域名的解析速度。
关于插件的详细介绍,请参阅 [SmartDNS China List 安装脚本](https://gitee.com/callmer/smartdns_china_list_installer) 。
若需使用该插件进行域名加速解析,则需下载其安装脚本,为可选操作。
脚本执行完成后,生成的 `SmartDNS` 配置文件存放于 `/etc/smartdns.d` 目录下。
```bash
## 下载插件安装脚本
$ sudo wget https://gitee.com/callmer/smartdns_china_list_installer/raw/main/smartdns_plugin.sh -O /opt/smartdns_plugin.sh
## 设置安装脚本可执行权限
$ sudo chmod +x /opt/smartdns_plugin.sh
## 安装脚本文件防篡改
$ sudo chattr +i /opt/smartdns_plugin.sh
## 执行安装脚本
$ sudo bash /opt/smartdns_plugin.sh
```
### 6.3.定时任务
本步骤为可选操作,主要设置 `SmartDNS` 定时更新广告过滤配置文件和定时重启。 本步骤为可选操作,主要设置 `SmartDNS` 定时更新广告过滤配置文件和定时重启。
@@ -333,9 +372,93 @@ $ sudo crontab -e
```bash ```bash
## 定时任务配置项 ## 定时任务配置项
15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns/anti-ad-smartdns.conf 15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns.d/anti-ad-smartdns.conf
25 5 * * * /usr/bin/systemctl restart smartdns.service 20 5 * * * /usr/bin/systemctl restart smartdns.service
```
若使用了 `SmartDNS` 插件,由于插件自带服务重启功能,因此定时任务可为如下配置。
```bash
## 定时任务配置项
15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns.d/anti-ad-smartdns.conf
20 5 * * * /usr/bin/bash /opt/smartdns_plugin.sh
```
### 6.4.配置 Dnsmasq
`Dnsmasq` 的主配置文件一般位于 `/etc` 目录下,修改配置文件之前,使用以下命令将其备份。
```bash
## 备份 Dnsmasq 主配置文件
$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
```
使用 `neovim` 编辑器创建 `Dnsmasq` 主配置文件,执行以下命令。
```bash
## 创建 Dnsmasq 主配置文件
$ sudo nvim /etc/dnsmasq.conf
```
在编辑器对话框中输入以下内容,并保存。
**额外说明:**
- 请根据系统内存使用情况,调整缓存参数 `cache-size`
- `Dnsmasq` 有且仅有 `SmartDNS` 作为上游 DNS 服务器。
```bash
# This configuration file is customized by fox,
# Optimize dnsmasq parameters for local DNS server.
# Main Config
conf-dir=/etc/dnsmasq.d/,*.conf
conf-file=/etc/dnsmasq.conf
log-facility=/var/log/dnsmasq.log
log-async=20
cache-size=1024
edns-packet-max=1232
rebind-domain-ok=/fox.home.arpa/
bind-dynamic
bogus-priv
domain-needed
localise-queries
local-service
no-hosts
no-negcache
no-resolv
no-round-robin
rebind-localhost-ok
stop-dns-rebind
# DNS Filter
server=/alt/
server=/home.arpa/
server=/ipv4only.arpa/
server=/resolver.arpa/
server=/example/
server=/bind/
server=/invalid/
server=/local/
server=/localhost/
server=/onion/
server=/test/
# DNS Server
server=/fox.home.arpa/172.16.1.1
server=/fox.home.arpa/fdac::1
server=127.0.0.1#6053
server=::1#6053
``` ```
+1 -1
View File
@@ -6,7 +6,7 @@ $ sudo chmod +x /opt/dnsmasq_plugin.sh
## 设置 crontab ## 设置 crontab
15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns/anti-ad-smartdns.conf 15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns.d/anti-ad-smartdns.conf
20 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-dnsmasq.conf -O /etc/dnsmasq.d/anti-ad-dnsmasq.conf 20 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-dnsmasq.conf -O /etc/dnsmasq.d/anti-ad-dnsmasq.conf
+1 -1
View File
@@ -12,7 +12,7 @@
# server 2402:4e00:: # server 2402:4e00::
# server 2400:3200::1 # server 2400:3200::1
conf-file /etc/smartdns/anti-ad-smartdns.conf conf-file /etc/smartdns.d/*.conf
cache-file /tmp/smartdns.cache cache-file /tmp/smartdns.cache
log-level notice log-level notice
-50
View File
@@ -1,50 +0,0 @@
# This configuration file is customized by fox,
# Optimize SmartDNS parameters for local DNS server.
#
# For use common DNS server as upstream DNS server,
# please modify 'server' parameter according to
# your network environment.
#
# eg:
# server 119.29.29.29
# server 223.5.5.5
# server 114.114.114.114
# server 2402:4e00::
# server 2400:3200::1
conf-file /etc/smartdns/anti-ad-smartdns.conf
cache-file /tmp/smartdns.cache
log-level notice
bind [::]:53
bind-tcp [::]:53
serve-expired yes
serve-expired-ttl 57600
serve-expired-reply-ttl 3
prefetch-domain yes
serve-expired-prefetch-time 28800
force-qtype-SOA 65
server-tcp 119.29.29.29 -group dnspod -exclude-default-group
server-tcp 2402:4e00:: -group dnspod -exclude-default-group
nameserver /doh.pub/dnspod
nameserver /dot.pub/dnspod
server-tcp 223.5.5.5 -group alidns -exclude-default-group
server-tcp 2400:3200::1 -group alidns -exclude-default-group
nameserver /dns.alidns.com/alidns
server 172.16.1.1 -group intranet -exclude-default-group
server fdac::1 -group intranet -exclude-default-group
nameserver /fox.home.arpa/intranet
domain-rules /fox.home.arpa/ -speed-check-mode none -no-cache
server-tls dot.pub
server-tls dns.alidns.com
server-https https://doh.pub/dns-query
server-https https://dns.alidns.com/dns-query
-12
View File
@@ -1,12 +0,0 @@
## 下载 smartdns 插件安装脚本
$ sudo wget https://gitee.com/callmer/pve_toss_notes/raw/master/src/debian/debian_dns_smartdns_plugin.conf -O /opt/smartdns_plugin.sh
## 设置安装脚本权限
$ sudo chmod +x /opt/smartdns_plugin.sh
## 设置 crontab
15 5 * * * /usr/bin/wget -q --tries=10 --retry-connrefused --random-wait https://anti-ad.net/anti-ad-for-smartdns.conf -O /etc/smartdns/anti-ad-smartdns.conf
20 5 * * * /usr/bin/bash /opt/smartdns_plugin.sh