LANに接続され、ゲートウェイを介してインターネットに接続します。ローカルネットワークには、ローカルネットワーク上のコンピュータのホスト名を解決できるDNSサーバーがあります。
整理したい体系的分析そしてシステムネットワークこのように、ローカルホスト名の検索要求はローカルDNSサーバーにのみ転送(ルーティング)され、他のすべてのホスト名の検索要求は他のリモートDNSサーバーにのみ転送されます。
構成ファイルがどこにあるのかわからず、さらに多くのファイルを追加する必要があるか、答えにそのパスを指定するように要求する必要があるとします。
答え1
ローカルネットワークインターフェイスの設定ファイル(名前パターンと一致するファイル/etc/systemd/network/*.network
)で、DHCPサーバーを使用してローカルDNSサーバーアドレスを取得するように指定する必要があります。DHCP=
オプション:
[Network]
DHCP=yes
または、次のようにアドレスを明示的に指定します。DNS=
オプション:
[Network]
DNS=10.0.0.1
また、(同じセクションで)以下を使用してローカルドメインを指定する必要があります。Domains=
オプション
Domains=domainA.example domainB.example ~example
domainA.example domainB.example
次の動作を得るためにローカルドメインを指定します。systemd-resolved.service, systemd-resolvedマニュアルページ):
各インターフェイス ドメインの 1 つで終わるホスト名の検索は、一致するインターフェイスにのみルーティングされます。
この問題はhostX.domainA.example
解決することができます。ただローカルDNSサーバーを介して。
~example
次の動作を得るために、次に終わるすべてのドメインがルーティング専用ドメインとして処理されることを指定しますexample
(説明では)。これ犯罪):
ルート専用ドメインを持つ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
警告する!
上記の保証は、名前解決中にのみ適用されます。体系的分析- バラよりマニュアルページnss-resolve,libnss_resolve.so.2そしてsystemd-resolved.service, systemd-resolved のマニュアルページ。
また見なさい:
引用:
答え2
@piotrDobrogostの優れた回答を拡張するには、DNS検証ソース/etc/nsswitch.conf
として使用するように設定することを忘れないでください。systemd-resolved
特定のユースケースでは、ディレクティブはhosts
次のようになります。
/etc/nsswitch.conf
hosts: files resolve dns
したがって、上記のPiotrDomains
の詳細のディレクティブで指定されたドメインにのみ解決を制限する場合は、ドメインが解決されたときに指定された名前解決/etc/systemd/resolved.conf
ソースの順序で次にDNSを照会する必要があります。/etc/nsswitch.conf
いいえディレクティブで見つけることができますDomains
。
次のリンクは、指定された要件を参照します。解決する名前解決中も参照されます/etc/nsswitch.conf
。systemd-resolved
https://github.com/systemd/systemd/issues/940
SystemD文書がひどいことがわかりました。上記のPiotrの答えを含むいくつかのリンクから理解を集める必要がありました;-)
答え3
OpenVPN 接続を構成したため、これを行う場合は、以下を使用する必要があります。https://github.com/jonathanio/update-systemd-resolved~によるとhttps://wiki.archlinux.org/index.php/OpenVPN#The_update-systemd-resolved_custom_script
特にOpenVPNクライアント設定でスクリプトをインストールして有効にすると、同じクライアント設定にもupdate-systemd-resolved
追加されます。dhcp-option DOMAIN-ROUTE yourdomain.com
OpenVPN では、次の出力が表示されます。
<14>Apr 22 16:10:31 update-systemd-resolved: Link 'tun0' coming up
<14>Apr 22 16:10:31 update-systemd-resolved: Adding DNS Routed Domain yourdomain.com
<14>Apr 22 16:10:31 update-systemd-resolved: Adding DNS Domain yourdomain.com
<14>Apr 22 16:10:31 update-systemd-resolved: Adding IPv4 DNS Server 192.168.XYZ.XYZ
<14>Apr 22 16:10:31 update-systemd-resolved: SetLinkDNS(640 1 2 4 192 168 XYZ XYZ)
<14>Apr 22 16:10:31 update-systemd-resolved: SetLinkDomains(640 2 yourdomain.com false yourdomain.com true)
次のコマンドを使用してDNS設定を確認できますresolvectl status
。
Link 3 (wlp0s....)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 192.168.XYZ.XYZ
DNS Servers: 192.168.XYZ.XYZ
DNS Domain: ~.
lan
Link 640 (tun0)
Current Scopes: DNS
DefaultRoute setting: no
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 192.168.XYZ.XYZ
DNS Servers: 192.168.XYZ.XYZ
DNS Domain: ~yourdomain.com