1. 概述

DockerHub中的 sameersbn/bind 镜像提供了搭建DNS服务器的功能,本文给出使用该镜像搭建DNS服务器的例子。

2. 环境

DNS服务器主机 IP:10.11.150.73  域名:master.open.com

客户端1的 IP:10.11.150.74  域名:node.open.com

客户端2的 IP:10.11.150.75  域名:node2.open.com

测试环境中73、74、75机不能连接DockerHub,中转机可连接73、74、75机和DockerHub。

3. 搭建

3.1 导入sameersbn/bind镜像

在中转机中下载sameersbn/bind镜像:

docker pull sameersbn/bind:latest

将镜像存出为tar包:

docker save -o sameersbn_bind.tar sameersbn:bind

通过scp将tar包复制到73机的/opt/scs/openxxs/目录下(任意具有读写权限的目录均可):

scp sameersbn_bind.tar scs@10.11.150.73:/opt/scs/openxxs/

在73机上将镜像导入:

docker load --input sameersbn_bind.tar

此时在73机上即有了sameersbn/bind的镜像了:

3.2 新建并启动DNS服务器容器

在73机运行如下命令新建并启动容器:

docker run --name='bind' -d -p :/udp -e WEBMIN_ENABLED=false -v /opt/scs/openxxs/bind:/data sameersbn/bind:latest

其中--name是将该容器命名为bind;-p 开放53:53/udp端口便于其它主机访问DNS服务器;sameersbn/bind镜像本身安装了一个webmin服务,提供浏览器界面供用户配置域名项,本文通过修改配置文件进行DNS设置,因此通过 -e WEBMIN_ENABLED=false 禁用webmin的服务;-v 挂载73主机的/opt/scs/openxxs/bind目录(也可为其它目录),新建容器后将在该目录下生成bind/ect和bind/lib目录,其中etc目录下为DNS的相关配置文件。

3.3 参数配置

修改73、74、75主机的 /etc/resolv.conf 文件,添加如下内容,表示使用73机作为DNS服务器之一:

nameserver 10.11.150.73

在/opt/scs/openxxs/bind/bind/etc目录下,打开named.conf文件,内容如下:

可看出DNS的相关配置信息被分为了named.conf.options、named.conf.local和named.conf.default-zones三个文件。打开named.conf.options文件,修改allow-query 和 allow-transfer 字段为如下内容,表示允许73、74、75机使用73机上的DNS服务。

打开named.conf.local文件,增加正向解析和反向解析(注意每个zone后面要加上分号):

基于db.local新建正向解析文件forward.open(与named.conf.local中的命名一致):

cp db.local forward.open

内容如下:

基于db.127新建反向解析文件reverse.open(与named.conf.local中的命名一致):

cp db. reverse.open

内容如下:

修改了配置文件之后,需要进入bind容器中重新加载配置文件:

docker exec -i -t bind bash

进入bind容器后,里面的 /etc/bind 目录对应的就是73主机中的 /opt/scs/openxxs/bind/bind/etc 目录。先执行如下命令对配置文件的语法进行检查:

named-checkconf

语法没有问题后,使用rndc命令重新加载配置信息:

rndc reconfig

如果只是修改了某个区域的一些条目,则更新该区域即可,如下命令更新了open.com区域:

rndc reload open.com

3.4 测试

在73机上测试如下,成功:

在74机上测试如下,成功:

通过Docker配置DNS服务器的更多相关文章

  1. 在Debian上用Bind 配置DNS服务器

    1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...

  2. 烂泥:centos安装及配置DNS服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要在centos配置DNS服务器,要先安装DNS软件BIND.当然我们也可以安装其他的DNS软件,比如国内的开源DNS软件DNSPod. 在此我们以通过 ...

  3. 如何配置DNS服务器(局域网——域名指向某个IP地址)

    单击“开始”,指向“管理工具”,然后单击“DNS”,打开 DNS 管理器.   如有必要,向管理单元添加适用的服务器,然后连接该服务器.在控制台树中,单击适用的 DNS 服务器.   在“操作”菜单上 ...

  4. 配置DNS服务器IP

    #############################脚本功能及说明#################### #该脚本用来在本地服务器上配置DNS服务器IP #创建时间:2014-10-22 ## ...

  5. Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析

    从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP  ...

  6. centOS7配置DNS服务器

    世上无难事只怕有心人,遇事千万千万不要抵触,消极的情绪是失败之母,一点一滴,踏踏实实是通往幸福的捷径. 历经激动,受挫,抵触和鼓励以及征服,终于配好了让我欢喜让我忧的dns.在这里记录下来,希望能够给 ...

  7. CentOS7安装和配置dns服务器

    (1)dns介绍 1.基本介绍 名字解析: NetBIOS名:localhost wins hosts FQDN:完全限定域名,www.baidu.com hosts文件: 作用:实现名字解析,主要为 ...

  8. Docker配置 DNS

    Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件. 在容器中使用 mount 命令可以看到挂载信 ...

  9. docker配置dns与容器的访问控制(6)

    Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和DNS配置?秘诀就是它利用虚拟文件来挂载到容器的3个相关的配置文件. 进入容器内使用mount命令可以看到挂载信息,这种机制可 ...

随机推荐

  1. SQL基础篇——如何搭建一个数据库

    特别提醒:所有的新建数据库,表,行,列都可以通过对象资源管理器操作,下面所讲的为查询操作方法 一.新建数据库 使用CREATE DATABASE语句建立数据库: 新建查询-- CREATE DATAB ...

  2. Unix 编程

    1. Users and Groups 真实用户ID和真实组ID 真实用户ID和组ID表示运行进程的真实用户 ID 和 组ID. 有效用户ID和有效组IDp 有效 ID 是进程进行相关操作(比如系统调 ...

  3. 细说Debug和Release区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  4. Oracle 12c 数据库中scott用户不存在的解决方法

    -- 使用超级管理员登录CONN sys/change_on_install AS SYSDBA ;-- 创建c##scott用户CREATE USER c##scott IDENTIFIED BY ...

  5. Go语言工程结构

    Go是一门推崇软件工程理念的编程语言. Go的代码必须放在GOPATH目录下,它应该包含三个子目录: src:用于以代码包的形式组织并保存Go源码文件.应该分为三类:库源码文件.命令源码文件.测试源码 ...

  6. Status Bar in iOS7

    This is a very important change in iOS 7: the status bar is no longer a separate bar. It’s now somet ...

  7. INPC & RaizePropertyChanged in mvvmlight

    INPC & RaizePropertyChanged in mvvmlight In WPF app, MvvM Framework, we binding the UIElement fr ...

  8. java判断某个字符串包含某个字符串的个数

    /** * 判断str1中包含str2的个数 * @param str1 * @param str2 * @return counter */ public static int countStr(S ...

  9. Java Day 11

    异常 Throwable 子类 Error.Exception  Error - 不可以处理 Exception - 针对性处理 原理 自定义异常 异常类的抛出throws 先检查语法错误,后检查逻辑 ...

  10. Daily Scrum2

    今天我们小组开会内容分为以下部分: part 1: 之前的失败教训: part 2: 针对Anti-spam and anti-abuse module模块的任务分工: part 3: 之后小组成员必 ...