DNSmasq是一個小巧且友善地用于配置DNS和DHCP的工具,适用于小型網絡,它提供了DNS功能和可選擇的DHCP功能。它服務那些隻在本地适用的域名,這些域名是不會在全球的DNS伺服器中出現的。DHCP伺服器和DNS伺服器結合,并且允許DHCP配置設定的位址能在DNS中正常解析,而這些DHCP配置設定的位址和相關指令可以配置到每台主機中,也可以配置到一台核心裝置中(比如路由器),DNSmasq支援靜态和動态兩種DHCP配置方式。
一、介紹 DNSmasq是一個輕巧的,容易使用的DNS服務工具,它可以應用在内部網和Internet連接配接的時候的IP位址NAT轉換,也可以用做小型網絡的DNS服務. 它可以提供如下幾個實用的功能: 1 、提供dns服務 2 、優先使用本地自定義dns 3 、提供dhcp服務
一般情況下,我們可以用bind解決dns的問題,dhcpd解決dhcp的問題,另外,還可以用ypbind解決自定義hostname解析的ip(當然還有使用者的功能),它都解決了!很實用吧?這真的很吸引人,況且它一直在更新維護,最新版本是6月份的。
當碰到比較棘手的幾個問題時,即可用dnsmasq通通解決:
1 區域網路有很多機器希望使用一份一樣的hosts定義一批名稱對應的ip,你需要經常維護這份清單
2 你希望區域網路的人通路某個域名時,攔截下來到指定的ip,做緩存節省帶寬或者其它用途都可以
3 禁止某個域名的正常解析
二、配置 DNS功能:
vi /etc/dnsmasq.conf
預設情況下:
resolve-file指定dnsmasq從哪裡擷取上行DNS Server, 預設是從/etc/resolv.conf擷取。
addn-hosts指定dnsmasq從哪個檔案中讀取“位址 域名”記錄, 預設是系統檔案/etc/hosts;
listen-address預設是監控在所有網卡上的。
★配置 dnsmasq 的上遊 dns 伺服器;(這是一個 dns 緩存, 那麼其還是需要有上遊伺服器進行一次域名解析的)
★配置系統的 dns 伺服器, 将 dnsmasq 設定在首位尋找
★設定 dnsmasq 需要監聽的 IP 位址, 讓其他伺服器能夠找到他
1、首先配置 resolv-file=/etc/resolv.dnsmasq.conf 這個參數表示 dnsmasq 會從這個指定的檔案中尋找上遊 dns 伺服器

系統首先尋找本地的 dnsmasq 伺服器 取消注釋的 strict-order 表示嚴格安裝 resolv-file 檔案中的順序從上到下進行 DNS 解析, 直到第一個成功解析成功為止
2、 no-hosts, 預設情況下這是注釋掉的, dnsmasq 會首先尋找本地的 hosts 檔案,再去尋找緩存下來的域名, 最後去上遊 dns 伺服器尋找;而addn-hosts可以多額外的hosts檔案。是以說dnsmasq是一個很不錯的外部DNS中繼。
3、設定 listen-address=127.0.0.1, 表示這個 dnsmasq 本機自己使用有效.
這裡有一個坑 listen-addres , 我爬了好長時間才爬出來..
在這些配置中, listen-address 的參數坑了我好長時間, 最後才能明白如何配置. 例如, 我還需要讓區域網路内其他的伺服器也能夠首先通路這個 dnsmasq 來進行域名解析如何配置? listen-address=192.168.1.100 (dnsmasq 所在伺服器區域網路内 ip), 好吧, 這樣你本機配置的 127.0.0.1 就沒效果了… 如果設定為 listen-address=127.0.0.1 那區域網路内其他伺服器就無法通路到這個 dnsmasq 了, 其實應該這樣設定 listen-address=192.168.1.100,127.0.0.1 這樣你就能雙方都滿足了, 不過需要注意的一點是, 如果 dnsmasq 所在伺服器在區域網路的 ip 位址變更了與配置檔案中的不一樣, 那麼理所當然的再使用配置檔案中的那個 ip, 區域網路内其他伺服器也就找不到這台 dnsmasq ,也就無法利用本地的 dns 緩存了.
4、其他配置項:
cache-size=1024 設定緩存大小;
log-queries 開啟debug模式,記錄用戶端查詢記錄到/var/log/debug中
5、用戶端機器配置,編輯/etc/resolv.conf ,調整内容為 nameserver 192.168.1.78 (其中該IP是内部dns的IP)
用戶端測試域名是否生效:nslookup t.sina.com 檢查解析的IP即可。
三、配置DHCP功能:
使用dnsmasq提供DHCP服務也是相當簡單的事情。
在/etc/dnsmasq.conf 中對以下選項進行設定并且取消某些注釋:
expand-hosts
domain=example.com
dhcp-range=192.168.0.50,192.168.0.150,12h
dhcp-option=3,192.168.0.1
以上配置選項enable 了DHCP服務,并且設定domain為“example.com”。DHCP服務提供位址範圍為 192.168.0.50到 192.168.0.150 續訂期為12個小時。最後的一個選項指定了預設網關。當然配置檔案中還有其他更多的選項,可以參考配置檔案事例或者man幫助。
如果要配置靜态位址,可以對dhcp-host選項作以下設定:
dhcp-host=11:22:33:44:55:66,foo,192.168.0.10
這樣就會對MAC 位址 11:22:33:44:55:66 賦主機名為 foo (.example.com) IP 位址 192.168.0.10.
dnsmasq另外一個特性是能夠提供tftp服務,讓網絡啟動(PXE)也得以實作。
dnsmasq提供如下特性以保證其取代BIND和dhcpd或其他類似軟體的籌碼。它可以設定預設MX記錄,多種caching和大量DHCP選項。SRV記錄提供LDAP資訊,PTR、SPF甚至是zeroconf 記錄。