sudo nano /etc/systemd/resolved.conf
# 更改成如下內容
# 假設docker-bind所在服務器IP地址爲192.168.3.37
[Resolve]
DNS=192.168.3.37
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
複製代碼
參考 怎樣釋放systemd-resoved
使用的53端口html
配置後,此時/etc/resolv.conf
的內容爲git
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 192.168.3.37
nameserver 192.168.3.1
複製代碼
/etc/resolv.conf
並從新執行sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
/run/systemd/resolve/resolv.conf
文件,說明執行了systemctl disable systemd-resolved
或service systemd-resolved stop
,所以執行systemctl enable systemd-resolved
和service systemd-resolved start
並重啓便可選定集羣中用做搭建DNS服務器的服務器執行下列命令github
# 在關閉本機解析服務以前拉取鏡像
docker pull sameersbn/bind:9.16.1-20200524
# 使用docker容器部署bind服務
docker run \
--name bind \
-d \
--restart=always \
--publish 53:53/tcp \
--publish 53:53/udp \
--publish 10000:10000/tcp \
--volume docker-bind:/data \
sameersbn/bind:9.16.1-20200524
複製代碼
假設服務器IP地址爲192.168.3.37
,本地根域名爲dev
。web
訪問Webmin管理界面,地址爲:https://192.168.3.37:10000/,默認用戶名:`root`,密碼:`password`,相關設置以下:docker
更新本機nameservers設置,設定爲服務器IP地址,並執行如下命令檢查DNS服務器工做是否正常bash
nslookup www.baidu.com
nslookup a.dev
nslookup b.dev
複製代碼
若是出現;; Got recursion not available from 192.168.3.37, trying next server
的問題,執行下述操做(更方便的作法是按照文件的內容 在dashboard中進行修改:Servers → BIND DNS Server → Global Server Options → Edit Config File)服務器
docker cp bind:/etc/bind/named.conf.options ./
docker cp bind:/etc/bind/named.conf ./
# 分別對兩文件進行修改
# named.conf
acl trusted {
192.168.0.0/16;
10.153.154.0/24;
localhost;
localnets;
};
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
# named.conf.options
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; listen-on-v6 { any; }; forwarders { 8.8.8.8; 8.8.4.4; }; allow-query { any; }; allow-recursion { trusted; }; allow-query-cache { trusted; }; }; # 寫回到容器中 docker cp ./named.conf.options bind:/etc/bind/named.conf.options docker cp ./named.conf bind:/etc/bind/named.conf # 重啓容器 docker restart bind 複製代碼
參考 issuemarkdown