經過Docker配置DNS服務器

1. 概述

DockerHub中的 sameersbn/bind 鏡像提供了搭建DNS服務器的功能,本文給出使用該鏡像搭建DNS服務器的例子。node

2. 環境

DNS服務器主機 IP:10.11.150.73  域名:master.open.comweb

客戶端1的 IP:10.11.150.74  域名:node.open.comdocker

客戶端2的 IP:10.11.150.75  域名:node2.open.com瀏覽器

測試環境中7三、7四、75機不能鏈接DockerHub,中起色可鏈接7三、7四、75機和DockerHub。bash

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/目錄下(任意具備讀寫權限的目錄都可):spa

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

在73機上將鏡像導入:3d

docker load --input sameersbn_bind.tar

此時在73機上即有了sameersbn/bind的鏡像了:code

3.2 新建並啓動DNS服務器容器

在73機運行以下命令新建並啓動容器:

docker run --name='bind' -d -p 53:53/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 參數配置

修改7三、7四、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 字段爲以下內容,表示容許7三、7四、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.127 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機上測試以下,成功:

相關文章
相關標籤/搜索