SmartDNS-内网业务实践

介绍

SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。 同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。
与dnsmasq的all-servers不同,smartdns返回的是访问速度最快的解析结果。

特性

  • 多DNS上游服务器

    1
    支持配置多个上游DNS服务器,并同时进行查询,即使其中有DNS服务器异常,也不会影响查询。
  • 返回最快IP地址

    1
    支持从域名所属IP地址列表中查找到访问速度最快的IP地址,并返回给客户端,提高网络访问速度。
  • 支持多种查询协议

    1
    支持UDP,TCP,TLS, HTTPS查询,以及非53端口查询。
  • 特定域名IP地址指定

    1
    支持指定域名的IP地址,达到广告过滤效果,避免恶意网站的效果。
  • 域名高性能后缀匹配

    1
    支持域名后缀匹配模式,简化过滤配置,过滤20万条记录时间<1ms
  • 域名分流

    1
    支持域名分流,不同类型的域名到不同的DNS服务器查询。
  • Linux/Windows多平台支持

    1
    支持标准Linux系统(树莓派),openwrt系统各种固件,华硕路由器原生固件。以及支持Windows 10 WSL (Windows Subsystem for Linux)。
  • 支持IPV4, IPV6双栈

    1
    支持IPV4,IPV6网络,支持查询A, AAAA记录,支持双栈IP速度优化,并支持完全禁用IPV6 AAAA解析。
  • 高性能,占用资源少

    1
    多线程异步IO模式,cache缓存查询结果。

架构

1
2
3
4
1. SmartDNS接收本地网络设备的DNS查询请求,如PC,手机的查询请求。
2. SmartDNS将查询请求发送到多个上游DNS服务器,可采用标准UDP查询,非标准端口UDP查询,及TCP查询。
3. 上游DNS服务器返回域名对应的Server IP地址列表。SmartDNS检测与本地网络访问速度最快的Server IP。
4. 将访问速度最快的Server IP返回给本地客户端。

安装部署

  • 下载
1
2
3
4
5
# 最新版下载
https://github.com/pymumu/smartdns/releases

# 下载linux版本
wget https://github.com/pymumu/smartdns/releases/download/Release35/smartdns.1.2021.08.27-1923.x86_64-linux-all.tar.gz
  • 安装

    1
    2
    3
    tar -zxvf smartdns.1.2021.08.27-1923.x86_64-linux-all.tar.gz
    cd smartdns
    ./install -i
  • 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/smartdns/smartdns.conf
# 添加上游dns服务器,可添加多个
server 183.60.82.98:53
server 183.60.83.19:53
server-tcp 183.60.82.98:53
server-tcp 183.60.83.19:53

# 添加A记录解析
address /xxx.com/10.228.20.209
address /cos.ap-hongkong.myqcloud.com/10.228.20.206

# 重启服务生效配置
systemctl restart smartdns

服务器上配置

1
2
3
4
5
6
# 服务器上添加此DNS server IP
vim /etc/resolv.conf
nameserver 10.228.20.202
nameserver 10.228.12.164

# windows服务器在对应网卡上添加dns server IP

实际案例应用

  • IDC纯内网环境

    1
    纯内网环境没有出公网能力,所以无法使用公网DNS server IP,需要自建内网DNS server。
  • 混合云业务

1
2
3
4
5
6
私有云/IDC测序访问云上服务,如对象存储、日志服务等。
1. 自建dns server,上游dns server ip设置为公有云自带公共dns。
2. 提工单联系售后,让其将云服务解析到VPC内网ip。
3. 在dns server(smartdns)上添加这条A记录解析。

# 阿里云目前云企业网中有,云服务、Private Zone这2个功能。云服务功能直接就能将公有云的对象存储、日志服务等解析到云企业网内,这样加入云企业网的网络就能内网访问公有云服务。
-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。