这是一个让DNS服务器预读取缓存或者压力测试的简单工具,配合PaoPaoDNS使用可以快速生成redis_dns.rdb
缓存。从指定的文本读取域名列表并查询A/AAAA记录,docker镜像默认自带了全球前100万热门域名(经过无效域名筛选)。
- 测试可能会对你的网络造成负担,请避免在网络正常使用时段进行测试。
- 若配合PaoPaoDNS使用,如果设置了
CNAUTO=yes
,测试前请务必设置PaoPaoDNS的docker镜像的环境变量CNAUTO=yes
和CNFALL=no
。 - 不建议设置过高的并发,可能会导致你的服务器崩溃或者DNS无法被有效缓存。
- 若配合PaoPaoDNS使用,可以在PaoPaoDNS容器内使用
debug.sh
或者查看容器启动日志,根据你内存环境,你会看到有一个prefPC: xx
的值,该值为本工具-pc
参数(测试xx%的域名)的推荐值,超过该值可能无法缓存。
参数选项 | 值 | 作用 |
---|---|---|
-file | 文件路径 | 指定域名列表,默认值为目录下的domains.txt . |
-server | DNS服务器 | 指定DNS服务器,必需 |
-port | 端口 | 指定DNS服务器端口,默认值为53. |
-limit | 并发数 | 指定并发数,默认值为10. |
-timeout | 5s | 指定DNS查询超时时间,默认值为5s.也可以指定单位为ms. |
-sleep | 1500ms | 指定DNS查询间隔,默认值为1500ms.值越小请求越快,性能好的可以设置0ms. |
-line | 行数 | 指定从第几行开始,可用于恢复进度. |
-pc | 百分比 | 指定测试前%的域名,如域名列表总数为100万,指定-pc 50则测试前50万域名. |
-v | 开关 | 输出域名的查询信息. |
-h | 开关 | 显示帮助信息. |
可以从Release下载对应平台编译好的二进制文件,压缩包内已经附带最新热门100万域名列表。
你始终可以从此链接下载最新的热门100万域名列表:https://github.com/kkkgo/PaoPao-Pref/raw/main/domains.txt (经过无效域名筛选)
# 每次操作前先拉取最新镜像
docker pull sliamb/paopao-pref
# 指定DNS服务器为192.168.1.8
docker run --rm --net=host -it sliamb/paopao-pref -server 192.168.1.8
# 从第1000行开始
docker run --rm --net=host -it sliamb/paopao-pref -line 1000 -server 192.168.1.8
# 指定并发数为25, DNS查询间隔为0ms, 查询超时1s, 前1%的热门域名
docker run --rm --net=host -it sliamb/paopao-pref -server 10.10.10.8 -pc 1 -limit 25 -sleep 0ms -timeout 1s
你也可以使用环境变量:
环境变量名 | 对应选项 |
---|---|
DNS_SERVER | -server |
DNS_PORT | -port |
DNS_LINE | -line |
DNS_PC | -pc |
DNS_LIMIT | -limit |
DNS_TIMEOUT | -timeout |
DNS_SLEEP | -sleep |
DNS_LOG | -v,请设置为yes/no |
程序的默认值兼顾性能比较低的设备,你可以适当调高/调低limit
,sleep
和timeout
的值。
Succ rate
: 测试成功率。测试的域名在指定的timeout时间内无法解析或者解析错误(无有效A记录或者AAAA记录),会定义为失败。如果你把timeout定义的足够低,可以当缓存测试。limit和sleep的值也会影响成功率,过高的limit或者过低的sleep值也可能会导致服务器暂时无法及时处理(不代表结果没有在被缓存).
Avg time
: 每个域名的查询平均处理时间。
Est time
: 估计的剩余时间。
PaoPaoDNS:4核心8G内存/CNAUTO=yes
/IPV6=yes
/CNFALL=no
生成的redis_dns.rdb
缓存文件大小:917 MB
used_memory_human:1.06G
该数据仅供大致参考.
Github Actions数据生成参数:
DNS_LIMIT=25
DNS_SLEEP=0ms
DNS_TIMEOUT=3s
成功率在80%
欢迎在discussions分享你的测试参数和测试数据~!
域名数据来源(未处理): https://s3-us-west-1.amazonaws.com/umbrella-static/index.html
PaoPao DNS Docker: https://github.com/kkkgo/PaoPaoDNS
搭建属于自己的递归DNS: https://blog.03k.org/post/paopaodns.html