Domain-Name-System

為本地網路設置 dnsmasq

  • May 20, 2021

我和一小群開發人員剛搬到一個新辦公室,我想在我們的開發伺服器上設置 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.devboxweb2.devboxweb73872.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和相關的domainexpand-hosts關鍵字是合適的。DNSmasq 伺服器是我的主域名伺服器,所以所有請求都通過它;任何非本地地址都會傳回 ISP 的名稱伺服器。如果可能,您可能會考慮該配置。

引用自:https://serverfault.com/questions/136332