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表現を使用すると、通常の表現を使用するのと同じように、ネームサーバーが追加されます。
次の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に置き換えてみてください。
トリックは、/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)で動作することを検証しました。