CentOS7:网络管理器使用错误的搜索域

CentOS7:网络管理器使用错误的搜索域

在 Red Hat 7 中的网络管理器中,我发现更改主机名后使用旧的/错误的搜索域的问题。在 /etc/resolv.conf 中,我看到:

# Generated by NetworkManager
search **ec2.internal** d.sample.com
nameserver 172.31.0.2

当我输入 时hostname,我看到了我想要的输出:

[root@testing01 ~]# hostname
testing01.d.sample.com

但不是替换搜索域,它是追加将新域名添加到搜索域中。我想完全摆脱 ec2.internal 并彻底砍掉这个域名。直接编辑/etc/resolv.conf文件会被网络管理器破坏。我不想禁用网络管理器,也不想禁用 NM 的管理,/etc/resolv.conf除非绝对必要。

那么,1) 为什么 NM 不断恢复我的搜索域,2) 如何仅使用 nmcli 或命令行工具解决此问题?

答案1

经过几个小时的摸索,我终于解决了这个问题。事实证明,这是通过 DHCP 设置的:

nmcli -f ip4 device show eth0
IP4.ADDRESS[1]:                         172.31.53.162/20
IP4.GATEWAY:                            172.31.48.1
IP4.DNS[1]:                             172.31.0.2
IP4.DOMAIN[1]:                          ec2.internal

我能够通过覆盖网络接口的 ipv4.dns-search 值来覆盖 IP4.DOMAIN[1]:

nmcli connection modify uuid \`nmcli connection show --active | grep 802-3-ethernet | awk '{print $(NF-2)}' | tail -n 1` ipv4.dns-search d.sample.com

或者更简单地说,

nmcli connection modify System\ eth0 ipv4.dns-search "d.sample.com"

然后你必须重新启动NetworkManager

systemctl restart NetworkManager.service

我还发现,因为我正在使用亚马逊实例,我需要更新我的 cloud.cfg 文件。

答案2

当网络发生更改或更新时,/etc/resolv.conf 文件将始终被覆盖。您可以通过编辑文件夹中的文件来控制写入的内容/etc/resolvconf/resolv.conf.d/...即head文件。

将其放入/etc/resolvconf/resolv.conf.d/head文件中:

nameserver 172.31.0.2
search testing01.d.sample.com

/etc/resolv.conf现在这将是每次更新时的标题。

更新

对于基于 Redhat 的系统,请使用以下步骤:

编辑位于以下位置的网络脚本:/etc/sysconfig/network-scripts。您将看到检测到的网络设备的条目(即 ifcfg-eth0 表示网络适配器eth0)。

编辑此文件 ( /etc/sysconfig/network-scripts/ifcfg-eth0):

追加这一行:

DOMAIN=sample.com

还运行此命令:

$ sudo hostnamectl set-hostname --static "testing01.d.sample.com"

您很可能必须重新启动系统才能使更改生效。

答案3

如果“nmcli 连接修改...”更改了您的连接文件,但没有更改您的活动连接:

nmcli c 加载 /etc/NetworkManager/system-connections/the-connection-name[-possible-uuid-too]

man nmcli: 连接--加载文件名... 从磁盘加载/重新加载一个或多个连接文件。手动编辑连接文件后使用此命令可确保 NetworkManager 了解其最新状态。

答案4

我想补充一点:您的第一个误解是主机名是什么。当您在命令行中键入时,hostname它应该只输出服务器(主机)的名称。 FQDN 是主机名和域的串联。

如果命令hostname输出host.domain.com,则表明您的主机命名不正确。这是错误的原因是因为您将搜索顺序附加到主机名。任何需要在同一域中进行的解决方案最终都会得到以下结果hostname.doimain.com.domain.com

  • /etc/hosts文件的格式应如下所示:IP、主机名、主机名+主机所属的域
    xx.xx.xx.xx host host.domain.com
    
  • /etc/resolve.conf文件应包含:
    search domain.com
    
  • /etc/hostname文件应包含
    host
    

文件中的条目/etc/hosts将允许主机名和 FQDN 解析 IP。 DNS 解析将解析主机,然后附加搜索顺序以查看其是否在该域中。

相关内容