DNS未正确配置,访问慢的原因
没什么用,DNS修改只对那些挟持的网站,比如Github,国内直接访问很慢或打不开,可以设置有用,访问速度明显加快。当然这些用魔法上网都能解决。
185.199.108.133 185.199.109.133 185.199.110.133 185.199.111.133
Github访问慢的原因:DNS 被污染,导致客户端获取到错误的 IP 地址,或域名解析失败。
常见DNS访问慢原因:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 解析超时 | 本地防火墙拦截、根服务器故障 | 检查iptables规则、更换公共DNS |
| 返回错误IP | 缓存污染、配置错误 | 清除本地缓存、检查zone文件语法 |
| 部分客户端失败 | EDNS0兼容性问题 | 禁用EDNS或调整包大小限制 |
刚才我们Github访问慢属于返回了错误IP,所以手动指定正确的IP是有效的。要想通过DNS快速找到正确和访问快的IP,可以试试SmartDNS应用。
DNS有多个IP的时候,也可以看成负载均衡,指向正确的IP还是错误IP,还是慢IP,就会影响访问体验。一般家用的DNS,默认指向的是路由器网关IP,而路由器网关是将猫的IP作为上游DNS,所以家用DNS最终用的是运营商DNS。
Windows有hosts文件,一般路径:C:\Windows\System32\drivers\etc,Linux目录:/etc/hosts.
这个作用于本地DNS解析器缓存,优先于DNS服务器。公共DNS服务器可以理解成全世界可以访问的hosts文件
DNS查询流程:
当用户输入域名时,本地DNS解析器首先查询本地缓存,未命中则向配置的DNS服务器(如ISP提供的114.114.114.114)发起递归请求。该服务器依次向根服务器(.)、TLD服务器(.com)、权威服务器(example.com)发起迭代查询,最终返回A记录(IPv4)或AAAA记录(IPv6)。
以dig命令为例:
dig www.baidu.com +trace
输出结果会显示完整的查询路径,包含每个层级的响应时间与TTL值。
我们也可以通过traceroute,查询从客户端到目标服务器经过了多少IP路径
traceroute www.baidu.com
还是以百度为例,查看IP路径
那个180开头是百度的IP
DNS服务器根据其功能和作用范围,可以分为以下几种类型:
根DNS服务器:位于DNS层级结构的最顶端,负责处理对顶级域(如.com、.org)的查询,但并不直接解析具体的域名。
顶级域DNS服务器:负责管理特定顶级域下的域名解析,如负责.com域的所有域名解析。
权威DNS服务器:直接负责特定域名(如example.com)的解析,拥有该域名所有记录的最终权威。
递归DNS服务器:通常是由ISP或大型企业提供的,用于处理用户的查询请求,它会代替用户去查询其他DNS服务器,直到找到答案并返回给用户。
公共DNS服务器:由第三方组织提供,如Google DNS、Cloudflare DNS等,任何用户都可以免费使用,通常提供更快的解析速度和更好的安全性。
DNS记录类型:
A记录:基础IPv4地址映射,TTL建议设置在300-3600秒区间平衡缓存效率与更新及时性
CNAME记录:域名别名指向,常用于CDN加速(如将static.example.com指向cdn.provider.com)
MX记录:邮件交换记录,优先级字段决定邮件服务器选择顺序
SRV记录:服务定位记录,格式为service.proto.name TTL IN SRV priority weight port target,用于VoIP等场景
SmartDNS应用介绍和使用
SmartDNS是什么?怎么安装
具备智能解析能力的开源 DNS 应用,核心优势在于突破传统 DNS 固定解析的局限,通过地理定位、运营商识别与多路并发探测技术,为不同来源的用户动态返回最优服务器 IP,实现就近访问与跨网加速,大幅降低访问延迟并提升稳定性。它不仅支持 DoH/DoT 加密协议与恶意域名拦截,能有效防范 DNS 劫持与网络攻击,还具备负载均衡、健康检查、自定义黑白名单等实用功能,广泛适用于家庭网络优化、跨境业务加速、企业多机房流量调度等场景,以轻量低耗的特性兼顾个人与企业级用户的解析需求。
可通过Docker、软路由方式安装,常见安装方式:
| 平台 | 部署步骤 | 关键配置示例 | 验证命令 |
|---|---|---|---|
| Docker(推荐) | 1. 拉取镜像:docker pull pymumu/smartdns:latest2. 启动容器:docker run -d --name smartdns -p 53:53/udp -v /etc/smartdns:/etc/smartdns pymumu/smartdns:latest3. 配置映射:编辑宿主机 /etc/smartdns/smartdns.conf | server 223.5.5.5 -group chinaserver 8.8.8.8 -group globaladdress /example.com/chinacache-size 32768 | docker logs smartdnsnslookup baidu.com127.0.0.1 |
| OpenWrt | 1. 更新源:opkg update2. 安装:opkg install luci-app-smartdns smartdns3. 配置:服务→SmartDNS,设置上游、分组、分流4. 重定向:选择 “作为 dnsmasq 上游” 或改端口 53 停用 dnsmasq | 启用 TCP 服务器、缓存持久化测速模式:ping,tcp:443,tcp:80回复 TTL:300 | iptables -t nat -L PREROUTING | grep REDIRECTnslookup -querytype=ptr smartdns |
| Ubuntu/Debian | 1. 安装:sudo apt update && sudo apt install smartdns2. 启动:sudo systemctl enable --now smartdns3. 配置:编辑 /etc/smartdns/smartdns.conf | server tls://dns.google -group overseasserve-expired yesmax-query-limit 10000 | sudo systemctl status smartdnsdig @127.0.0.1 github.com |
| Windows(WSL) | 1. 启用 WSL2 并安装 Linux 发行版2. 下载安装包:wget https://github.com/pymumu/smartdns/releases/download/latest/smartdns.x86_64-linux-all.tar.gz3. 解压安装:tar -zxvf 包名 && cd smartdns && sudo ./install4. 启动:sudo systemctl enable --now smartdns5. Windows 网卡设首选 DNS 为 127.0.0.1 | 同 Ubuntu 配置,可加 blacklist-ip 拦截恶意 IP | nslookup www.qq.com127.0.0.1 |
SmartDNS配置
可通过smartdns.conf,也可以通过软路由的SmartDNS配置页面设置
以smartdns.conf为例:
# 监听53端口 bind [::]:53 # 配置上游服务器 server 8.8.8.8 server 114.114.114.114 server 202.96.128.166:53 server-tls 1.1.1.1 server-quic 1.1.1.1 server-h3 223.5.5.5
选项中:
bind表示开启服务端,并监听对应的端口,:53表示绑定IPV4的53端口,[::]:53表示绑定IPV6的53端口,后者在大部分系统中,同时也绑定了IPV4端口
server表示上游服务器IP地址,端口可以省略。如需要安全访问上游,可以使用server-tls, server-https, server-quic, server-h3。也可以使用URI方式,如server tls://1.1.1.1:853
server不指定的情况下,将会自动读取/etc/resolv.conf文件中的系统DNS地址
SmartDNS原理:
SmartDNS会向多个上游DNS服务器发起查询,对返回的IP地址进行速度测试,选择最快IP返回给客户端