在海外网络架构优化过程中,我们除了在广域网层引入SD-WAN外,在局域网层也做了关键优化。其中一个非常有效的措施就是在内网部署 SmartDNS,以提升域名解析的速度和准确性,从而加快整体访问速度,尤其在处理复杂的外部服务、CDN节点或API请求时,表现尤为显著。
在跨境网络环境中,传统的DNS解析存在以下几个问题:
递归延迟大:访问国内常用 DNS 服务器时,海外节点解析速度慢,延迟高。
解析不准确:由于运营商 DNS 劫持、污染或缓存陈旧,可能导致解析到错误的 IP。
无法自动选优:默认 DNS 无法根据网络质量智能选取最佳结果。
SmartDNS 的优势在于:
同时请求多个上游 DNS,返回最快响应结果
支持 IP 质量检测(RTT、丢包率)
可对接国内、国际、公共、私有等多种 DNS 服务
支持缓存、过滤、域名黑名单和白名单
可将结果根据 GEO-IP 做智能分流,优化跨国访问
内网部署 SmartDNS
1. 环境准备
选用部署节点:边缘网关服务器或核心交换机上连接的中转 DNS 服务器(如 Ubuntu/Debian 或 OpenWRT)我使用的是fedora
硬件要求极低,普通双核主机即可满足大中型内网解析需求
部署工具:直接使用 SmartDNS 开源软件包
更新系统环境
更新源文件:sudo dnf update -y
安装系统⽀持库:sudo dnf install -y git gcc make openssl-devel
⼆、安装 SmartDns
1、从 下载 smartdns.rpm ⽂件
git clone https://github.com/pymumu/smartdns.git
2、 进⼊克隆仓库并编译
cd smartdns
make
编译成功后,你会在当前目录下看到生成的可执行文件(smartdns)
路径是:/smartdns/smartdns/src/smartdns
3、将编译好的可执⾏⽂件和配置⽂件复制到合适的位置,例如
sudo cp src/smartdns /usr/local/bin/
sudo mkdir /etc/smartdns
sudo cp etc/smartdns.conf /etc/smartdns
4、配置多个高质量上游 DNS 服务器
#用于分流DNS解析,防止被墙
#国内解析走阿里 DNS(223.5.5.5)
#国际访问优先走 Google/Cloudflare/自己的海外专线
#/etc/smartdns/smartdns.conf bind [::]:53
# 缓存预获取和过期缓存设置 prefetch-domain yes serve-expired yes
serve-expired-ttl 259200
serve-expired-reply-ttl 3
serve-expired-prefetch-time 21600
# Default DNS server [IP]server [IP]
# 域名配置
conf-file /etc/smartdns/xxx.smartdns.conf
conf-file /etc/smartdns/china-list.smartdns.conf
conf-file /etc/smartdns/gfw.smartdns.conf
# aliyun
server 223.5.5.5 -group domestic -exclude-default-group
server 223.6.6.6 -group domestic -exclude-default-group
# 114
server 114.114.114.114 -group domestic -exclude-default-group
server 114.114.115.115 -group domestic -exclude-default-group
server 119.29.29.29 -group domestic -exclude-default-group
server 119.28.28.28 -group domestic -exclude-default-group
# GOOGLE (自己的海外专线IP)
server xxxxx -group oversea -exclude-default-group
server xxxxx -group oversea -exclude-default-group
5、下载国内和国外域名表
mkdir /opt/scripts/
cd /opt/scripts/
git clone https://github.com/v2rayA/dist-v2ray-rules-dat.git --depth=1
6、启用 IP 检测与排序策略,编写公司域名配置
#对多个解析结果进行延迟检测,返回最快可达的地址
#TCP:443 检查保证 HTTPS 通信的通达性
下载这个测试软件在本地电脑先进⾏ IP 最优测试:CloudflareST_windows_amd64.zip
vim /etc/smartdns/xxx.smartdns.conf
#104.18.12.152是couldfare软件测试出的目前最优出口IP代理
address /*.vxxxxpe.cn/104.18.12.152
7、创建定时任务自动更新脚本(每周日更新一次)
#!/bin/bash
Update GFWList And DireceList
gfw="/opt/scripts/dist-v2ray-rules-dat/gfw.txt"
gfw_smartdns_config_file="/etc/smartdns/gfw.smartdns.conf"
china_list="/opt/scripts/dist-v2ray-rules-dat/china-list.txt"
china_list_smartdns_config_file="/etc/smartdns/china-list.smartdns.conf"
# 更新仓库
cd /opt/scripts/dist-v2ray-rules-dat
git pull
# 清空配置
cat /dev/null > $gfw_smartdns_config_file
cat /dev/null > $china_list_smartdns_config_file
# 重新配置
cat $gfw | while read line
do
echo "nameserver /$line/oversea" >> $gfw_smartdns_config_file
done
cat $china_list | while read line
do
echo "nameserver /$line/domestic" >>
$china_list_smartdns_config_file
done
# 重启服务
systemctl restart smartdns
第一次安装需要执行脚本呢,后续每周日自动执行
8、创建⼀个新的 systemd 服务⽂件以便管理 SmartDNS 服务
sudo vi /etc/systemd/system/smartdns.service
添加以下内容:
[Unit]
Description=SmartDNS
After=network.target
[Service]
ExecStart=/usr/local/bin/smartdns -f -c /etc/smartdns/smartdns.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
9、启动并启⽤ SmartDNS 服务
sudo systemctl daemon-reload
sudo systemctl start smartdns
sudo systemctl enable smartdns
#验证服务是否启动
sudo systemctl status smartdns
三、内网统一配置解析
在DHCP服务器中将 SmartDNS服务器设置为默认DNS选项
所有内网设备通过 SmartDNS进行统一域名解析,避免各设备各自解析带来的不一致与效率低
四、实际效果与收益
部署 SmartDNS 后,我们在多个业务场景测试的结果如下:
域名解析耗时平均从 3200ms 降低至150ms左右
海外访问国内服务成功率提升约 20%(解决解析错误问题)
配合 Cloudflare CDN 后,命中率提升,页面首屏加载时间缩短 0.5~1.2 秒
避免本地 DNS 被污染或缓存陈旧导致的业务故障
总结
在构建稳定、高效、智能的海外网络架构中,SmartDNS 是一个性价比极高的本地优化工具。它通过智能解析和选优机制,显著改善跨境网络环境下 DNS 解析缓慢或错误的问题,为网站访问、API调用、CDN加载等关键业务提供了坚实的底层支持。