通過Docker配置DNS服務器


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 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 參數配置

修改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.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機上測試如下,成功:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM