我一直遇到 Ubuntu 22.04 无法从 DNS 服务器检测主机名的问题。
我尝试使用 networkd 和 NetworkManager 后端,但服务器的主机名仍然显示为“localhost”。
我的 netplan 文件与我们的 20.04 版本相同,主机名检测没有任何问题。我尝试将以下几行添加到我的 netplan 配置文件中,然后运行 netplan apply。
dhcp4-overrides:
use-hostname: true
有其他人遇到过这个问题并成功解决了吗?任何建议都将不胜感激。
答案1
由于我从未见过关于这方面的准确描述,所以这是在 Ubuntu Server 22.04 中设置主机名和 FQDN 的正确方法。
这也是所有本机守护进程检测正确主机名和 FQDN 的有效方法(例如 Apache、nginx 和大多数其他正确实现的服务)。
程序
这将为您更新 /etc/hostname。
sudo hostnamectl hostname [hostname]
编辑 /etc/hosts
sudo vi /etc/hosts
在 /etc/hosts 中:
127.0.0.1 localhost
127.0.1.1 [fqdn] [hostname]
[INTERFACE IP] [fqdn] [hostname] [additional cname fqdn] [additional cname hostname]
/etc/hosts 示例:
127.0.0.1 localhost
127.0.1.1 myhost.example.com myhost
192.168.0.100 myhost.example.com myhost myalias.test.com myalias
这部分是很好的练习,但如果你是不是使用静态 IP 并正确配置 DHCP。
/etc/netplan/[你的接口 netplan 文件,例如 00-installer-config.yaml]:
network:
...
nameservers:
...
search:
- [yourdomain E.g. example.com]
如果您不知道自己在做什么,并且除了 SSH 之外没有其他方法进入系统,请小心编辑 netplan。
证实
hostname
输出:myhost
hostname -f
输出:myhost.example.com
检查是否可以仅使用主机名(而非 FQDN)来 ping 域中的另一个系统:
ping otherhost
如果 hostname 和 hostname -f 输出不正确,则表明存在问题。所有 Linux 主机都是如此。
重新启动以确保安全,以便所有服务都能使用正确的信息启动并重新启动:
sudo reboot
再次验证以确保重启后所有内容均保留。