![升级到 22.04 后无法解析主机名](https://linux22.com/image/946409/%E5%8D%87%E7%BA%A7%E5%88%B0%2022.04%20%E5%90%8E%E6%97%A0%E6%B3%95%E8%A7%A3%E6%9E%90%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
将 ubuntu 从 21.10 升级到 22.04 后,我的互联网连接不再起作用。我已连接到 WLAN,并且可以 ping IP 地址(从本地网络以及互联网)- 但是,解析名称不再起作用。因此,ping 151.101.65.69
在 0% 数据包丢失的情况下可以正常工作,但ping askubuntu.com
会出现错误Name or service not known
(它可以从连接到同一路由器的另一台机器上运行)。
运行 nmcli 时,它会显示以下 DNS 配置:
DNS configuration:
servers: 192.168.17.1
domains: fritz.box
interface: wlp64s0
我还尝试8.8.8.8
在网络管理器中手动添加 DNS 服务器(WiFi 设置 -> IPv4 -> DNS)。然后,两个服务器都显示在 DNS 配置中,但问题仍然存在。
知道可能是什么原因吗,我可以做些什么来缩小问题范围或如何解决它?
答案1
答案2
这似乎是由于 Ubuntu 22.04 需要通过 netplan 进行配置而导致的。Netplan 配置是在全新安装时创建的,但如果您升级了系统,则不存在必要的配置。
如果您的系统上没有配置文件(检查ls /etc/netplan/*.yaml
),您将不会获得默认配置的 DNS 解析器。
所有覆盖systemd-resolved
服务单元或/etc/resolv.conf
直接覆盖的黑客建议都只是掩盖症状。
您的系统上可能(应该)存在的文件 - 运行ip a
并ip r
根据需要替换值和设备名称:
由 subiquity 创建的默认通用配置可能就足够了,除非你有特殊需求
/etc/netplan/00-installer-config.yaml
network:
ethernets:
eno1:
dhcp4: true
version: 2
带有硬编码 IPv4、网关和 DNS 解析器的 LXD 容器配置
/etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
addresses: [10.0.0.50/16]
routes:
- to: default
via: 10.0.0.1
nameservers:
addresses: [10.0.0.11,10.0.0.12]
债券设置示例
/etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: no
dhcp6: no
eno2:
dhcp4: no
dhcp6: no
bonds:
bond0:
interfaces: [eno1,eno2]
dhcp4: no
dhcp6: no
parameters:
mode: 802.3ad
mii-monitor-interval: 100
bridges:
br0:
interfaces: [bond0]
addresses: [10.0.0.100/16]
routes:
- to: default
via: 10.0.0.1
nameservers:
addresses: [10.0.0.11,10.0.0.12]
之后运行netplan apply
以确保您仍然具有连接(在您无权访问的服务器上运行此操作时请小心!)或重新启动。
答案3
对我来说,问题在于它/etc/resolv.conf
链接到一个存根解析器(/run/systemd/resolve/stub-resolv.conf
),而不是通常的解析器(/run/systemd/resolve/resolv.conf
)。
检查符号链接的目标/etc/resolv.conf
,看看你的目标是否相同。
我这样修复了这个问题:
ls /run/systemd/resolve/resolv.conf && sudo mv /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
第一行包含一个保护,因此如果出于某种原因您没有保护,整个操作将失败/run/systemd/resolve/resolv.conf
。希望这能有所帮助!
答案4
我遇到了同样的问题。我将其追溯到 ifupdown/managed=false
/etc/NetworkManager/NetworkManager.conf
[ifupdown]
managed=false
将其更改为 true 即可解决问题。