一个轻量级 DNS 服务器,让变更解析记录简单、优雅!为了纯血自研devops平台而生。
https://gitea.odboy.cn/odboy/kenaito-dns
骑着蜗牛追导弹 827f9d2047 | ||
---|---|---|
cache | ||
config | ||
constant | ||
controller | ||
core | ||
dao | ||
domain | ||
util | ||
.gitignore | ||
LICENSE | ||
README.md | ||
RRType.md | ||
dns.sqlite3 | ||
go.mod | ||
go.sum | ||
main.go |
README.md
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]
运行配置
Go代理地址配置
window安装gcc(记得配置环境变量哦, 记得重启电脑哦)
window验证gcc
gcc -v
编译
- GOOS代表程序构建环境的目标操作系统,其值可以是liunx,windows,freebsd,darwin
- GORACH代表程序构建环境的目标计算架构,其值可以是386,amd64或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
测试
DNS服务所在的ip地址为 192.168.43.130
所需工具:brew install watch
测试命令:watch -n 2 nslookup demo2024.odboy.cn 192.168.43.130
- 新增A解析记录
- 删除A解析记录
- 修改A解析记录
- 回滚解析记录
常见问题
nslookup 命令不存在解决
yum install bind-utils -y
nslookup指定dns服务器查询
# 这里dns服务器为 192.168.1.103
nslookup example.com 192.168.1.103
特别鸣谢
代码托管(以私人仓库Gitea为准)
- Gitea: https://gitea.odboy.cn/odboy/kenaito-dns
- Github: https://github.com/odboy-tianjun/kenaito-dns
- Gitee(已关闭,单纯的不想放在gitee): https://gitee.com/odboy/kenaito-dns
微信交流群
(扫码添加微信,备注:kenaito-dns,邀您加入群聊)
加入群聊的好处:
- 第一时间收到项目更新通知。
- 第一时间收到项目 bug 通知。
- 第一时间收到新增开源案例通知。
- 和众多大佬一起互相 (huá shuǐ) 交流 (mō yú)。