Systemd

NetworkManager 干擾主機名配置

  • July 7, 2021

我正在執行一個帶有 KDE4/Plasma、wpa_supplicant、networkmanager、systemd 的 arch 系統……

# cat /proc/version  
Linux version 5.0.0-arch1-1-ARCH (builduser@heftig-18825) (gcc version 8.2.1 20181127 (GCC)) #1 SMP PREEMPT Mon Mar 4 14:11:43 UTC 2019

/etc/hostname讀的內容localhost。啟動後,shell 命令hostname現在輸出localhost. 更確切地說:

# hostnamectl 
  Static hostname: localhost
Transient hostname: localhost.localdomain
        Icon name: computer-laptop
          Chassis: laptop
       Machine ID: 7e0a101cd2f0406497a6e4354fc9b3b7
          Boot ID: a1424a0995da4e84b1e55b7f79df957e
 Operating System: Arch Linux
           Kernel: Linux 5.0.0-arch1-1-ARCH
     Architecture: x86-64

當我打開 WiFi 時,networkmanager 連接到 WiFi 網路,然後主機名發生變化。例如:

# hostnamectl 
  Static hostname: localhost
Transient hostname: localhost.localdomain
        Icon name: computer-laptop
          Chassis: laptop
       Machine ID: 7e0a101cd2f0406497a6e4354fc9b3b7
          Boot ID: a1424a0995da4e84b1e55b7f79df957e
 Operating System: Arch Linux
           Kernel: Linux 5.0.0-arch1-1-ARCH
     Architecture: x86-64

shell 命令hostname現在輸出localhost.localdomain而不是localhost.

結果,無法解鎖 KDE 鎖屏,我無法從 KDE 終端(或任何其他桌面)啟動任何 X 應用程序。一個典型的錯誤資訊是這樣的:

$ gvim
Invalid MIT-MAGIC-COOKIE-1 keyE233: cannot open display

當我hostnamectl set-hostname localhost以 root 身份發佈時,行為恢復正常。

在其他一些 WiFi 中,連接後的主機名不是localhost.localdomain,而是更隨機的東西(它似乎是由 WiFi 提供商確定的主機名,主要是在大型企業網路中)。為什麼 WiFi 提供商有權設置我的主機名?這可以以某種方式改變嗎?

Ivanivan 的回答(調整dhcpcd.con)雖然看似合理,但在我的情況下不起作用。所以我懷疑這與 DHCP 無關。我偶然發現了這篇文章,它告訴我問題不在於 DHCP,而在於 NetworkManager。添加以下內容/etc/NetworkManager/NetworkManager.conf為我解決了這個問題:

[main]
plugins=keyfile 
hostname-mode=none 

有關man 5 NetworkManager.confhostname-mode選項的詳細資訊,請參閱。將其設置為none防止 NetworkManager 設置臨時主機名,這就是我的情況。

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