0


bind webadmin 动态DNS自助系统 使用体验

DNS需求

最近甲方项目中有一个需求点需要DNS服务配合,项目要求该DNS系统能让用户自行操作记录,并允许用户通过命令自行修改DNS记录。

领导把这个任务交给我了一个什么还不懂的小白,怎么办?

于是我和我们team的其他同事开始了在网上找一些开源系统,测试几个开源DNS(如bind、powerdns、MyDNS、MaraDNS),它们都非常不错,但并不能直接满足项目要求,需进行二次开发。为节省人力成本,我们并不想针对DNS投入开发成本。通过一位深资运维朋友介绍了一款bind-webadmin的软件,经测试非常适合我们项目要求,bind-webadmin是基于bind9而开发的web管理系统,可快速创建一台动态DNS系统。该软件的作者也非常不错,我在测试中遇到问题时给他发邮件时回复很及时,解答很有耐心,相当给力~~~。

bind-webadmin的官网
https://bind-webadmin.com

bind-webadmin的demo
https://mm-dns.com

废话少说,参照

bind webadmin

官网开始我的测试,哈~

安装

在安装前,需配置好docker环境。

# wget https://bind-webadmin.com/download/bind-webadmin.v0.1.tar.gz# tar zxvf bind-webadmin.v0.1.tar.gz# cd bind-webadmin.v0.1# sh install.sh# tree /app
/app
├── cert
│   ├── dhparams.pem
│   ├── fullchain.pem 
│   └── privkey.pem
├── docker-compose.yml
├── env.txt
├── mysql
├── server
│   └── app.conf
└── start.sh

这里的主要配置文件是

env.txt

.

测试时我使用的域名是

talknow-tech.com

,由于我还没有证书,关闭SSL。

env.txt

修改如下

# 提示# 各个容器会启动时读取如下值并到更新自己的相应配置中。# NS_DOMAIN值必须与bind_backend中的配置文件app.conf中的ns变量值相同。NS_DOMAIN='talknow-tech.com'# mysql基本配置MYSQL_HOST=bind_mysql
MYSQL_ROOT_PASSWORD=mysql+888
MYSQL_ALLOW_EMPTY_PASSWORD=no
MYSQL_POST=3306MYSQL_DB=BindDB
MYSQL_USERNAME=root
MYSQL_USERPWD=mysql+888
# 提示# 1.MYSQL_POST值必须与mysql容器启动时的配置相同# 2.MYSQL_HOST值必须与mysql空器的服务名称相同# 3.当采用root时,MYSQL_USERPWD与MYSQL_ROOT_PASSWORD相同# 4.采用非root方式,需手工创建帐号# mysql运行环境(初始化时中文支持)LANG=C.UTF-8
MYSQL_CHARSET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci

#后面API接口(不要以/为结尾)#该值必须与后端接口对外开放的配置保持一致,即接口外部域名和端口#为外部的api接口。#API_URL=http://192.168.3.7:9090#API_URL_SSL=http://192.168.3.7:9090#若采用本系统的api接口,此值为# API_URL=http://api.${NS_DOMAIN}# 若有证书,需配置为# API_URLs=https://api.${NS_DOMAIN}#API_URL=http://192.168.3.7:9090SSL=false
API_URL=http://api.${NS_DOMAIN}API_URL_SSL=https://api.${NS_DOMAIN}#----------------------------#前端参数ICP=粤ICP备999999号(示例)OTHERCODE=粤公网安备999999号(示例)LOGIN_FOOTER_TEXT='Mobile: 130xxxxxxx  email: [email protected]'#title配置APP_TITLE=TalkNows  

#sider页脚Footter_line_sider_1=TalkNow
Footter_line_sider_2='测试中'#普通页面页脚Footter_line_1='DNS自主系统'Footter_line_2='by talknow-tech.com'#前端在产生api Token时为该token配置的TTL#1年=1000*60*60*24*365*1=31536000000TTLApiToken=315360000000#前端所有cookie的TTL值#1天:60*60*1000*24TTLCookie=86400000

docker compose方式安装

# sh start.sh[+] Running 63/31
 ✔ bind_front 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled             24.7s 
 ✔ bind_proxy 18 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled      63.7s 
 ✔ bind_mysql 14 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled            74.5s 
 ✔ bind_backend 5 layers [⣿⣿⣿⣿⣿]      0B/0B      Pulled                       56.0s 
 ✔ bind9 8 layers [⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                          27.0s 
[+] Running 6/6
 ✔ Network app_mynet             Created                                         0.2s 
 ✔ Container app-bind_mysql-1    Started                                         0.4s 
 ✔ Container app-bind9-1         Started                                         0.1s 
 ✔ Container app-bind_backend-1  Started                                         0.0s 
 ✔ Container app-bind_front-1    Started                                         0.1s 
 ✔ Container app-bind_proxy-1    Started                                         0.2s 

第一次启动需pull镜像,时间久一点。

查看容器启动状态

# docker ps
CONTAINER ID   IMAGE                                                     COMMAND                   CREATED         STATUS         PORTS                                              NAMES
d40d04593625   registry.cn-hangzhou.aliyuncs.com/darry/bind_proxy:v1     "/entrypoint.sh"3 minutes ago   Up 3 minutes   0.0.0.0:80->80/tcp, 22/tcp, 0.0.0.0:443->443/tcp   app-bind_proxy-1
696dd06e5b4e   registry.cn-hangzhou.aliyuncs.com/darry/bind_front:v1     "/docker-entrypoint.…"3 minutes ago   Up 3 minutes   80/tcp, 0.0.0.0:9091->9091/tcp                     app-bind_front-1
80eb68220fc3   registry.cn-hangzhou.aliyuncs.com/darry/bind:v1           "docker-entrypoint.sh"3 minutes ago   Up 3 minutes   0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, 953/tcp    app-bind9-1
133d74406e11   registry.cn-hangzhou.aliyuncs.com/darry/bind_backend:v1   "/entrypoint.sh"3 minutes ago   Up 3 minutes   0.0.0.0:9090->9090/tcp                             app-bind_backend-1
1e388216d4bd   registry.cn-hangzhou.aliyuncs.com/darry/bind_mysql:v1     "docker-entrypoint.s…"3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp                  app-bind_mysql-1

由于是测试域名,按照官网提示,添加如下3个记录到hosts文件

C:\>type Windows\System32\drivers\hosts
系统找不到指定的文件。

C:\>type Windows\System32\drivers\etc\hosts
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
192.168.3.68 talknow-tech.com www.talknow-tech.com api.talknow-tech.com

测试

采用google浏览器,直接打开 http://talknow-tech.com
请添加图片描述

采用默认帐号进入

admin/admin1111mm

界面很简洁,没有多余的页面,非常清晰。
请添加图片描述

注册新用户

注册一个新用户(

yanglitu/1@qwWWqqq

)进入,添加域名和记录。
请添加图片描述

添加域名

请添加图片描述

添加解析记录

添加解析记录时再配置token(默认的token有效期是10年)
请添加图片描述

查看解析结果

C:\>nslookup -qt=soa abc.com 192.168.3.68
服务器:  UnKnown
Address:  192.168.3.68

abc.com
        primary name server = ns1.talknow-tech.com
        responsible mail addr = info.abc.com
        serial  = 2024060100
        refresh = 86400 (1 day)
        retry   = 86400 (1 day)
        expire  = 86400 (1 day)
        default TTL = 86400 (1 day)

C:\>nslookup -qt=a  www.abc.com 192.168.3.68
服务器:  UnKnown
Address:  192.168.3.68

名称:    www.abc.com
Address:  1.1.1.1

解析api token测试

除通过web方式修改解析记录值以外,bind-webadmin还提供了3种方式来修改解析记录值,适应不同场景。

例如json方式

# curl -XPOST "http://talknow-tech.com/updatejson" -d '{"data":"9.9.9.9",
  "token":"5HXUtJTM5Hm2w4fIiB/ViDfgx0OhuYfQWuNrwzKVgCvrv4fz4dxXJpGsCVF0BvYD8+0nVoCtuJX8tYbywP8BhgCrmGHFWxXzOwpxxBLXdvFt0oL9MGj8g1m5mtXC0Llp"}
'
# 返回{"info":"ok"}

查看结果

C:\>nslookup -qt=a  www.abc.com 192.168.3.68
服务器:  UnKnown
Address:  192.168.3.68

名称:    www.abc.com
Address:  9.9.9.9

后续

通过体现

bind webadmin

的功能,感觉它非常不错,可以很轻松创建一套自己的动态域名系统。
为每一位DNS爱好者提供了一种拥有自己独特DNS系统的可能性。

今天测试到这里吧,下一步将bind-webadmin部署在公网上,创建一套像 https://mm-dns.com 一样的真正的外部DNS系统。
在后续部署中可能还会有其它问题,到时还需要向开发者发邮件请教。

标签: centos docker 运维

本文转载自: https://blog.csdn.net/weixin_50747218/article/details/140071811
版权归原作者 Darry Guo 所有, 如有侵权,请联系我们删除。

“bind webadmin 动态DNS自助系统 使用体验”的评论:

还没有评论