第一次写博客,仅仅只是为了记录自己的学习历程,总结下学习的知识,也方便以后的使用和操作。文章是在借鉴别的的博客上写的,有些操作是一样的,只是添加了些自己的使用方法,在文末会将博客源贴上,话不多说,直奔主题。。。。。。。
1.容器安装
通过docker下载andyshinn/dnsmasq镜像,版本号2.75。
docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server andyshinn/dnsmasq:2.75
如果docker没有加入用户组的话,使用ubuntu系统的就要在指令前加上sudo。
镜像pull后会出现下图的的提示,是因为ubuntu系统默认安装dnsmasq-base服务。
这里提示53端口已经被占用。查看本机可以将占用53端口的进程直接kill掉。我先使用的进程kill,但是kill一个进程,立马又被另一个进程占用。所以直接通过指令关闭这个服务。
sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
sudo rm /etc/resolv.conf
先关闭服务,然后删除resolv.conf文件。再次通过第一条指令pull镜像时会出现如下情况:
通过docker rm ID
指令将占用的容器移除,再次pull镜像即可。在这个里ID是个形参,指的是容器的ID。
通过docker ps
指令查看运行容器。
2.DNS服务配置
进入容器
docker exec -it dns-server /bin/sh
先要配置真正dns服务器地址,在/etc 目录下创建resolv.dnsmasq文件,
vi /etc/resolv.dnsmasq
配置内容:
server=114.114.114.114
server=8.8.8.8
制定DNS服务地址,一个是国内的,一个是google的。
配置自己的DNS域名解析规则,在etc目录下创建dnsmasq.hosts文件,
vi /etc/dnsmasq.hosts
这个文件的内容就要我们自己要定义的DNS域名解析规则,如www.haobaba.com 对应192.168.0.140,则在文件里添加如下内容:
192.168.0.140 www.haobaba.com
最后在etc下的dnsmasq.conf配置文件内制定自定义的配置文件。
vi /etc/dnsmasq.conf
打开这个文件,里面有很多注释内容,不用管它,直接在文件最后添加如下内容即可:
resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasq.hosts
保存文件,退出容器,然后重启容器
docker restart dns-server
通过nslookup www.haobaba.com
查看域名解析是否成功。
注意
关掉了ubuntu自带的systemd-resolved 服务,而且删除了/etc/resolv.conf文件,但是每次虚拟机重启之后,系统会自动生成resolv.conf 文件,会导致系统会解析不了外部域名而上不了网。可以通过编辑/etc/resolv.conf文件且给该文件上锁。
sudo vi /etc/resolv.conf
添加:nameserver 虚拟机dns服务的地址
然后再上锁:
sudo chattr +i /etc/resolv.conf
解锁是:
sudo chattr -i /etc/resolv.conf
虚拟机的虚拟网络模式应该设置外桥接模式。
相关阅读转自:
https://www.linuxidc.com/Linux/2016-08/134538.htm
https://blog.youkuaiyun.com/yanghua1012/article/details/80555487