web-dev-qa-db-ja.com

Systemd-networkd:DHCPで検出されたネームサーバーの前に静的ネームサーバーエントリを追加するにはどうすればよいですか?

ArchLinuxでsystemd213を使用しており、インターネットに接続するためにDHCPを使用してsystemd-networkd/resolvedを使用しています。また、127.0.0.1でキャッシングDNSサーバーを実行しています。このサーバーをリストの最初のDNSサーバーにしたいのですが、systemd-resolvedによって検出されたネームサーバーも使用したいと思います。 DNS設定が異なるネットワークに接続しているため、静的なresolv.confを使用することは実際には不可能です。

フォールバックDNSサーバーを_/etc/systemd/resolved.conf_に設定できることは知っていますが、systemd-networkdを使用してprependローカルDNSサーバーをDHCPによって検出されたサーバーに設定する方法はありますか?


編集:私がこれまでに試したこと

  • _.network_ファイルに手動のDNSエントリを追加すると、そのエントリが先頭に追加されるのではなく追加されます。

    _# This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 141.48.3.51
    nameserver 141.48.3.17
    nameserver 141.48.3.3
    # Too many DNS servers configured, the following entries may be ignored
    nameserver 127.0.0.1
    _
  • systemd.network(5)のマンページで説明されているように、_UseDNS=true_セクションにも_[DHCPv4]_を追加すると、DHCPによって検出されたネームサーバーは無視されますのみ静的DNSエントリが使用されますが、これも私が望むものではありません。

    _# This file is managed by systemd-resolved(8). Do not edit.
    #
    # Third party programs must not access this file directly, but
    # only through the symlink at /etc/resolv.conf. To manage
    # resolv.conf(5) in a different way, replace the symlink by a
    # static file or a different symlink.
    
    nameserver 127.0.0.1
    _
  • DNSアドレスにin_addr表現を使用すると、通常の表現を使用するのと同じように、ネームサーバーが追加されます。

7
runiq

次の2行を追加してみましたか。

  [Network]
  DNS=127.0.0.1

ファイルの1つに/etc/systemd/network/*.network?たとえば、dhcpクライアントの場合、次の行を含むように/etc/systemd/network/80-dhcp.networkを変更します。

  [Match]
  Name=en*

  [Network]
  DHCP=yes
  DNS=127.0.0.1

編集:

In_addr表現を試しましたか? 127.0.0.1を16777343に置き換えてみてください。

3
MariusMatutiae

トリックは、/etc/systemd/networkの構成ファイルが/run/systemd/networkの接頭辞が10-であるデフォルトの構成よりも早く字句的にソートする必要があることのようです。デフォルト設定を上書きする場合は、インターフェースでDHCPも有効にする必要があることに注意してください。そうしないと、DHCPが設定されていない状態でインターフェースが起動します。

これが私が/etc/system/network/1-test.networkに置いた設定ファイルの例です:

[Match]
Name=ens5

[Network]
DHCP=ipv4
DNS=8.8.8.8

[DHCP]
UseDNS=false

これらの設定を適用するには、systemctl restart systemd-networkdを実行します。これはインターフェースをダウンさせるようには見えません、ただそれを再構成してください。次に、networkctl status ens5を使用して、設定が適用されたことを検証できます。

私はこれが少なくともUbuntu18.04(bionic)で動作することを検証しました。

0
MIke Crute