NetworkManager 干扰主机名配置

NetworkManager 干扰主机名配置

我正在使用 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 时,网络管理器连接到 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 提供商有权设置我的主机名?这可以以某种方式改变吗?

答案1

伊万尼万的回答(调整dhcpcd.con)虽然看似合理,但在我的情况下不起作用。所以我怀疑这与 DHCP 无关。我偶然发现这个帖子这告诉我问题不在于 DHCP,而在于 NetworkManager。添加以下内容来/etc/NetworkManager/NetworkManager.conf解决我的问题:

[main]
plugins=keyfile 
hostname-mode=none 

man 5 NetworkManager.conf有关该选项的详细信息,请参阅hostname-mode。将其设置为none防止 NetworkManager 设置临时主机名,这就是我的情况。

答案2

几种可能的修复方法。可能您有一个localhost条目/etc/hosts(就像地球上的其他一切一样),但您没有条目localhost.localdomain。添加一个(也指向 127.0.0.1)可能可以解决您的“在家”问题 - 但不适用于您在“大型企业”网络上遇到的“随机”问题。

不过,“更好”的选择是检查您的 dhcp 客户端配置。在/etc/dhcp/dhclient.conf(或者可能dhcpcd.conf取决于发行版)中查找request行 -

request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers;

只需删除该host-name选项即可。

相关内容