web-dev-qa-db-ja.com

ローカルドメインの解決にローカルDNSサーバーを使用し、リモートドメインのリモートDNSサーバーを使用するようにsystemd-resolvedおよびsystemd-networkdを構成するにはどうすればよいですか?

ゲートウェイ経由でインターネットにアクセスできるローカルエリアネットワークに接続しています。ローカルネットワークには、ローカルネットワークからコンピュータのホスト名を解決できるDNSサーバーがあります。

systemd-resolvedsystemd-networkdを構成して、ローカルホスト名のルックアップ要求がローカルDNSサーバーにのみ転送(ルーティング)され、他のすべてのルックアップ要求がルーティングされるようにしますホスト名は、別のリモートDNSサーバーのみに送信されます。

構成ファイルの場所がわからない、またはファイルを追加する必要があるかどうか、および回答でそれらのパスを指定する必要があるかどうかを想定します。

34
Piotr Dobrogost

ローカルネットワークインターフェイスの構成ファイル(名前パターン/etc/systemd/network/*.networkに一致するファイル)で、DHCPサーバーから DHCP=オプション を使用してローカルDNSサーバーアドレスを取得することを指定する必要があります。 =:

[Network]
DHCP=yes

または DNS= option を使用してアドレスを明示的に指定します:

[Network]
DNS=10.0.0.1

さらに Domains= option を使用して(同じセクションで)ローカルドメインを指定する必要があります

Domains=domainA.example domainB.example ~example

ローカルドメインdomainA.example domainB.exampleを指定して、次の動作を取得します(systemd-resolved.service、systemd-resolvedのマニュアルページから):

インターフェイスごとのドメインの1つで終わるホスト名の検索は、一致するインターフェイスに排他的にルーティングされます。

このようにして、hostX.domainA.exampleはローカルのDNSサーバーによって排他的に解決されます

~exampleを使用して、exampleで終わるすべてのドメインをルートのみのドメインとして扱い、次の動作を実現することを指定しています( this commitの説明から):

ルートのみのドメインを持つDNSサーバーは、指定されたドメインにのみ使用する必要があります。

このようにして、hostY.on.the.internetは、グローバルなリモートDNSサーバーによって排他的に解決されます

理想的には、DHCPプロトコルを使用する場合、ローカルドメイン名は、上記のネットワークインターフェイスの構成ファイルで明示的に指定するのではなく、DHCPサーバーから取得する必要があります。 UseDomains=オプション を参照してください。ただし、この機能には未解決の問題があります。 -systemd-networkd DHCP検索ドメインオプション の問題を参照してください。

システム全体のグローバルDNSサーバーとしてリモートDNSサーバーを指定する必要があります。これは/etc/systemd/resolved.confファイルで行うことができます。

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

設定をリロードしてサービスを再起動することを忘れないでください:

$ Sudo systemctl daemon-reload
$ Sudo systemctl restart systemd-networkd
$ Sudo systemctl restart systemd-resolved

注意!

上記の保証は、名前がsystemd-resolvedによって解決されている場合にのみ適用されます。 nss-resolve、libnss_resolve.so.2のマニュアルページを参照してください。 および systemd-resolved.service、systemd-resolvedのマニュアルページ

以下も参照してください。

参照:

36
Piotr Dobrogost