使用 dnsmasq 當 local 的 /etc/hosts

於 Linux 開發很常需要修改 /etc/hosts 檔,來將 Domain 指定到自己的開發 IP,但是 /etc/hosts 修改久了比較亂,而且如果多人都有各自的 /etc/hosts,要如何自動合併?

  • 註:/etc/hosts 沒有 /etc/hosts.d 的功能,現階段想要此功能,都是 cat ~/hosts.d/.conf > xxx 再 mv xxx /etc/hosts 蓋掉來達成。

使用 dnsmasq 當 local 的 /etc/hosts

想要取代 /etc/hosts 的設定方式,又可以有多個檔案設定 ex: /etc/hosts.d 的方式,於是找到 dnsmasq(做自己的微型 DNS Server)。

  • dnsmasq 是可以提供 DNS、DHCP Server 的微型服務,在 Ubuntu Linux 的 network-manager 也有在使用(/etc/NetworkManager/NetworkManager.conf、/etc/dnsmasq.d/network-manager)

註1:/etc/host.conf 裡面有 order hosts,bind,預設會先找 hosts 再 bind
註2:使用 dnsmasq 的順序一樣是先 hosts > dnsmasq > bind

dnsmasq 的安裝與設定方式

  1. apt-get install dnsmasq
  2. cat /etc/dnsmasq.conf # 此為預設設定檔
  3. vim /etc/dnsmasq.d/user.conf # 加入一個自己的
    listen-address=127.0.0.1
    address=/w1.example.com/192.168.1.1
    address=/w2.example.com/192.168.1.2
    address=/w3.example.com/192.168.1.3
  4. sudo /etc/init.d/dnsmasq restart # 修改完設定記得 restart

註:dnsmasq 預設會幫忙 cache dns query,所以也可以加速 dns 查詢時間,查詢速度也會變很快

  • dig feebee.com.tw | grep "Query time" # 第一次可能 7ms,第二次就是 0ms

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料