将使用 DNS 的混乱迁移到使用 PowerDNS

主要观点:3 年前发布Mess With DNS,因 DNS 实现不谨慎导致诸多问题,后用 PowerDNS 解决,过程中遇到多个挑战及相应解决办法,新网站已上线。
关键信息:

  • 最初 DNS 实现存在多种问题,如不允许带下划线的域名、CNAME 记录相关问题等。
  • 选择 PowerDNS 作为解决方案,在设置过程中遇到 8 个挑战。
  • 挑战 1:通过 dnstap 或自己的 Go 服务器代理拦截 DNS 查询,最初采用 dnstap 但有 1 秒延迟后改为自己的代理。
  • 挑战 2:考虑前端直接访问 PowerDNS API 或移出 DNS 逻辑并创建新 API,最终选择后者以便写测试。
  • 挑战 3:PowerDNS API 中记录无 ID,通过生成包含名称、类型和内容的假 ID 来解决。
  • 挑战 4:处理 PowerDNS API 返回的错误消息,进行初步验证和翻译。
  • 挑战 5:将数据库从 Postgres 改为 SQLite,设置相关参数和模式。
  • 挑战 6:将 Vue.js 从版本 2 升级到 3,更换表单验证工具。
  • 挑战 7:改善前端状态管理,实现全局状态管理存储。
  • 挑战 8:将项目拆分为多个阶段,确保网站在升级过程中基本可用。
    重要细节:
  • 前端曾有大量 DNS 逻辑,后移出并创建新 API。
  • 关于 API 重复信息,在显示 MX 记录时意识到可在 API 中返回相同信息。
  • 对 SQLite 的设置包括设置最大打开连接数、使用单独数据库等。
  • 新网站上线后若有问题可在此处反馈。
阅读 36
0 条评论