前言

前面使用 nginx 代理转发了几个域名到服务器,但是每次添加一个域名都需要在客户端添加一行 hosts 文件,无疑是繁琐的,其中也提到可以使用 DNS 来实现自动解析域名 到指定服务器的功能,本篇将介绍开源 DNS 服务 docker-bind 的部署和使用

特点

  • docker-bind 是一个基于 BIND 与 Webmin 构建的 DNS 服务镜像
  • BIND 是实现互联网域名系统 (DNS) 协议的开源软件,用于搭建 DNS 服务。
  • Webmin 是一款开源的Web界面管理工具,用于浏览器远程管理服务器
  • 开源免费, 配置丰富(复杂),成熟稳定,中文主题支持有限,提供了一些服务器管理功能(监控,远程命令等),资源占用和安全性在使用时需要注意

使用情况

  • 功能多但是大多有其他的平替,单独使用可以,但是个人不建议在容器中使用
  • 用了两天感觉还是太重了,换成 DnsServer 了,下篇分享

docker-bind 的安装使用

准备

  • 版本:v9.16.1-20200524
  • docker 镜像:sameersbn/bind:9.16.1-20200524
  • 默认端口映射:53:53/tcp 53:53/udp 10000:10000/tcp(53 端口为 DNS 服务使用,10000 为 Webmin 使用)
  • Webmin 访问:https://ip:10000 必须使用 https 访问

使用 Docker Compose 安装

本篇文章基于 Docker V24 及 Docker Compose V2,安装可以参考之前的文章

配置说明

  • 镜像版本:sameersbn/bind:9.16.1-20200524
  • 指定时区:Asia/Shanghai
  • 启用 Webmin 并指定 root 密码:devops666
  • 启用 SSL:默认值为 true,用 https 访问 webmin(https://ip:10000
  • 指定端口映射:53:53/tcp 53:53/udp 10000:10000/tcp(53 端口为 DNS 服务使用,10000 为 Webmin 端口)
  • 挂载数据目录:./data:/data
  • 指定网络:devopsnetwork (docker network create devopsnetwork

配置文件 compose.yml

  • 准备好 compose.yml 拷贝到服务器
  • 然后运行docker compose up -d即可
version: '3.1'
services:
dns:
image: sameersbn/bind:9.16.1-20200524
container_name: dns_9_16
restart: always
environment:
TZ : 'Asia/Shanghai'
ROOT_PASSWORD: devops666
WEBMIN_ENABLED: true
WEBMIN_INIT_SSL_ENABLED: true
ports:
- '10000:10000/tcp'
- '53:53/udp'
- '53:53/tcp'
volumes:
- ./data:/data
networks:
- devopsnetwork networks:
devopsnetwork:
external: true

部署成功

部署机器 IP:192.168.123.214

容器中资源占用情况

Webmin 的使用

  • 启用中文主题, 虽然支持有限,但聊胜于无

  • 有非常多的功能,监控,远程执行命令等,安装好自行体验即可

  • 目前需求是需要配置 dns 以将 test.com 解析到 192.168.123.214 中

  1. 服务器->BIND DNS Server->创建新的主区域

  2. 现有DNS区域->地址->新增记录,可以使用通配符解析,新建后应用配置生效



      添加配置后记得应用配置

  3. 本机设置 dns 192.168.123.214 以及 114.114.114.114(不然无法访问其他网站)

  4. 验证dns,正常ping test.com 的IP是存在的,现在就被解析到我们自己的dns了



      可能存在dns缓存,使用 ipconfig /flushdns刷新即可

踩过的坑

  • 默认启用了 SSL,所以如果使用 http 会提示,使用 https 访问

  • Edge 如果禁用 https 初始化会提示:Error - No cookies Chrome 可以

  • 代理/VPN的设置不对可能导致 DNS 时好时坏,这个时候记得检查下代理,正常dns的生效都挺快的

相关文档

后语

安装2分钟,文章写了一天,反复的尝试,理论的查询,时间飞逝

DNS 服务 docker-bind 的部署使用的更多相关文章

  1. DNS服务和BIND

    今天我们来介绍一下DNS服务,在大家的印象中DNS可能只是将域名解析为IP地址,可能其他的暂时还不太了解,希望本篇内容能帮助大家. 1.什么是DNS? DNS( Domain Name System) ...

  2. docker+ bind mount 部署复杂flask应用

    报错如下: [root@test-wenqiang flask-skeleton]# docker run -d -p 80:5000 -v $(pwd):/skeleton --name flask ...

  3. dns服务之bind配置内网解析部分子域名,其它子域名转发

    bind配置内网解析部分子域名,其它子域名转发.以下以m.xxx.com和admin.xxx.com由内网dns解析,其它*.xxx.com转发给外网dns解析为例配置.文件/etc/named.co ...

  4. CentOS7.x的DNS服务的基础配置

    一.bind服务器安装 bind:开源.稳定.应用广泛的DNS服务.bind的软件包名bind,服务名称named. 查看是否安装bind, 安装bind包: rpm -qa bind yum -y ...

  5. 《linux就该这么学》第十四节课:第13章,部署DNS域名解析服务(bind服务)

    (借鉴请改动)  第十二章收尾  12.2.nfs网络文件系统 RHEL7默认安装了nfs,配置文件在  /etc/export  写入格式:共享目录    允许的客户端(参数)  ro        ...

  6. DNS解析原理与Bind部署DNS服务

    DNS是什么? DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址.反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提 ...

  7. (二)跟我一起玩Linux网络服务:BIND的自动部署(附上完整的代码)

    2015-03-24   如果看了我之前写的文章 DNS服务——BIND(/etc/named.conf./var/named)设置实现和解释,再来看这篇文章,你会发现部署BIND是件很简单的事情 如 ...

  8. Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明

    NamedManager 是一个基于Web的DNS管理系统,可用来添加.调整和删除DNS的zones/records数据.它使用Bind作为底层DNS服务,提供一个现代Ajax的Web界面,支持 IP ...

  9. Kubernetes 部署集群内部DNS服务

    Kubernetes 部署集群内部DNS服务 部署官网:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/ ...

  10. 使用BIND搭建内部DNS服务

    ​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌ ...

随机推荐

  1. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

  2. pip install mysqlclient命令安装mysqlclient失败的解决办法

    错误情况: 解决方法: 到这个地址下载自己版本对应的资源 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 如下图: 我这里首先下载了  ...

  3. Django: request.query_params取值

    取值 request.query_params.dict(),将querydict对象转换为字典 参考链接 https://www.jianshu.com/p/f2f73c426623 https:/ ...

  4. QLabel标签快捷键的使用

    1 from PyQt5.QtWidgets import * 2 import sys 3 4 class QlabelDemo(QDialog): 5 def __init__(self): 6 ...

  5. openpyxl 设置单元格自动换行

    解决方案 openpyxl的alignment函数中的参数:wrapText=True,就可以了 from openpyxl.styles import Alignment worksheet.cel ...

  6. 模型权重保存、加载、冻结(pytorch)

    1. 保存整个网络 torch.save(net, PATH) model = torch.load(PATH) 2. 保存网络中的参数(速度快,占空间小) torch.save(net.state_ ...

  7. proxysql修改默认系统配置

    前言 proxysql在第一次启动后,配置就从sqlite db中加载了,而不是配置文件. 有时候我们需要修改proxysql的默认配置,其相关配置在main.global_variables表中,可 ...

  8. 1、MyBatis简介

    1.1.MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁 移到了Google Code. ...

  9. 如何分析 JVM 内存瓶颈浅谈

    背景: 当操作系统内存出现瓶颈时,我们便会重点排查那个应用占用内存过大.对于更深一步分析内存的使用,就进一步去了解内存结构,应用程序使用情况,以及内存如何分配.如何回收,这样你才能更好地确定内存的问题 ...

  10. CCF 202012-5星际旅行(20~100分)

    前置知识 线段树:通过懒惰标记,可实现区间处理,和区间询问皆为\(O(logn)\)时间复杂度的数据结构,是一种二叉树.因此对于一个节点\(st\),其左儿子节点为\(st*2\),右节点为\(st* ...