在OpenWrt上使用SmartDNS进行DNS分流的步骤如下(GPT 生成):
-
安装SmartDNS:
- 首先,确保你的OpenWrt系统是最新的,然后通过SSH登录到你的设备。
- 卸载可能存在的旧版本SmartDNS:
opkg remove smartdns
- 从SmartDNS的GitHub仓库下载适合你的OpenWrt架构的
.ipk
文件。 - 使用
opkg install smartdns.ipk
安装SmartDNS核心包。 - 安装LuCI界面包:
opkg install luci-app-smartdns.ipk
。
-
配置SmartDNS:
- 在OpenWrt的LuCI界面中,进入“服务”->“SmartDNS”进行配置。
- 在“常规设置”中,启用SmartDNS服务,并设置监听端口(默认为6053)。
- 开启“TCP服务器”、“双栈IP优选”、“域名预加载”和“过期缓存服务”。
- 在“重定向”选项中,选择“重定向53端口到SmartDNS”。
- 设置合适的“缓存大小”和“域名TTL”。
-
配置上游服务器:
- 在“上游服务器”部分,添加多个上游DNS服务器。你可以使用国内外的公共DNS,如Google DNS(8.8.8.8)、阿里DNS(223.5.5.5)等。
- 对于国内的DNS,可以设置服务器组为“China”,并选择UDP协议类型。
- 对于国外的DNS,可以选择支持TLS或HTTPS的服务器,并在“额外参数”中添加
-exclude-default-group
以排除默认组。
-
配置Dnsmasq:
- 在“网络”->“DHCP/DNS”中,将DNS转发设置为SmartDNS的监听端口,例如
127.0.0.1#6053
。 - 确保Dnsmasq的DNS服务不是监听在53端口,或者配置SmartDNS以替代Dnsmasq的DNS服务。
- 在“网络”->“DHCP/DNS”中,将DNS转发设置为SmartDNS的监听端口,例如
-
测试配置:
- 在客户端设备上,将DNS服务器设置为OpenWrt设备的IP地址。
- 使用
nslookup
命令测试DNS解析是否正常工作。
-
高级配置(可选):
- 如果需要,可以在SmartDNS的“自定义设置”中添加更复杂的分流规则。
-
注意事项:
- 确保没有其他DNS服务冲突,如Turbo ACC网络加速等。
- 如果使用IPv6,确保你的网络支持并正确配置IPv6。
下面是一个SmartDNS分流的配置文件示例,以及逐行的解释:
# 设置监听的DNS端口
bind 192.168.1.100:53
# 设置TCP监听的DNS端口
bind-tcp 192.168.1.100:53
# 设置上游DNS服务器
server 8.8.8.8 -group google
server 114.114.114.114 -group china
server-tls tls://1dot1dot1dot1.cloudflare-dns.com:853 -group cloudflare
# 设置分流规则,国内网站使用国内DNS
nameserver /domain-set:china/ -group china
# 设置分流规则,国外网站使用Cloudflare的TLS DNS
nameserver /domain-set:google/ -group cloudflare
# 设置域名集china,包含需要国内解析的域名
domain-set -name china -file /etc/smartdns/china_domain.list
# 设置域名集google,包含需要Google解析的域名
domain-set -name google -file /etc/smartdns/google_domain.list
# 设置日志级别为info,方便调试
log-level info
# 设置日志文件的大小和数量
log-size 128k
log-num 2
逐行解释:
bind 192.168.1.100:53
:SmartDNS监听的UDP DNS端口,这里设置为路由器的LAN IP地址192.168.1.100,端口53。bind-tcp 192.168.1.100:53
:SmartDNS监听的TCP DNS端口,用于不支持UDP的环境。server 8.8.8.8 -group google
:添加一个上游DNS服务器,这里使用Google的公共DNS,分组命名为google
。server 114.114.114.114 -group china
:添加另一个上游DNS服务器,这里使用国内的114DNS,分组命名为china
。server-tls tls://1dot1dot1dot1.cloudflare-dns.com:853 -group cloudflare
:添加一个支持TLS的上游DNS服务器,分组命名为cloudflare
。nameserver /domain-set:china/ -group china
:设置分流规则,domain-set:china/
是匹配的域名集,-group china
指定使用china
分组的DNS服务器解析。nameserver /domain-set:google/ -group cloudflare
:设置分流规则,domain-set:google/
是匹配的域名集,-group cloudflare
指定使用cloudflare
分组的DNS服务器解析。domain-set -name china -file /etc/smartdns/china_domain.list
:定义一个域名集china
,包含的域名列表在/etc/smartdns/china_domain.list
文件中。domain-set -name google -file /etc/smartdns/google_domain.list
:定义一个域名集google
,包含的域名列表在/etc/smartdns/google_domain.list
文件中。log-level info
:设置日志记录的详细程度为info
级别。log-size 128k
:设置日志文件的最大大小为128KB。log-num 2
:设置日志文件的数量为2个,旧的日志文件会被新的替换。