DNS 伺服器無法解析 localhost 名稱
我正在嘗試在我的 RHEL6.4 vm 上設置 Apache 伺服器,但由於
dnsmasq
某種原因無法辨識主機名,因此無法:nslookup rhel64.example.com Server: xxx.xxx.xx.1 Address: xxx.xxx.xx.1#53 server can't find rhel64.exmple.com: NXDOMAIN
/etc/hosts
:xxx.x.x.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/resolv.conf
:; generated by /sbin/dhclient-script search novalocal example.com nameserver xxx.xxx.xx.1
如果您需要查看任何內容來解決我的問題,請告訴我。我不能使用不同的 DNS 伺服器。
尋找一種
dnsmasq
在不更改 DNS 伺服器的情況下解析主機名的方法。
我希望您的伺服器的 IP 地址是固定的。你
/etc/hosts
應該包含127.0.0.1 localhost 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 xxx.x.x.1 rhel64.example.com rhel64
localhost
絕不應指向 127.0.0.1 或 ::1 以外的地址。根據需要添加具有固定地址的其他主機/etc/hosts
。對於動態地址,請確保您在 中設置了正確的域
/etc/dnsmasq.conf
,並確保在請求中發送了主機名。檢查dnsmasq.leases
應該在/var/lib
目錄中的文件嘗試驗證。應該像這樣指定域。domain=example.com
或者,您可以在文件中提供固定地址
dnsmasq.conf
或/etc/ethers
. 像這樣的行會將 mac 地址映射aa.bb.cc.dd.ee.ff
到192.0.2.1
./etc/hosts
如上所述,將指定 DNS 名稱。aa.bb.cc.dd.ee.ff 192.0.2.1
編輯:我會使用的診斷包括。
在執行 dnsmasq 的主機上執行 getent。
getent hosts rhel64
這應該返回您在 hosts 文件中輸入或由 DNS 返回的值。如果可行,請嘗試使用該
host
命令查找地址。nslookup
如果主機不可用,請使用。試試這些命令。(看來您dnsmasq
和apache
伺服器位於同一主機上。hosts rhel64. hosts rhel64.example.com. hosts rhel64. localhost hosts rhel64.example.com. localhost hosts rhel64. rhel64. hosts rhel64.example.com. rhel64. hosts rhel64. rhel64.example.com. hosts rhel64.example.com. rhel64.example.com.
哪個命令失敗以及它如何失敗應該可以幫助您確定問題。您可能還想確保 dnsmasq 正在偵聽所有 IP 地址。
診斷問題時:請求
rhel64.
是針對未使用域限定的主機名,請求rhel64.example.com.
是針對完全限定的名稱。名稱上的最後一個點告訴解析器不要嘗試搜尋列表中的域。第二個主機名(如果指定)將覆蓋 中列出的名稱伺服器/etc/resolv.conf
。在這種情況下,我使用了來自 的伺服器/etc/resolv.conf
、本地主機地址(127.0.0.1 或 ::1)、從 DNS 中查找的主機名地址以及從名稱伺服器中查找的完全限定名稱的地址。如果名稱的初始查找失敗,最後兩個伺服器將無法工作。netstat -an | grep :53
編輯:在重新閱讀您的文章時,我注意到您從 DHCP 獲取地址,關於設置固定 IP 地址的說明適用於 Unix 風格的 DHCP 伺服器。它們應該應用於可能是 xxx.xx1 的路由器的 dchp-server,這不是您的伺服器地址。您應該能夠使用命令
ifconfig
或較新的命令獲取目前 IP 地址ip addr
。這是應該與 /etc/hosts 文件中的主機名匹配的地址。如果您無權訪問路由器,您可以嘗試讓 DHCP 為您更新 DNS 服務。將以下條目添加到我們的 DHCP 配置文件中:option fqdn.fqdn rhel64.example.com;或選項 fqdn.fqdn rhel64;
添加條目後,您將需要重新啟動該
dhclient
過程。試試命令sudo dhclient -r sudo dhclient
否則,您將需要重新啟動介面或整個網路設置。