
我會盡力提供盡可能多的信息,我對 Linux 還很陌生,但我的媒體伺服器目前運行的是 Ubuntu Server 18.04.4,我正在嘗試設定靜態 IP。
我在網路上找到了很多教程,我可以透過編輯一個名為 的檔案讓它正常工作50-cloud-init.yaml
,以下是我的設定:
network:
renderer: networkd
ethernets:
eno1:
dhcp4: no
addresses: [192.168.2.46/18]
gateway4: 192.168.2.1
nameservers:
addresses: [192.168.2.1,1.1.1.1]
dhcp4-overrides:
hostname: starlight01
send-hostname: yes
use-hostname: yes
version: 2
現在工作得很好,我完成了整個sudo netplan apply
事情,我可以通過這樣做瀏覽我的 samba 共享,\\192.168.2.46\
但是,我有一些依賴於機器名稱而不是IP 的應用程序,並且由於某種原因,當它是動態IP時我可以輸入\\starlight01\
,但當我使用電腦/主機名稱時它突然停止工作。
我還想補充一點,每台機器都無法透過機器名稱進行存取。
當它具有靜態 IP 時,我可以透過 IP 進行 ping 操作並獲得回應,但透過電腦名稱進行 ping 操作會導致逾時,但使用動態 IP 進行 ping 操作對於兩者都可以正常運作。
我還嘗試過以下方法:
- 重新啟動我的路由器和相關交換機
- 重新啟動伺服器
- 我的 Windows 機器上的 dns 刷新
- 重新啟動我的 Windows 機器
- 刪除
dhcp4-overrides
上述文件的部分
答案1
您的客戶端電腦始終使用 IP 位址連接到伺服器。當您要求它使用電腦名稱進行連接時,它會使用某些服務在內部將該名稱轉換為 IP 位址。存在多種名稱->IP 轉換服務,在您的情況下,您可能依賴 DNS(網域名稱系統)。其他選項包括WINS、MDNS、LLMNR...您的客戶端電腦可能使用您的網路/WiFi 路由器(或路由器/數據機組合單元)作為DNS 伺服器,該伺服器使用DHCP 請求中的資訊來建立本機名稱-> IP 對應表,它用於回應用戶端電腦發出的某些 DNS 請求。
當您在伺服器上啟用 DHCP 時會發生什麼:
- 當伺服器需要取得自己的IP位址時,向DHCP伺服器發送DHCP請求;通常連接到您的 WiFi 路由器或路由器+數據機。
- DHCP 請求包括發出 DHCP 請求的機器的名稱。
- DHCP 伺服器為電腦指派 IP,並將 IP/名稱對記錄在內部資料庫中。
- DHCP 伺服器將 IP 傳送回伺服器以供其使用。
- 每當另一個系統使用 DNS 協定請求與伺服器名稱關聯的 IP 時,DNS 伺服器會先查詢 DHCP 伺服器建立的本機資料庫,如果存在符合項目,則提供答案(否則它會繼續查詢整個網際網路)。
當您使用靜態 IP 位址時,永遠不會發出 DHCP 請求,因此 DHCP/DNS 伺服器永遠不會有機會將相關條目新增至本機名稱/IP 資料庫。
正如其中一條評論中提到的,您可以使用servername.local
作為名稱而不是servername
,並且它會起作用(這使用 MDNS)。 Linux 和我認為 Mac 用戶端支援此協議,但 Windows 不支援此協議,除非您安裝了支援此協議的非預設軟體(例如 Apple 的 Bonjour 軟體堆疊)。
由於我在您的問題中看到 UNC 路徑(以 \ 開頭的路徑),因此我假設您的客戶端電腦是 Windows,並且您在伺服器上執行 Samba。在這種情況下,您可以告訴 Samba 作為 WINS 伺服器。 WINS 是另一個名稱->IP 映射協定。我認為您的客戶端電腦將找到 WINS 伺服器並自動開始查詢它以進行名稱查找,至少對於 Windows/Samba 文件共用協定是如此。如果沒有,您可能需要: - 在路由器上啟用 WINS 伺服器,並告訴 Samba 向其註冊,或 - 設定路由器的 DHCP 伺服器以告訴客戶端有關在檔案伺服器上執行的 WINS 伺服器的資訊。