場景分析:現(xiàn)在有若干個(gè)測試系統(tǒng)在內(nèi)網(wǎng)中,與外網(wǎng)無法直接連接,但是現(xiàn)在非開發(fā)人員需要訪問測試系統(tǒng),不想連接vpn和修改本地hosts信息,如何讓業(yè)務(wù)人員便捷的訪問測試環(huán)境?
DNSmasq是一個(gè)小巧且方便地用于配置DNS和DHCP的工具,適用于小型網(wǎng)絡(luò),它提供了DNS功能和可選擇的DHCP功能。自己搭建公共DNS更加靈活,如果是在本地搭建,還可以大幅提高解析速度。
安裝DNSmasq
#centos安裝 yum -y install dnsmasq #如果是ubuntu系統(tǒng) apt-get -y install dnsmasq
配置DNSmasq
DNSmasq配置文件再/etc/dnsmasq.conf,我們需要修改幾個(gè)參數(shù),分別為:
- resolv-file=/etc/resolv.dnsmasq.conf 這個(gè)參數(shù)表示 dnsmasq 會從這個(gè)指定的文件中尋找上游 dns 服務(wù)器
- 取消注釋的 strict-order ,表示嚴(yán)格按照 resolv-file 文件中的順序從上到下進(jìn)行 DNS 解析, 直到第一個(gè)成功解析成功為止
- 注釋掉 no-hosts, 默認(rèn)情況下這是注釋掉的, dnsmasq 會首先尋找本地的 hosts 文件再去尋找緩存下來的域名, 最后去上游 dns 服務(wù)器尋找.
- 設(shè)置 listen-address=127.0.0.1 ,127.0.0.1改成自己服務(wù)器IP
#需要新建一個(gè)resolv.dnsmasq.conf文件,這個(gè)是配置上游DNS,也就是真正的公共DNS vi /etc/resolv.dnsmasq.conf #內(nèi)容如下 nameserver 119.29.29.29 nameserver 1.2.4.8 #修改/etc/dnsmasq.conf #上游DNS路徑 resolv-file=/etc/resolv.dnsmasq.conf #取消strict-order注釋 strict-order #監(jiān)聽地址,改成自己服務(wù)器公網(wǎng)IP listen-address=127.0.0.1
使用方法
DNSmasq可以設(shè)置不同的域名指定不同的DNS進(jìn)行解析,修改/etc/dnsmasq.conf文件即可,若不對域名設(shè)置DNS,則從上游DNS獲取記錄。
#指定淘寶使用114 DNS進(jìn)行解析 server=/taobao.com/114.114.114.114 #google指定8.8.8.8進(jìn)行解析 server=/google.com/8.8.8.8
也可以對指定的域名進(jìn)行解析,相當(dāng)于就是本地hosts指向,可以利用這個(gè)功能實(shí)現(xiàn)廣告屏蔽等效果。也是需要修改/etc/dnsmasq.conf文件,DNSmasq也可以對域名進(jìn)行泛解析,填寫*.xiaoz.me,這樣的格式即可。
#將廣告域名指向到127.0.0.1實(shí)現(xiàn)廣告屏蔽 address=/ad.youku.com/127.0.0.1 address=/ad.iqiyi.com/127.0.0.1 #對xiaoz.me進(jìn)行泛解析 address=/*.xiaoz.me/192.168.20.138
啟動與測試
比如我在本地一臺linux服務(wù)器(192.168.20.127)安裝了DNSmasq,并在局域網(wǎng)內(nèi)其它PC將DNS配置為192.168.20.127,使用dig命令進(jìn)行測試,第一次查詢相對較長,第二次幾乎再10ms內(nèi),如下截圖。
