kenaito-dns/README.md

4.8 KiB
Raw Blame History

kenaito-dns

背景

Bind9不能直接支持API的方式添加解析记录 通过脚本修改Bind服务器配置这种事情实在是太冒险了而且没有发现有开源的、性能嘎嘎好的DNS服务器项目。

简介

一个轻量级 DNS 服务器让变更解析记录简单、优雅为了纯血自研devops平台而生。

环境依赖

  • gcc
  • go version >= 1.20

项目结构

  • constant 常量
  • controller api接口
  • core dns解析
  • dao 数据库交互
  • domain 各种领域模型
  • util 工具函数

项目耗时

more than 7 hours

主要特性

  • 纳秒级、毫秒级( <= 5 )响应时间
  • 支持API变更解析记录
  • 支持解析记录回滚
  • 支持A、AAAA、MX、TXT、CNAME记录解析

待办清单

  • 支持回滚 2024-11-08 [ok]
  • 添加缓存 2024-11-09 [ok]
  • 新增Web控制台 2024-11-11 [ok]
  • 支持一键启/停用 2024-11-11 [ok]
  • 支持一键回滚 2024-11-11 [ok]

运行配置

Go代理地址配置

去看看

window安装gcc(记得配置环境变量哦, 记得重启电脑哦)

window验证gcc

gcc -v

编译

  • GOOS代表程序构建环境的目标操作系统其值可以是liunxwindowsfreebsddarwin
  • GORACH代表程序构建环境的目标计算架构其值可以是386amd64或arm
首先,配置代理,并在项目根目录执行 go mod tidy 安装依赖
# Windows
set GOOS=windows
set GOARCH=amd64
set CGO_ENABLED=0
go build -o ./bin/kenaito-dns_windows_amd64 main.go
# Linux
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -o ./bin/kenaito-dns_linux_amd64 main.go
# Mac
set GOOS=darwin
set GOARCH=amd64
set CGO_ENABLED=0
go build -o ./bin/kenaito-dns_darwin_amd64 main.go

运行

# 例子:在 Mac 平台上
# 将编译产出的 kenaito-dns_darwin_amd64 与 dns.sqlite3 文件放在同一目录下, 执行以下命令运行即可
./kenaito-dns_darwin_amd64

jietu1

测试

DNS服务所在的ip地址为 192.168.43.130

所需工具brew install watch

测试命令watch -n 2 nslookup demo2024.odboy.cn 192.168.43.130

控制台预览

  • 新增解析记录

addrecord1 addrecord2

  • 版本回滚

rollback1 rollback2

常见问题

nslookup 命令不存在解决

yum install bind-utils -y

nslookup指定dns服务器查询

# 这里dns服务器为 192.168.1.103
nslookup example.com 192.168.1.103

特别鸣谢

代码托管以私人仓库Gitea为准

微信交流群

wxcode

(扫码添加微信备注kenaito-dns邀您加入群聊)

加入群聊的好处:

  • 第一时间收到项目更新通知。
  • 第一时间收到项目 bug 通知。
  • 第一时间收到新增开源案例通知。
  • 和众多大佬一起互相 (huá shuǐ) 交流 (mō yú)。