為本地網路設置 dnsmasq
我和一小群開發人員剛搬到一個新辦公室,我想在我們的開發伺服器上設置 dnsmasq,所以當我們在那裡部署 Web 應用程序時,我們不必編輯自己的主機文件。我們在 192.168.3.1 有一個我們無法訪問的路由器。我想我會在開發盒上安裝一個 DNS 伺服器,我們都將它的 IP 記錄為輔助 DNS 伺服器。不幸的是,我正在努力完成這項工作。
開發伺服器名稱為 devbox,IP 為 192.168.3.99,執行最新的 Ubuntu Server (Karmic)
我的電腦正在執行 Ubuntu 桌面 (Karmic)
我想達到什麼
假設我有三個網站,website1、website2、website3,執行在開發框上。我想通過 URL 訪問它們:
http://website1.devbox http://website2.devbox http://website3.devbox
所以我在開發盒上配置了 Apache,安裝了 dnsmasq,並將以下幾行放入它的 hosts 文件中:
192.168.3.99 website1.devbox 192.168.3.99 website2.devbox 192.168.3.99 website3.devbox
並編輯了我自己的 resolv.conf 文件以將開發框包含為名稱伺服器:
nameserver 192.168.3.99
它工作正常,我可以訪問這些網站。問題是它不能很好地擴展。我希望所有以 .devbox 結尾的域都轉發到開發框,這就是我正在努力解決的問題。
我試過把
192.168.3.99 devbox
進入 hosts 文件,然後編輯 dnsmasq.conf 中的行:
# Add local-only domains here, queries in these domains are answered # from /etc/hosts or DHCP only. local=/devbox/
但我無法讓它工作。如果我嘗試在開發框的 hosts 文件中未明確存在的任何 URL,則 DNS 查找將失敗。
本地指令是針對其他內容的嗎?我看錯地方了嗎?
請參閱DNSmasq 文件,尤其是dnsmasq聯機幫助頁和範例配置文件。local關鍵字告訴 DNSmasq 使用本地數據執行這些域查找。例如,這會影響發送到 foo.localnet 和 bar.localnet 的DNSmasq的請求。我不認為這是你想要的。
# Add local-only domains here, queries in these domains are answered # from /etc/hosts or DHCP only. local=/localnet/
要強制主機/子域查找解析為特定地址,您可能需要使用address關鍵字。下面的第二個範例應該允許web1.devbox和web2.devbox和web73872.devbox都解析到指定的地址。
# Add domains which you want to force to an IP address here. # The example below send any host in doubleclick.net to a local # webserver. address=/doubleclick.net/127.0.0.1 # for your example address=/devbox/192.168.3.99
我在家裡使用 DNSmasq 為我的 LAN 處理簡單的 DNS 內容;在這種情況下,local和相關的domain和expand-hosts關鍵字是合適的。DNSmasq 伺服器是我的主域名伺服器,所以所有請求都通過它;任何非本地地址都會傳回 ISP 的名稱伺服器。如果可能,您可能會考慮該配置。