systemd-resolvedを使用したUbuntu 20.04 DNSのオーバーライド

systemd-resolvedを使用したUbuntu 20.04 DNSのオーバーライド

デフォルトのDNSをオーバーライドするようにUbuntu 20.04システムを構成する方法は?

デフォルトでは、グローバルおよびリンクごとのDNS設定があるようです。

私はうまくいかないいくつかのことを試しました:

  • /etc/systemd/resolved.confDNSサーバーを使用した編集
  • /etc/systemd/network/enp0s3.conf設定されたDNSサーバーを使用して作成された
  • 編集により、DHCP要求からすべてのDNS関連パラメータを削除します。 /etc/dhcp/dhclient.conf

これらすべての変更(およびその組み合わせ)により、DNSサーバーがグローバルDNSサーバーのリストに追加されます。

ほとんどの「解決策」は、シンボリックリンクをファイルとしてインストールまたはresolvconf交換し、そこにDNSサーバーを設定することです。/etc/resolv.confどちらも解決策のようです。

systemd-resolved既存のツール()を使用してDNSサーバーをオーバーライドしたいと思います。

コメントで@xenoidが提案したように、GUIを介してインターフェイスのDNSを設定すると、/etc/NetworkManager/system-connections/enp0s3.nmconnection出力にresolvectl status正しいDNSサーバーを含むファイルが生成されますが、これは私が望むものではありません。 configを使用して解決策を探していますが、systemd-resolved可能なようですが、どのように実行するかはわかりません。 GUIのインストールが必要だからです。

答え1

  1. 修正する/etc/systemd/resolved.conf

    [Resolve]
    DNS=1.1.1.1 8.8.8.8
    FallbackDNS=8.8.4.4
    
    
  2. 問題を解決するには、システムを再起動してください。service systemd-resolved restart

  3. systemd-resolve --status(またはresolvectl status最新バージョンのsystemdで)実行します。出力は次のようになります。

    Global
             DNS Servers: 1.1.1.1
                          8.8.8.8
    ...
    

答え2

これコメント@David Rがとても役に立ちました。

rm -f /etc/resolv.conf
ln -sv /run/systemd/resolve/resolv.conf /etc/resolv.conf

答え3

iface変数にホーム画面の名前を含めると、次のようにDNSアドレスを設定できます。

$ sudo resolvectl dns $iface x.y.z.t1 x.y.z.t2
$ sudo resolvectl domain $iface "myDomain.lan"
$ resolvectl dns $iface
Link 2 (ensX): x.y.z.t1 x.y.z.t2
$ resolvectl status $iface
Link 2 (ensX)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: x.y.z.t1
         DNS Servers: x.y.z.t1
                      x.y.z.t2
          DNS Domain: myDomain.lan

答え4

/etc/systemd/network/enp0s3.confDHCPでDNSを無視するには、このファイルに明示的に指定する必要があります。ほとんどの場合、構成管理ツールを介してdhcpを制御することを好むため、dhcpに関するすべてを無視する傾向があります。たとえば、上記のファイルのDHCPv4セクションは次のようになります。

[DHCPv4]
UseHostname=no
UseDNS=no
UseNTP=no
UseDomains=no

.networkまた、ファイル拡張子を使用する必要があります。この[Match]セクションでは、デバイス名が実際に何を意味するのか心配する必要がないようにも役立ちます。私の場合、別のデバイスファイルはありませんが、awsで上書きしました。

section of /etc/systemd/network/01-ec2-overrides.network

[Match]
Driver=ena ixgbevf vif

[DHCPv4]
UseHostname=no
UseDNS=no
UseNTP=no
UseDomains=no

[DHCPv6]
UseHostname=no
UseDNS=no
UseNTP=no

関連情報