项目简介
这是一个基于Python语言的DNS服务器项目,旨在用于学习和实践Python开发,特别是算法和DNS服务器开发。项目涵盖了DNS服务器的多项基本功能,像多组DNS上游服务器、缓存加速、域名分流等。
项目的主要特性和功能
- 多组DNS上游服务器:通过并发查询多个上游服务器,保障高可用性。
- 缓存加速:运用LRU(Least Recently Used)策略缓存DNS查询记录,提升查询速度。
- 域名分流:依据域名集合,查询不同的上游服务器。
- fallback后备计划:按照IP集合列表,当上游服务器返回结果不符合要求时,换用另一组上游服务器查询。
- 多协议和多端口支持:实现udp、tcp协议,且可在每个端口下同时使用多个端口。
- IPv4和IPv6双栈支持:支持IPv4和IPv6网络,可进行IPv4和IPv6的记录查询。
- 可拦截特定类型的查询记录:使用SOA记录响应特定记录的查询。
- 支持tls和doq协议:提供对https和doq协议的支持。
- 使用命令行查询缓存报告:借助命令行工具查询缓存报告。
- 支持idna(国际化dns):支持国际化DNS查询。
安装使用步骤
安装依赖
- 复制或下载项目代码。
- 安装Python依赖:
shell cd flexidns pip3 install -r requirements.txt
启动服务
- 创建配置文件:
shell touch config_none.toml #空文件
- 启动服务:
shell sudo ./src/flexidns start --config ./config_none.toml
- 停止服务:
shell sudo ./src/flexidns stop
注意事项
- 使用虚拟环境运行Python代码。
- 根据实际需求修改和配置参数。
- 依赖库和模块的具体安装和配置可能需要根据实际情况进行调整。
默认配置
- 缓存文件默认路径:
/var/log/{__package__.lower()}.cache
- 日志文件默认路径:
/var/log/{__package__.lower()}.log
- 错误日志默认路径:
/var/log/{__package__.lower()}_err.log
- 默认上游服务器:
{'udp': ':53'}
- 默认上游服务器组:
[{'protocol': 'udp', 'address': '223.5.5.5', 'port': 53, 'ext': None}]
配置文件路径
- 配置文件路径:
<prefix>/etc/flexidns/
- 主命令文件路径:
<prefix>/bin/
许可协议
FlexiDNS 遵循GPL v3.0协议。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】