「Systemd-resolved」の版間の差分
(ページの作成:「{{Lowercase title}} Category:Domain Name System Category:マルチキャスト DNS en:Systemd-resolved {{Related articles start}} {{Related|systemd-networkd}}…」) |
(DNS over TLSを翻訳) |
||
108行目: | 108行目: | ||
==== DNS over TLS ==== |
==== DNS over TLS ==== |
||
− | {{Warning|systemd-resolved |
+ | {{Warning|systemd-resolvedは、サーバーのIPアドレスに対して発行されたDNSサーバー証明書のみを検証します(まれにしか発生しません)。 IPアドレスのないDNSサーバー証明書はチェックされないため、systemd-resolvedは中間者攻撃に対して脆弱になります。 [https://github.com/systemd/systemd/issues/9397 systemd issue 9397].}} |
DNS over TLS はデフォルトでは無効になっています。有効にするには {{man|5|resolved.conf}} の {{ic|[Resolve]}} セクションの {{ic|1=DNSOverTLS=}} 設定を変更してください: |
DNS over TLS はデフォルトでは無効になっています。有効にするには {{man|5|resolved.conf}} の {{ic|[Resolve]}} セクションの {{ic|1=DNSOverTLS=}} 設定を変更してください: |
2020年3月4日 (水) 14:23時点における版
systemd-resolved は D-Bus インターフェイスと resolve
NSS サービス (nss-resolve(8))、127.0.0.53
のローカル DNS スタブリスナによるネットワーク名前解決をローカルアプリケーションに提供する systemd サービスです。使用方法については systemd-resolved(8) を見てください。
目次
インストール
systemd-resolved は systemd パッケージに含まれておりデフォルトでインストールされています。
設定
systemd-resolved は Domain Name System (DNS) (DNSSEC と DNS over TLS を含む) と Multicast DNS (mDNS) そして Link-Local Multicast Name Resolution (LLMNR) のリゾルバサービスを提供します。
リゾルバは /etc/systemd/resolved.conf
を編集するか、あるいは /etc/systemd/resolved.conf.d/
のドロップイン .conf ファイルで設定できます。resolved.conf(5) を参照してください。
systemd-resolved を使うには systemd-resolved.service
を起動・有効化してください。
DNS
systemd-resolved はドメイン名前解決を処理する4つのモードを備えています (4つのモードについては systemd-resolved(8) § /ETC/RESOLV.CONF に説明があります)。ここでは重要な2つのモードについて説明します。
- systemd の DNS スタブファイルを使う - systemd の DNS スタブファイル
/run/systemd/resolve/stub-resolv.conf
にはローカススタブ127.0.0.53
が唯一の DNS サーバーとして含まれ、検索ドメインのリストが記載されています。これは推奨されている動作モードです。サービスユーザーは/etc/resolv.conf
ファイルを systemd-resolved によって管理されるローカルのスタブ DNS リゾルバファイル/run/systemd/resolve/stub-resolv.conf
に転送することが推奨されます。これにより全てのクライアントについて systemd が設定を管理するようになります。/etc/resolv.conf
を systemd スタブのシンボリックリンクに置き換えることで設定できます:# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
- resolv.conf を保護 - このモードでは
/etc/resolv.conf
は維持され systemd-resolved はこのファイルのクライアントになります。このモードでは他のパッケージで/etc/resolv.conf
を管理できるため作用を抑えられます。
DNS サーバーの設定
自動
systemd-resolved は /etc/resolv.conf
によってネットワークマネージャでは自動的に使用されます。systemd-resolved は /etc/resolv.conf
シンボリックリンクで認識されるため特に設定は必要ありません。systemd-networkd や NetworkManager がその場合に該当します。
ただし DHCP や VPN クライアントが resolvconf プログラムを使用して名前サーバーや検索ドメインを設定する場合 (resolvconf を使用するソフトウェアの一覧については openresolv#使用プログラムを見てください)、/usr/bin/resolvconf
シンボリックリンクを作るために追加パッケージ systemd-resolvconf が必要です。
手動
ローカル DNS スタブモードでは、resolved.conf(5) ファイルで別の DNS サーバーが提供されます:
/etc/systemd/resolved.conf.d/dns_servers.conf
[Resolve] DNS=91.239.100.100 89.233.43.71
フォールバック
systemd-resolved がネットワークマネージャから DNS サーバーアドレスを受信できず手動でも DNS サーバーが設定されていない場合、DNS 解決が常に機能するように systemd-resolved はフォールバック DNS アドレスにフォールバックします。
resolved.conf(5) で FallbackDNS=
を設定することでフォールバックのアドレスは変更できます。例:
/etc/systemd/resolved.conf.d/fallback_dns.conf
[Resolve] FallbackDNS=127.0.0.1 ::1
フォールバック DNS 機能を無効化したい場合は特にアドレスを指定せずに FallbackDNS
オプションを設定してください:
/etc/systemd/resolved.conf.d/fallback_dns.conf
[Resolve] FallbackDNS=
DNSSEC
デフォルトでは、上流の DNS サーバーが DNSSEC をサポートしている場合のみ、DNSSEC 検証が有効になります。常に DNSSEC を確認したい場合 (DNSSEC をサポートしていない名前サーバーでは DNS 解決ができなくなります)、DNSSEC=true
を設定してください:
/etc/systemd/resolved.conf.d/dnssec.conf
[Resolve] DNSSEC=true
不正な署名のドメインを問い合わせて DNSSEC 検証をテスト:
$ resolvectl query sigfail.verteiltesysteme.net
sigfail.verteiltesysteme.net: resolve call failed: DNSSEC validation failed: invalid
正しい署名を使っているドメインをテスト:
$ resolvectl query sigok.verteiltesysteme.net
sigok.verteiltesysteme.net: 134.91.78.139 -- Information acquired via protocol DNS in 266.3ms. -- Data is authenticated: yes
DNS over TLS
DNS over TLS はデフォルトでは無効になっています。有効にするには resolved.conf(5) の [Resolve]
セクションの DNSOverTLS=
設定を変更してください:
/etc/systemd/resolved.conf.d/dns_over_tls.conf
[Resolve] DNSOverTLS=yes
mDNS
systemd-resolved は マルチキャスト DNS リゾルバ・レスポンダとして使えます。
リゾルバは "hostname.local" 命名規則によるホストネーム解決を提供します。
mDNS は systemd-resolved の全体設定 (resolved.conf(5) の MulticastDNS=
) とネットワークマネージャの接続毎の設定の両方が有効になっている場合にのみ使われます。デフォルトで systemd-resolved は mDNS レスポンダを有効にしますが systemd-networkd と NetworkManager はどちらも接続毎の設定で有効にしません:
- systemd-networkd の場合、
[Network]
セクションにMulticastDNS=
設定があります。systemd.network(5) を見てください。 - NetworkManager の場合、設定は
[connection]
セクションのmdns=
です。利用可能な値:0
- 無効,1
- リゾルバのみ,2
- リゾルバとレスポンダ [1]。
mDNS とファイアウォールを使う場合は、UDP ポート 5353
が開いていることを確認してください。
LLMNR
Link-Local Multicast Name Resolution は Microsoft によって作られたホストネーム解決プロトコルです。
LLMNR は systemd-resolved の全体設定 (resolved.conf(5) の LLMNR=
) とネットワークマネージャの接続毎の設定の両方が有効になっている場合にのみ使われます。デフォルトで systemd-resolved は LLMNR レスポンダを有効にし、systemd-networkd と NetworkManager は接続の設定も有効にします。
- systemd-networkd の場合、設定は
[Network]
セクションのLLMNR=
です。systemd.network(5) を見てください。 - NetworkManager の場合、
[connection]
セクションのllmnr=
が設定です。nm-settings(5) を見てください。利用可能な値:0
- 無効化,1
- リゾルバのみ,2
- リゾルバとレスポンダ。
LLMNR とファイアウォールを使う場合、UDP と TCP のポート 5355
を開いてください。
検索
DNS レコードや mDNS あるいは LLMNR ホストを問い合わせるには resolvectl ユーティリティを使います。
例えば DNS レコードを確認するには:
$ resolvectl query archlinux.org
archlinux.org: 2a01:4f8:172:1d86::1 138.201.81.199 -- Information acquired via protocol DNS in 48.4ms. -- Data is authenticated: no
resolvectl(1) § EXAMPLES には他の例が存在します。