前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bind webadmin使用体验

bind webadmin使用体验

原创
作者头像
用户11187724
发布2024-06-29 23:56:45
960
发布2024-06-29 23:56:45
举报
文章被收录于专栏:运维开发运维开发

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环境。

代码语言:bash
复制
# 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修改如下

代码语言:bash
复制
# 提示
# 各个容器会启动时读取如下值并到更新自己的相应配置中。

# 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=3306  
MYSQL_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:9090
SSL=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: xxxx@qq.com'

#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=31536000000
TTLApiToken=315360000000

#前端所有cookie的TTL值
#1天:60*60*1000*24
TTLCookie=86400000

docker compose方式安装

代码语言:bash
复制
# 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镜像,时间久一点。

查看容器启动状态

代码语言:bash
复制
# 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文件

代码语言:dos
复制
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年)

查看解析结果

代码语言:dos
复制
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方式

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

查看结果

代码语言:dos
复制
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系统。

在后续部署中可能还会有其它问题,到时还需要向开发者发邮件请教。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DNS需求
  • 安装
  • 测试
    • 注册新用户
      • 添加域名
        • 添加解析记录
          • 解析api token测试
          • 后续
          相关产品与服务
          私有域解析 Private DNS
          私有域解析 Private DNS 是基于腾讯云私有网络 VPC (Virtual Private Cloud)环境的私有域名解析管理服务。通过它,您可以在自定义的一个或多个私有网络中快速构建DNS系统,并能够方便地使用私有域名记录来管理 VPC 关联的 CVM、CLB、CDN、COS 等腾讯云自有资源,而这些私有域名在 VPC 之外将无法访问。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档