前言
DNS
服务器是(Domain Name System
或者Domain Name Service
)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP
地址。
安装
2.1 实验环境
IP | 系统版本 | 角色 |
192.168.40.121 | Ubuntu 22.10 | DNS服务器 |
192.168.40.122 | Ubuntu 22.10 | 测试机器 |
2.2 服务器端
2.2.1 Docker安装
更新软件包
root@121:~# apt-get update
安装docker
root@121:~# apt-get install -y docker.io
2.2.2 创建文件存储文件
root@121:~# sudo mkdir -p /data/docker/dns-server
2.2.3创建容器运行dns服务器
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
2.2.4 参数说明
-p 53:53/udp
绑定容器53端口到宿主机的153
端口,DNS
默认端口;
-p 10000:10000
图形化界面管理器端口;
-volume /
data/docker/
dns-server:/data
挂载本地目录作为dns
配置存储;
2.2.5 查看端口占用情况
root@121:~# sudo lsof -i:153 #查看53端口的进程
如果被占用参考https://www.otakusay.com/866.html
2.2.6 访问DNS服务器
访问地址https://localhost:10000
默认账户和密码root/password
这里访问的是{容器ID}:10000:
# This web server is running in SSL mode.
# Try the URL <a href='https://1092a6514a9a:10000/'>
# https://1092a6514a9a:10000/
# </a> instead.<br>
# 外部机器访问时, 需要配置机器的/etc/hosts文件:
192.168.31.85 1092a6514a9a # 宿主机ip地址: 192.168.31.85
2.3 DNS服务器页面设置
2.3.1 修改语言
2.3.2 设置DNS-Server默认值
2.3.3 创建新的主区域-正向解析
注意:主服务器写localhost
,避免重启后失效. 因为我们只做私网解析,指向本地即可
否则会报错如:无法创建主区域 : '7xxxxxxx..'不是有效的主服务器
2.3.4在刚新建的域名下添加ip
映射
#use
示例一:
名称: lpf-test
ping: lpf-test.cn
示例二:
名称: *.lpf-test
ping: www.lpf-test.cn, master.lpf-test.cn 等任意*.lpf-test.cn
2.3.5 重启容器
root@121:~#sudo docker restart dns-server
2.4 客户端
2.4.1 修改DNS
root@122:~# sudo vi /etc/systemd/resolved.conf
...
DNS=192.168.40.121 114.114.114.114 # 取消前面的注释,将dns服务器IP写在前面,后面作为备用DNS服务器
...
2.4.2 重启systemd-resolved服务
root@122:~# sudo systemctl restart systemd-resolved
root@122:~# sudo systemctl enable systemd-resolved
2.4.3 ICMP测试
问题
彻底解决 Linux 系统下 systemd-resolve 占用 53 端口的问题
查看端口占用情况,看看 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服务器 - 知乎