我正在努力為我和我的室友建立一個家庭內部網站。我的想法是,我們將能夠將諸如過去的水電費賬單之類的東西存儲在比廚房抽屜等更容易訪問的地方。我使用它的 IP 位址,我可以訪問 Pi 上提供的頁面。由於我做這個專案是為了更多地了解網絡,以便為我的公寓提供服務,所以我認為如果我的網絡可以為我的 LAN 提供主機名稱解析,那就太酷了。因此,我可以將瀏覽器指向(其主機名稱)並查看 Pi 提供的網頁,而不是將瀏覽器指向192.168.1.151
Pi 的 IP 位址。oberon
現在我知道我不是第一個想做這件事的人,所以我開始透過谷歌搜尋。這個問題,也在 Unix 和 Linux 上,對我幫助很大:如何使用主機名稱從 LAN 存取電腦。至此,我已經嘗試了經過驗證的答案中的所有內容。我考慮過使用該hosts
文件,但這意味著我必須告訴我的室友配置他們的機器,我不希望他們這樣做。我嘗試在路由器(NETGEAR WNR1000v2(又稱 N150))上為 Pi 保留 DHCP 租約,雖然保留有效,但主機名稱解析不起作用。這讓我很沮喪,因為我告訴我的路由器 Pi 的 IP和它的主機名,但它仍然不向我的 LAN 上的客戶端提供此資訊。
由於這兩種方法都不起作用,我決定dnsmasq
在 Pi 上安裝。配置似乎很簡單,我很樂意學習新工具。我安裝並運行得很好(看起來)。我可以dig
輸入nslookup
Pi 的暱稱(我將其設為/etc/hosts
和oberon
)homenet
並獲得正確的結果。我可以對像 和 之類的互聯網名稱做同樣的事情yahoo.com
,得到正確的答案,因為我在 中設置了 Google 的8.8.8.8
和8.8.4.4
作為備份伺服器/etc/dnsmasq.conf
。看看這個:
me@oberon~$ dig oberon
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;oberon. IN A
;; ANSWER SECTION:
oberon. 0 IN A 192.168.1.151
;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct 6 18:59:18 2013
;; MSG SIZE rcvd: 40
請注意,SERVER
is 127.0.0.1
:oberon
正在自行查找自己的 IP 位址。這是我期望看到的。如果我這樣做,輸出是相同的dig oberon @localhost
。由於這個輸出,我認為dnsmasq
工作正常。所以為了把它提升到一個新的水平,我想要全部我的 LAN 上的用戶端能夠oberon
在瀏覽器中輸入內容並前往 的oberon
索引頁面。為此,我知道我需要設定我的路由器(如果這偏離了嚴格的 Unix 和 Linux 領域,我深表歉意)。
我有一台我相當熟悉的 Netgear WNR1000v2。我已經配置了連接埠轉發,這樣我就可以透過 SSH 連接到 Pi,並且我也研究了其他設定。我知道在開始這個專案之前,我是從 ISP 取得 DNS 伺服器,但現在我想主要使用這些 DNS 伺服器,但也用作192.168.1.151
最後檢查。所以我將路由器的 DNS 配置更改為以下內容:
因此,透過此配置,我希望能夠nslookup oberon
在我的(Windows)桌面上執行並獲得192.168.1.151
.但這並沒有發生。這就是發生的事情:
C:\Users\me>nslookup oberon
Server: UnKnown
Address: fe80::226:f2ff:fefa:bea
*** UnKnown can't find oberon: Non-existent domain
重設dnsflushing
Windows 電腦上的網路介面卡不會改變任何內容。
現在這就是我為什麼要在這裡抓狂的原因:
C:\Users\me>nslookup oberon 192.168.1.151
Server: oberon.lan
Address: 192.168.1.151
Name: oberon
Address: 192.168.1.151
顯然,dnsmasq
工作得很好。如果我告訴我的 Windows 盒子使用 來192.168.1.151
解析名稱oberon
,一切都很好(.lan
網域是 的配置的一部分dnsmasq
,所以我希望在那裡看到它)。如果我能讓我的路由器告訴我的 Windows 機器192.168.1.151
在進行 DNS 查詢時使用,我應該會很好!
所以在我看來問題出在我的路由器上,但我只是不知道除了更改 DNS 伺服器以包含192.168.1.151
我已經擁有的 DNS 伺服器之外還能做什麼。有人能幫我一下嗎?我將盡力提供所需的任何進一步資訊。
答案1
你的問題在於你對這些 DNS 伺服器的使用方式的誤解,我不知道 Windows 用於選擇要查詢的 DNS 伺服器的方法的確切細節,但我敢打賭它的主要>輔助>第三/總是/。即使它不是並且是循環的,您仍然會在 3 次中查詢 2 次無用的伺服器。
將會發生的情況是主伺服器將被查詢。如果逾時(可能是一兩秒),則會查詢下一個伺服器。 DNS 不是一個「共識」系統,如果查詢其中一台遠端伺服器,從其作為網際網路 DNS 伺服器的角度來看,它最終會發現您的主機名稱不存在。
您需要自己的 LAN dns 作為主 DNS 伺服器。其他人會製作合適的備份伺服器,但我會考慮完全放棄它。
另外值得注意的是,您的反向 dns(IP 到名稱查找)解析為“hostname.lan”,但您的正向解析測試僅使用主機名稱。您也應該在某處設定 hostname.lan 的前向解析。雖然主機可能有許多「名稱到位址」正向查找,但期望存在 IP 到名稱的反向查找,而名稱又具有與該 IP 記錄相符的名稱。它並不總是很重要,有時只會使日誌檔案發出抱怨聲,但有些事情對此比其他事情更敏感。
另外,一旦一切正常,不要忘記刪除您放置的任何主機檔案(我不知道這是否與 dnsmasq 相關,從未使用過它,我使用 ISC-BIND 名稱有一個類似但更複雜的配置)伺服器,您可以將其配置為轉發到您正在使用的其他伺服器,或只是將其用作非轉發DNS 伺服器,自行進行全名解析- 這就是我所設定的)。
不用說,正如您最初推測的那樣,您並不是唯一進行此設定的人,幾乎每個合理發展的企業 LAN 和許多過度發展的家庭 LAN 都會有這種設定。
答案2
也許有點晚了,但在我的無線適配器上禁用 ipv6 就成功了。