2018年第49周-dnsmasq的安裝(docker方式)

在開發或測試環境, 可能有大量服務器, 數據庫, 應用服務器, 中間件服務器等. 特別大數據系統, 涉及的服務器很多的時候, ip很難記, 就算修改本機host, 但每次新增刪除一個ip對於的域名, 都是很麻煩的. 於是搭建一個dns就非常必須了.

這裏使用docker無侵入式的搭建DNS服務, 不要時刪除container即可.

1.新建三個文件
在宿主(ip:192.168.31.107)新建三個文件, 分別是dnsmasq.conf,dnsmasq.hosts,dnsmasq.resolv.conf

[root@localhost dns]# pwd
/root/dns
[root@localhost dns]# ls
dnsmasq.conf  dnsmasq.hosts  dnsmasq.resolv.conf

dnsmasq.conf文件用於配置DNS應用的配置, 指定dnsmasq.resolv.conf文件及dnsmasq.hosts文件的路徑, 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

2.運行docker的contener

docker run \
  --name dnsmasq \
  -d \
  -p 53:53/udp \
  -p 8080:8080 \
  -v /root/dns/dnsmasq.conf:/etc/dnsmasq.conf \
  -v /root/dns/dnsmasq.hosts:/etc/dnsmasq.hosts \
  -v /root/dns/dnsmasq.resolv.conf:/etc/dnsmasq.resolv.conf \
  --log-opt "max-size=100m" \
  -e "HTTP_USER=admin" \
  -e "HTTP_PASS=adminpassword" \
  --restart always \
  jpillora/dnsmasq  

其中8080, 可以不用指定, 那是頁面查看DNS應用的情況而已. 不太需要. 關鍵是53端口.
這裏使用-v參數在容器上掛着宿主的文件, 這樣就可以在宿主修改dnsmasq.hosts文件, 就不需要進入容器裏修改配置.

3.修改本機的DNS, 在windows下則是修改設備器的ip4屬性裏有DNS的配置. 而Linux則是修改/etc/resolv.conf 文件

 
# Generated by NetworkManager
nameserver 192.168.31.107

4.想想空間
基於這基礎上, 有些想法, 雖然我沒實踐過, 不過我覺得應該可以. 如管理局域網的機子的上網情況, 可以知道哪些人瀏覽過什麼網站, 控制瀏覽網站行爲等.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章