Fedora

無法 ping 或 curl 一個 *.local 域,但 nslookup 有效

  • October 17, 2020

在新安裝的 Fedora Workstation 上執行預設的 Workstation spin 安裝 Gnome。我在使用瀏覽器訪問 LAN 上的 Web 伺服器時遇到問題。這些命令curlping不能在工作站上執行。但是,在同一網路上的其他機器(也包括 Linux)上一切正常。我沒有東西可以在新機器上嘗試。我還能解決什麼問題?

$ ping mywebserver.mydomain.local
ping: unknown host myserver.mydomain.local

$ curl -XGET http://mywebserver.mydomain.local
curl: (6) Could not resolve host: mywebserver.mydomain.local

但是,nslookup解析IP

$ nslookup mywebserver.mydomain.local
Server:     192.168.1.2
Address:    192.168.1.2#53

mywebserver.mydomain.local
Name:   mywebserver.mydomain.local
Address: 192.168.1.24

此外,如果我使用curlping使用 IP 地址,它可以工作

$ curl -XGET http://192.168.1.24
<gets HTML>

$ ping http://192.168.1.24
<works>

host命令還解決:

$ host mywebserver.mydomain.local
mywebserver.mydomain.local has address 192.168.1.24

我可以 ping 和 curl 外國伺服器:

$ ping www.google.com
<works>

$ curl -XGET http://www.google.com
<works>

其他線索…

  • mywebserver是該伺服器的 DNS A 記錄中的名稱。它只服務於一個網站。
  • 我在 LAN 上託管了 2 個其他網站。我可以pingA 記錄,但不能curlA 記錄。CNAME 不會響應pingnor curlping在其他機器上,這些 CNAME和A 記錄名稱將curl完全響應。
  • 如果我ssh進入另一台機器,從那裡我可以ping而且curl很好

的內容/etc/resolv.conf

# Generated by NetworkManager
search mydomain.local
nameserver 192.168.1.2

/etc/nsswitch.conf 中的相關行

$ grep ^hosts /etc/nsswitch.conf
hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

該域.local保留給可以被 mdns 協議(本地網路上的廣播)自動發現的主機使用。您可以通過安裝和執行來使其工作avahi,或者更簡單地通過mdns4_minimal [NOTFOUND=return]從您的 nsswitch.conf 中刪除該部分。要測試地址,請使案例如getent hosts mywebserver.mydomain.local.

引用自:https://unix.stackexchange.com/questions/289930