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

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

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

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

[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內容以下:centos

cache-size=50000
dns-forward-max=1000
resolv-file=/etc/dnsmasq.resolv.conf
addn-hosts=/etc/dnsmasq.hosts

dnsmasq.hosts文件, 就是咱們常常修改的host了, 自定義指定ip和域名的映射關係, dnsmasq.hosts文件內容以下:bash

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文件, 就不須要進入容器裏修改配置.
訪問8080頁面是這樣的大數據

clipboard.png

3.使用DNS的方法有三種方法(任意一種便可):
3.1在windows下則是修改設備器的ip4屬性裏有DNS的配置.
3.2而Linux則是修改/etc/resolv.conf 文件網站

# Generated by NetworkManager
nameserver 192.168.31.190

3.3修改路由器的DNS配置centos7

clipboard.png

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

遇到的問題:
若是開啓了防火牆,需開啓udp協議的53端口,如centos7:

firewall-cmd --zone=public --add-port=53/udp --permanent

dns是採用udp協議進行通信。

相關文章
相關標籤/搜索