DNS
服务器是(Domain Name System
或者Domain Name Service
)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP
地址。
IP |
系统版本 |
角色 |
192.168.40.121 |
Ubuntu 22.10 |
DNS服务器 |
192.168.40.122 |
Ubuntu 22.10 |
测试机器 |
root@121:~# apt-get update
root@121:~# apt-get install -y docker.io
root@121:~# sudo mkdir -p /data/docker/dns-server
root@121:~# sudo docker run --name dns-server -d \
--restart=always --publish 53:53/tcp \
--publish 53:53/udp --publish 10000:10000/tcp \
--volume /data/docker/dns-server:/data sameersbn/bind:latest
sudo docker exec -it dns-server /bin/bash
-p 53:53/udp
绑定容器53端口到宿主机的153
端口,DNS
默认端口;
-p 10000:10000
图形化界面管理器端口;
-volume /
data/docker/
dns-server:/data
挂载本地目录作为dns
配置存储;
root@121:~# sudo lsof -i:153 #查看53端口的进程
如果被占用参考https://www.otakusay.com/866.html
访问地址https://localhost:10000
默认账户和密码root/password
这里访问的是{容器ID}:10000:
# This web server is running in SSL mode.
# Try the URL
# https://1092a6514a9a:10000/
# instead.
# 外部机器访问时, 需要配置机器的/etc/hosts文件:
192.168.31.85 1092a6514a9a # 宿主机ip地址: 192.168.31.85
注意:主服务器写localhost
,避免重启后失效. 因为我们只做私网解析,指向本地即可
否则会报错如:无法创建主区域 : '7xxxxxxx..'不是有效的主服务器
ip
映射#use
示例一:
名称: lpf-test
ping: lpf-test.cn
示例二:
名称: *.lpf-test
ping: www.lpf-test.cn, master.lpf-test.cn 等任意*.lpf-test.cn
root@121:~#sudo docker restart dns-server
root@122:~# sudo vi /etc/systemd/resolved.conf
...
DNS=192.168.40.121 114.114.114.114 # 取消前面的注释,将dns服务器IP写在前面,后面作为备用DNS服务器
...
root@122:~# sudo systemctl restart systemd-resolved
root@122:~# sudo systemctl enable systemd-resolved
查看端口占用情况,看看 53 端口是不是被 systemd-resolved
占用了。
sudo netstat -nultp
如果 53 端口确定被 systemd-resolved
占用了,则可以根据下面给出的方法解决。
1、先停用 systemd-resolved 服务。
sudo systemctl stop systemd-resolved
sudo systemctl status systemd-resolved
2、编辑 /etc/systemd/resolved.conf 文件,按 “i” 键进入编辑模式。
sudo vi /etc/systemd/resolved.conf
3、换下面说明更改,然后按一下 “esc” 键,再输入 “:wq”(不要输入引号),回车保存即可。
[Resolve]
DNS=223.5.5.5 #取消注释,增加dns
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
DNSStubListener=no #取消注释,把yes改为no
#ReadEtcHosts=yes
4、最后运行下面命令即可。
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Docker搭建DNS服务器 - 知乎