升级到22.04后无法解析主机名

Tho*_*mas 13 upgrade networking internet dns 22.04

将 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
Run Code Online (Sandbox Code Playgroud)

我还尝试在网络管理器中手动添加8.8.8.8DNS 服务器(WiFi 设置 -> IPv4 -> DNS)。然后,两台服务器都显示在 DNS 配置中,但问题仍然存在。

知道原因可能是什么,我可以做什么来缩小问题范围或如何解决它?

Tho*_*mas 10

正如此答案此答案中所指出的,解决方案(至少在我的情况下)是一个/etc/resolv.conf仅包含注释行“由 NetworkManager 生成”的问题。用符号链接替换该文件来/run/resolvconf/resolv.conf解决我的问题:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)


C0r*_*n3j 8

这似乎是由 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
Run Code Online (Sandbox Code Playgroud)

具有硬编码 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]
Run Code Online (Sandbox Code Playgroud)

债券设置示例
/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]
Run Code Online (Sandbox Code Playgroud)

之后运行netplan apply以确保您仍然具有连接性(在没有其他访问权限的服务器上运行此程序时要小心!)或重新启动。


小智 6

对我来说,问题在于它/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 Code Online (Sandbox Code Playgroud)

第一行包括一个守卫,因此如果您由于某种原因没有守卫,整个操作将会失败/run/systemd/resolve/resolv.conf。希望这可以帮助!

  • 奇迹般有效... (2认同)