littlebot
Published on 2025-04-01 / 2 Visits
0

【源码】基于C语言C++的DNS解析和缓存系统

项目简介

SmartDNS是运行在本地的DNS服务器,用于提升DNS查询效率与响应速度。它接收本地客户端的DNS查询请求,从多个上游DNS服务器获取结果,将访问速度最快的结果返回给客户端,以此提高网络访问速度。同时,该系统支持指定特定域名的IP地址,通过高性能匹配实现过滤广告的效果。

项目的主要特性和功能

  1. 支持配置多个上游DNS服务器并同时查询,部分服务器异常也不影响查询。
  2. 能从域名所属IP地址列表中找出访问最快的IP地址返回给客户端。
  3. 支持UDP、TCP、TLS、HTTPS查询以及非53端口查询。
  4. 可指定域名的IP地址,实现广告过滤与避免访问恶意网站。
  5. 支持域名后缀匹配模式,简化过滤配置,过滤20万条记录时间小于1ms。
  6. 支持域名分流,不同类型域名可到不同DNS服务器查询。
  7. 支持标准Linux系统(树莓派)、openwrt系统各种固件、华硕路由器原生固件以及Windows 10 WSL。
  8. 支持IPV4、IPV6双栈,可查询A、AAAA记录,支持双栈IP速度优化,能完全禁用IPV6 AAAA解析。
  9. 采用多线程异步IO模式,通过cache缓存查询结果,高性能且占用资源少。

安装使用步骤

假设用户已下载本项目的源码文件。

1. 下载配套安装包

根据系统类型下载对应的SmartDNS安装包,并上传到目标系统中。

2. 标准Linux系统安装(树莓派、X86_64系统)

安装

shell dpkg -i smartdns.xxxxxxxx.armhf.debshell tar zxf smartdns.xxxxxxxx.x86-64.tar.gz cd smartdns chmod +x ./install ./install -i

修改配置

编辑配置文件 /etc/smartdns/smartdns.conf,配置上游DNS服务器信息。 shell vi /etc/smartdns/smartdns.conf

启动服务

shell systemctl enable smartdns systemctl start smartdns

将DNS请求转发到SmartDNS

修改本地路由器的DNS服务器配置,将DNS服务器配置为SmartDNS的IP地址。

3. openwrt/LEDE

安装

将软件包上传到路由器的 /root 目录,并执行以下命令安装: shell opkg install smartdns.xxxxxxxx.xxxx.ipk opkg install luci-app-smartdns.xxxxxxxx.xxxx.all.ipk

修改配置

登录openwrt管理页面,打开 Services -> SmartDNS 进行配置。

启动服务

勾选配置页面中的 Enable 来启动SmartDNS。

4. 华硕路由器原生固件/梅林固件

安装

将软件包上传到路由器的 /tmp/mnt/sda1 目录,并执行以下命令安装: shell ipkg install smartdns.xxxxxxx.mipsbig.ipk

重启路由器

重启路由器后,使用 nslookup -querytype=ptr smartdns 查询域名,检查服务是否配置成功。

5. optware/entware

安装

将软件包上传到路由器的 /tmp 目录,并执行以下命令安装: shell ipkg install smartdns.xxxxxxx.mipsbig.ipk

修改配置

编辑配置文件 /opt/etc/smartdns/smartdns.conf,配置上游DNS服务器信息。 shell vi /opt/etc/smartdns/smartdns.conf

重启路由器

重启路由器后,使用 nslookup -querytype=ptr smartdns 查询域名,检查服务是否配置成功。

6. Windows 10 WSL安装/WSL ubuntu

安装

下载安装包 smartdns.xxxxxxxx.x86_64.tar.gz,并解压到D盘根目录。双击 install.bat 进行安装。

修改配置

编辑配置文件 D:\smartdns\etc\smartdns\smartdns.conf,配置上游DNS服务器信息。

重新加载配置

双击 reload.bat 重新加载配置。

将DNS请求转发到SmartDNS

将Windows的默认DNS服务器修改为 127.0.0.1

检测服务是否配置成功

使用 nslookup -querytype=ptr smartdns 查询域名,检查服务是否配置成功。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】