為什麼我的無線路由器搞砸了主機名稱查找?

為什麼我的無線路由器搞砸了主機名稱查找?

問題:我的無線網路上有兩台電腦(網域名稱“serenity”,位於 192.168.1.1)、主機名稱“jayne”(Arch Linux,位於 192.168.1.108)和“mal”(Mac OS X,位於 192.168.1.101) 。當我嘗試讓兩者進行交流時,會發生這種情況:

jayne$ ping mal
PING mal.serenity (184.106.31.161) ... [pings go through to weird IP]

mal$ ping jayne
PING jayne.serenity (184.106.31.161) ...

然而,ping 路由器是有效的:

jayne or mal$ ping serenity
PING serenity.serenity (192.168.1.1) ...

然後事情就變得奇怪了:

jayne or mal$ ping google
PING google.serenity (184.106.31.161) ... [same IP as before]

jayne or mal$ ping google.com
PING google.com (74.125.115.106) ... [works as expected]

jayne$ ping 192.168.1.101
PING  192.168.1.101 (192.168.1.101) ... [works as expected]

那為什麼馬爾和傑恩不能見面呢?

陷阱:serenity 目前連接到另一個預先存在的路由器(它沒有網域名稱),該路由器是互聯網的主要網關,位於 192.168.0.1。我設定了靜態 DHCP 規則以始終將 Serenity 對應到 192.168.0.2。

現在,我注意到,當我在瀏覽器中訪問不存在的 URL 時,我會被重定向到 ISP 的“在互聯網上搜索 *”頁面,因此我認為 ping 解析的奇怪 IP 地址可能屬於任何伺服器在ISP 上進行了處理,並將.0.1 路由器上的DNS 伺服器更改為谷歌的公共 DNS服務。

現在,ping mal或者ping jayne根本不解析(“ping:未知主機 mal”,“ping:無法解析 jayne:未知主機”),即使使用“完整”名稱(如“mal.serenity”),但我仍然可以成功ping serenity

那為什麼馬爾和傑恩不能見面呢?

我並不是一個真正的網路專家,所以我可能只是在某個地方設定錯誤,但同時我正在使用hosts檔案來解決這個問題,透過手動將主機名稱映射到IP位址,但這只是修復症狀,而不是問題。

答案1

我可能會根據您對上述評論/問題的回答修改或刪除此內容。

我相信這就是正在發生的事情,它可能會對您有所幫助。第一部分很簡單:您正在嘗試使用DNS 來ping 未在任何地方的DNS 中註冊的工作站,而您的路由器/DNS 伺服器正在返回其外部IP 位址(我相信,您對上述問題的回答將證實這一點) 。

第二部分是,如果比較兩個 Windows 工作站,當它們沒有註冊到本機 DNS 伺服器時,它們會使用 TCP/IP 上的 NetBIOS 來尋找對方。就你的情況而言,我不確定你是否有類似的東西可以使用,因為我不是 Linux 或 Mac 人員,如果有的話,目前還沒有使用。

我能說的是,你可以將你的 Linux 機器設定為 DNS 伺服器,託管你自己的 DNS,並向該伺服器註冊你的電腦;或者您可以繼續使用 HOSTS 檔案。最後,很可能有人會添加另一個答案,告訴您如何讓 Linux 和 Mac 在不使用 DNS 的情況下進行通信,類似於 TCP/IP 上的 NetBIOS。

如果有人沒有提出類似於 TCP/IP 上的 NetBIOS 概念的東西,那麼我個人的觀點是,您可以使用 HOSTS 文件,這就是要走的路。

答案2

「.serenity」位元可能已作為 DNS 搜尋網域附加。這可以透過 DHCP 自動配置,因此您可能從中獲取它。在路由器的 DHCP 設定中,清除所有搜尋網域欄位(如果有)。

如果仍然看到它,請在 Windows 下轉到 TCP/IP 設置,按一下“高級”,然後在 DNS 標籤下:

  • 清除「此連線的 DNS 後綴」框
  • 選擇“附加這些 DNS 後綴”並確保清單中沒有任何內容

您可能必須對 IPv4 和 IPv6 執行此操作。

在 Mac 上,前往系統偏好設定中的網路。按一下連線的進階按鈕,然後在 DNS 標籤下按一下 + 按鈕新增空白項目。 (您應該會看到來自 DHCP 的虛假條目呈灰色顯示,因此您只能透過這種方式將其刪除。)

在 Mac 和 Linux 上,您可能還需要檢查/etc/resolve.conf以確保搜尋網域不在其中。


至於神秘的 DNS 結果,我猜這是您的 DNS 提供者正在使用的某種「捕獲所有」或「網域更正」服務。通常,他們會針對所有不存在的網域返回此結果,以便他們可以從您那裡獲得一些廣告收入。 OpenDNS 和許多 ISP 都會這樣做。

附加搜尋網域的主機名稱不再是有效的本機主機名,而是對作業系統來說看起來像是正確的 FQDN,因此作業系統將其傳送到 DNS 伺服器,而不是諮詢 NetBIOS。如果您沒有這種「捕獲所有」服務,您的作業系統最終將意識到這不是一個正確的網域,並回退到 NetBIOS 或其他名稱解析機制。

相關內容