Ubuntu Server 18.04 名称解析暂时失败

Ubuntu Server 18.04 名称解析暂时失败

我刚刚安装了 Ubuntu Server 18.04 并设置了 SSH,以便我可以继续通过我的桌面进行配置,但我遇到了一些似乎无法解决的问题。

我试图逃跑

sudo apt-get update

但不断出现错误:

暂时无法解析 archive.ubuntu.com

获取失败http://archive.ubuntu........

我通过运行检查了我的互联网连接是否正常

ping 8.8.8.8

我收到了回复,一切正常。

我怀疑我的 DNS 设置不正确,所以我尝试

ping www.google.com

并收到错误:

名称解析暂时失败

好的,所以我确定这实际上是某种 DNS 问题,但我尝试过的所有“答案”对我来说都不起作用。

我尝试编辑/etc/resolv.conf但没有成功,因为它似乎是一个符号链接。

我在这里找到了一个答案,它只有从 root 运行时才有效,即:

sudo bash

但它指示随后通过以下方式撤销更改:

rm /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

但如果我这样做,我就会再次失去连接。

  • 我是不是应该保持原样,还是做点别的?
  • 这能是一个永久的解决方案吗?
  • 而问题的根源是否就是/run/resolvconf/resolv.conf实际上并不存在的事实?

答案1

在安装了 xorg lightdm lightdm-gtk-greeter 和 xfce4 GUI 的 ubuntu 服务器 18-04 中,启动系统时,我发现让有线网络运行的唯一方法是这样的:

    sudo dhclient -v -4

效果很好,但是每次启动后以及每次网络断开/重新连接后都必须手动完成此操作,因此它可以有效,但它是一个手动解决方案,而不是永久解决方案;

要使无线网络自动运行,只需:

    sudo apt-get install nm-tray network-manager

您可能需要重新启动;然后您将能够使用控制面板通知区域中出现的无线网络图标(确保通知区域已添加到面板)来选择无线网络;之后,它将自动重新连接;

但是,为了让有线网络自动重新连接,我尝试安装 avahi-daemon 和 avahi-autoipd,但显然没有帮助;甚至尝试:

    sudo systemctl start NetworkManager
    sudo systemctl enable NetworkManager

基本上,如果您安装了诸如 Xubuntu 桌面之类的发行版,则会安装适当的工具/守护进程/配置,并且在插入网络时会自动检测网络,而无需任何用户配置;知道哪个工具/守护进程/配置/设置可以做到这一点会很好。

答案2

18.04 版本将 resolv.conf 更改为 netplan

man netplan

目录位置 /etc/netplan 里面你会找到文件,例如:50-cloud-init.yaml

像这样编辑它:

network:
    ethernets:
        ens160:
            addresses:
            - 10.10.10.100/24
            dhcp4: false
            gateway4: 10.10.10.1
            nameservers:
                addresses:
                - 8.8.4.4
                - 8.8.8.8
                search:
                - domain.local
    version: 2

当你保存文件时

sudo netplan apply

并检查是否可以 ping google.com。

答案3

当我使用 QEMU 映像时出现此错误debootstrap

该决议要求如下:

  1. 制作根文件系统rw,否则dhclient会失败。更好的方法是将 添加到您的 中/etc/fstab,即只是一个假人 debootstrap

    /dev/sda / ext4 errors=remount-ro,acl 0 1
    
    • 在 Ubuntu 18.04 上,您可以执行以下操作之一:

      1. 创建一个在适当时间初始化网络的 systemd 单元:

        cat << EOF | sudo tee "/etc/systemd/system/dhclient.service"
        [Unit]
        Description=DHCP Client
        Documentation=man:dhclient(8)
        Wants=network.target
        Before=network.target
        
        [Service]
        Type=forking
        PIDFile=/var/run/dhclient.pid
        ExecStart=/sbin/dhclient -4 -q
        
        [Install]
        WantedBy=multi-user.target
        EOF
        
        sudo ln -sf "/etc/systemd/system/dhclient.service" \
            "/etc/systemd/system/multi-user.target.wants/dhclient.service"
        

      基于:https://gist.github.com/corvax19/6230283#gistcomment-1940694

      1. 使用network-manager。会下载很多图形库,但感觉不那么黑客:

        sudo apt-get install network-manager
        cat << EOF | sudo tee "/etc/netplan/01-network-manager-all.yaml"
        # Let NetworkManager manage all devices on this system
        network:
          version: 2
          renderer: NetworkManager
        EOF
        

        我首先通过查看主机上 Debian 中我所知道的第一个网络配置文件发现了这一点:

        cat /etc/network/interfaces
        

        但出色的 Ubuntu 开发人员在那里留言:

         # ifupdown has been replaced by netplan(5) on this system.  See
         # /etc/netplan for current configuration.
         # To re-enable ifupdown on this system, you can run:
         #    sudo apt install ifupdown
        

        所以我做了一个:

        cat /etc/network/interfaces
        

        在我的 Ubuntu 主机上发现了丢失的配置。

      完整的 Ubuntudebootstrap安装程序位于:网上有没有预建的 QEMU Ubuntu 映像(32 位)?

    • 在 Debian 9 上,将正确的条目添加到您的/etc/network/interfaces配置文件中。我的是:

      auto enp0s3
      iface enp0s3 inet dhcp
      

      eth0不是 是enp0s3另一个常见值,您可以使用以下方法找到它:

      ip link show
      

      完整的 Debiandebootstrap安装程序https://unix.stackexchange.com/questions/275429/creating-bootable-debian-image-with-debootstrap/473256#473256

答案4

这背后可能有多种原因,但最常见的原因是您的 DNS 服务器无法查找与您输入的域名相对应的 IP 地址。

  1. 您可以做的是检查位于此处的配置文件:

    sudo nano /etc/resolv.conf

如果那里指定了名称服务器,那么就没有问题。但如果没有,您可以手动向其中添加一个名称服务器。Google 拥有的一些常见名称服务器包括:

8.8.8.8
4.4.4.4

所以您需要做的就是像这样将它们添加到您的配置文件中:

nameserver 8.8.8.8

或者

nameserver 8.8.4.4

或者

nameserver <IP_Address_for_DNS_Server>

然后重新启动网络设置并尝试 ping 某个网站:

sudo systemctl restart systemd-resolved.service
ping google.com
  1. 如果问题仍然存在,则可能是该文件存在权限错误。您可以执行以下操作:使用以下命令更改文件的所有权:

    sudo chown root:root /etc/resolv.conf

现在更改文件权限:

sudo chmod 644 /etc/resolv.conf

现在你可以使用以下方法再次检查:

ping google.com
  1. 另一种可能性是您的防火墙阻止您从某些端口进行访问。我建议您这样做:

    sudo ufw allow 43/tcp sudo ufw allow 53/tcp 如果防火墙未启用:

    sudo ufw enable

然后您应该重新加载以便可以应用更改。

sudo ufw reload

相关内容