使用Docker无侵入式的搭建DNS服务
用网上的一些公共DNS服务的时候,总是莫名其妙的有些网站无法解析,听网上介绍说可以通过搭建私人的DNS来解决这个问题,同时还可以防止ISP在网页中插入的乱七八糟的广告。然后闲着试了试,可以成功搭建,具体有什么区别没发现,因为被gwf污染的网站还是无法通过搭建的DNS来访问。不过没事也可以搭一个玩玩。
Debian搭建Dnsmasq服务
教程通过搭建Dnsmasq服务来提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。
以上介绍来自ArchWiki。
当然Dnsmasq还可以自定义DNS路由、转发DNS请求之类的,用于屏蔽广告。当然本文主要介绍Dnsmasq的部署方法,至于高级操作还需要慢慢琢磨。
至于Dnsmasq的工作原理呢,我也不在写了,毕竟我也没有官方文档了解的那么清楚,搭建起来后自己在去理解工作原理吧!!!
1.新Dnsmasq建配置文件
在宿主新建三个配置文件, 分别是dnsmasq.conf, dnsmasq.hosts, dnsmasq.resolv.conf。可以选择自己偏好的路径位置,方便以后修改。
mkdir -p /home/dns
cd /home/dns
touch dnsmasq.conf dnsmasq.hosts dnsmasq.resolv.conf
dnsmasq.conf文件用于配置DNS应用的配置, 指定dnsmasq.resolv.conf文件及dnsmasq.hosts文件的路径, 这里的路径是只docker中的配置路径,dnsmasq.conf内容如下:
cache-size=50000
dns-forward-max=1000
resolv-file=/etc/dnsmasq.resolv.conf
addn-hosts=/etc/dnsmasq.hosts
dnsmasq.hosts文件, 就是我们经常修改的host了, 自定义指定ip和域名的映射关系, dnsmasq.hosts文件格式如下,根据自己的需要自行修改添加,这里只是作为格式参照:
192.168.31.101 s1.jevoncode.com
192.168.31.102 s2.jevoncode.com
192.168.31.103 s3.jevoncode.com
192.168.31.104 s4.jevoncode.com
192.168.31.105 s5.jevoncode.com
192.168.31.106 s6.jevoncode.com
dnsmasq.resolv.conf文件, 由于DNS服务器是不知道baidu.com这些域名所对应的ip是什么, 所以要指定外网的DNS, 如果在dnsmasq.hosts文件找不到域名的映射关系, 则请求外网的DNS获取, dnsmasq.resolv.conf文件的内容如下:
nameserver 114.114.114.114
nameserver 223.5.5.5
上面DNS,可以自行修改
可以使用googledns: 8.8.8.8/ 8.8.4.4等其他公共域名。
2.运行Docker的contener
docker run \
--name dnsmasq \
-d \
-p 53:53/udp \
-p 8080:8080 \
-v /home/dns/dnsmasq.conf:/etc/dnsmasq.conf \
-v /home/dns/dnsmasq.hosts:/etc/dnsmasq.hosts \
-v /home/dns/dnsmasq.resolv.conf:/etc/dnsmasq.resolv.conf \
--log-opt "max-size=100m" \
-e "HTTP_USER=admin" \ #设置webui登录用户名
-e "HTTP_PASS=adminpassword" \ #设置登录密码
--restart always \
jpillora/dnsmasq
其中8080,可以不用指定, 那是页面查看DNS应用的情况而已. 不太需要,关键是53端口。
-v参数在容器上挂着宿主的文件,路径请请修改为自己配置路径。这样就可以在宿主修改dnsmasq.hosts文件,就不需要进入容器里修改配置。
-e参数请设置自己的登录信息,访问http://ip:8080 可访问网页端日志等信息。
访问8080页面是这样的:
3.使用DNS的方法有三种方法(任意一种即可):
3.1在windows下则是修改设备器的ip4属性里有DNS的配置.
3.2而Linux则是修改/etc/resolv.conf 文件
3.3修改路由器的DNS配置
PS
参考链接: https://wiki.archlinux.org/index.php/Dnsmasq_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)