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

在 ubuntu 伺服器 18-04 中,安裝了 xorg lightdm lightdm-gtk-greeter 和 xfce4 GUI,啟動進入系統時,我發現讓有線網路運作的唯一方法是:

    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

dir 位置 /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
      

      eth0ofenp0s3是另一個常見值,您可以透過以下方式找到它:

      ip link show
      

      完整的 Debiandebootstrap設定位於https://unix.stackexchange.com/questions/275429/creating-bootable-debian-image-with-debootstrap/473256#473256

答案4

這背後可能有多種原因,但最常見的原因是您的 DNS 伺服器無法尋找與您輸入的網域名稱相對應的 IP 位址。

  1. 您可以做的是檢查位於此處的設定檔:

    須藤奈米 /etc/resolv.conf

如果那裡指定了名稱伺服器,那麼就沒有問題。但如果沒有,您可以手動向其中新增一個名稱伺服器。谷歌擁有的一些常見名稱伺服器是:

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允許43/tcp sudo ufw允許53/tcp如果防火牆未啟用:

    sudo ufw enable

那麼您應該重新加載以便可以應用更改。

sudo ufw reload

相關內容