littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于Python语言的DNS服务器项目

项目简介

这是一个基于Python语言的DNS服务器项目,旨在用于学习和实践Python开发,特别是算法和DNS服务器开发。项目涵盖了DNS服务器的多项基本功能,像多组DNS上游服务器、缓存加速、域名分流等。

项目的主要特性和功能

  1. 多组DNS上游服务器:通过并发查询多个上游服务器,保障高可用性。
  2. 缓存加速:运用LRU(Least Recently Used)策略缓存DNS查询记录,提升查询速度。
  3. 域名分流:依据域名集合,查询不同的上游服务器。
  4. fallback后备计划:按照IP集合列表,当上游服务器返回结果不符合要求时,换用另一组上游服务器查询。
  5. 多协议和多端口支持:实现udp、tcp协议,且可在每个端口下同时使用多个端口。
  6. IPv4和IPv6双栈支持:支持IPv4和IPv6网络,可进行IPv4和IPv6的记录查询。
  7. 可拦截特定类型的查询记录:使用SOA记录响应特定记录的查询。
  8. 支持tls和doq协议:提供对https和doq协议的支持。
  9. 使用命令行查询缓存报告:借助命令行工具查询缓存报告。
  10. 支持idna(国际化dns):支持国际化DNS查询。

安装使用步骤

安装依赖

  1. 复制或下载项目代码。
  2. 安装Python依赖: shell cd flexidns pip3 install -r requirements.txt

启动服务

  1. 创建配置文件: shell touch config_none.toml #空文件
  2. 启动服务: shell sudo ./src/flexidns start --config ./config_none.toml
  3. 停止服务: 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】