DNSとresolv.confファイルの設定方法

DNSとresolv.confファイルの設定方法

Ubuntu Server 18.04 を数週間稼働させています。しばらくの間、ネットワーク インターフェイスが接続されませんでした。最終的に、適切な netplan YAML ファイルの設定ができました。これで、ネットワーク上の別のコンピューターから、ホスト名ではなくサーバーの IP に ping でき、ドメイン名ではなく外部の IP にも ping できます。前述のように、ドメイン名は使用できません。そのため、 や などの操作ping google.comsudo apt update失敗します。DNS の問題だと思いますが、100% 確信はありません。

の結果ping google.com

ping: google.com: Temporary failure in name resolution

の結果sudo apt update

 Err3: http://archive.ubuntu.com/ubuntu bionic InRelease
     Temporary failure in resolving 'archive.ubuntu.com'

更新時にさらにいくつかのエラーが発生しますが、それらはすべて 'archive.ubuntu.com' を解決できません。

私のネットプランファイルは次のとおりです/etc/netplan/01-netcfg.yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s25:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.40/22]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.4.4, 8.8.8.8, 1.1.0.0, 1.1.1.1]

について話している投稿や記事をたくさん見てきました/etc/resolv.confが、私のものは常に存在しませんでした。catコンテンツを表示しようとすると、エラーが発生しますno such file or directory。これが私の問題だと思いますが、何が間違っているのか理解するには Linux ネットワークについて十分に理解していません。

へのシンボリック リンクを作成または修正することでこの問題を解決できた人もいます/etc/resolv.conf。ただし、彼らはrun/systemd/resolve/resolv.conf、、、/run/resolvconf/resolv.confおよびその他のファイルを使用しています。これらのファイル/サービスは私のマシンには存在しません。 に/runあるネットワーク関連のファイルは 1 つだけです/run/systemd/network/10-netplan-enp0s25.network。その内容は次のとおりです。

[Match]
Name=enp0s25

[Network]
LinkLocalAddressing=ipv6
Address=192.198.1.40/22
Gateway=192.168.1.1
DNS=8.8.4.4
DNS=8.8.8.8
DNS=1.1.0.0
DNS=1.1.1.1

/etc/resolv.confからへのシンボリック リンクを作成しました/run/systemd/network/10-netplan-enp0s25.network。 の内容はresolv.confとまったく同じです10-netplan-enp0s25.network

マシンを構成するために他に何をする必要があるのか​​わかりません。これまでに見つけたものはすべて矛盾しており、役に立ちませんでした。


答え1

Ubuntu 18.04 システムでは、パッケージがインストールされていない限り(新しいシステムでは推奨されません)、 は/etc/resolv.conf常に へのシンボリックリンクになります。パッケージがインストールされている場合は、 へのシンボリックリンクになります。が存在しない場合は、サービスが実行中であることを確認します ( )。アクティブでない場合は、サービスを有効にして起動します ( )。これで問題が解決するはずです。/run/systemd/resolve/stub-resolv.confresolvconf/run/resolvconf/resolv.conf/run/systemd/resolve/stub-resolv.confsystemd-resolvedsystemctl status systemd-resolvedsudo systemctl enable systemd-resolved && sudo systemctl start systemd-resolved

関連情報