在 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 解析将解析主机,然后附加搜索顺序以查看其是否在该域中。