「ドメイン名前解決」の版間の差分
Resolver のパフォーマンスを翻訳して追加 |
→Glibc リゾルバ: 同期 |
||
| (3人の利用者による、間の44版が非表示) | |||
| 1行目: | 1行目: | ||
{{Lowercase title}} |
{{Lowercase title}} |
||
[[Category: |
[[Category:ドメインネームシステム]] |
||
[[Category:ネットワーク設定]] |
|||
[[de:Resolv.conf]] |
[[de:Resolv.conf]] |
||
[[en: |
[[en:Domain name resolution]] |
||
[[fr:Domain name resolution]] |
|||
[[es:Resolv.conf]] |
|||
[[pt:Domain name resolution]] |
|||
[[fr:Resolv.conf]] |
|||
[[ru:Domain name resolution]] |
|||
[[it:Resolv.conf]] |
|||
[[zh-hans: |
[[zh-hans:Domain name resolution]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ネットワーク設定}} |
|||
{{Related|パフォーマンスの最大化#ネットワーク}} |
{{Related|パフォーマンスの最大化#ネットワーク}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
一般に、[[Wikipedia:ja:ドメイン名|ドメイン名]] は IP アドレスを表し、[[Wikipedia:ja:Domain Name System|ドメインネームシステム]] (DNS) で IP アドレスに関連付けられます。 |
|||
DNS リゾルバの設定ファイルが {{ic|/etc/resolv.conf}} です。[https://www.kernel.org/doc/man-pages/online/pages/man5/resolv.conf.5.html resolv.conf(5)] man ページより: |
|||
:resolver は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。 レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。 このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。 |
|||
ここでは、ドメイン名前解決の設定方法とドメイン名の解決方法について説明します。 |
|||
:このファイルが存在しない場合、問い合わせはローカルマシン上の ネームサーバに対してのみ行われる。ドメイン名はホスト名から決定され、 ドメインの検索パスはドメイン名から作成される。 |
|||
== |
== Name Service Switch == |
||
[[Wikipedia:Name Service Switch|Name Service Switch]] (NSS) 機能は GNU C ライブラリ ({{Pkg|glibc}}) の一部であり、{{man|3|getaddrinfo}} API をサポートしており、ドメイン名を解決するために使用されます。NSS では、システムデータベースを別々のサービスで提供することができ、その検索順序は管理者が {{man|5|nsswitch.conf}} で設定することができます。ドメイン名の解決を行うデータベースは ''hosts'' データベースであり、glibc は以下のサービスを提供しています。 |
|||
(通常は) あなたの使っている ISP が [[wikipedia:ja:Domain_Name_System|DNS]] サーバーを提供しており、キャッシュサーバーを持っている場合はルーターに DNS サーバーを追加することができます。DNS サーバーの切り替えは Windows のユーザーにとっては問題になりません、なぜなら DNS サーバーが遅かったり動作していなかったりする場合、すぐに他のサーバーに切り替えられるからです。しかしながら、通常 Linux はタイムアウトに多くの時間をかけるので、遅延が発生する原因となりえます。 |
|||
* ''files'': {{ic|/etc/hosts}} ファイルを読み込む。{{man|5|hosts}} を参照してください。 |
|||
変更を加える前に ''drill'' ({{Pkg|ldns}} パッケージに入っています) を使ってください。下のセクションで調整を行ったらクエリ時間を比較するためにもう一度実行してください: |
|||
* ''dns'' :{{ic|/etc/resolv.conf}} を読み込む [[#Glibc resolver|glibc resolver]]。 {{man|5|resolv.conf}} を参照してください。 |
|||
$ drill www5.yahoo.com |
|||
[[systemd]] はホスト名解決のために 3 つの NSS サービスを提供します。 |
|||
また、ネームサーバを指定することもできます: |
|||
$ drill @ip.of.name.server www5.yahoo.com |
|||
* {{man|8|nss-resolve}} — で説明されているキャッシング DNS スタブ リゾルバ [[systemd-resolved]] |
|||
== 代替 DNS サーバー == |
|||
* {{man|8|nss-myhostname}} — {{ic|/etc/hosts}} を編集せずに [[ネットワーク設定#ローカルのホストネーム解決]] を提供します。 |
|||
* {{man|8|nss-mymachines}} — ローカル {{man|8|systemd-machined}} コンテナの名前のホスト名解決を提供します |
|||
=== NSS を使用してドメイン名を解決する === |
|||
他の DNS サーバーを使うには、{{ic|/etc/resolv.conf}} を編集して、一番最初に使われるようにファイルの一番上にサーバーを追加してください。任意で、記載されているサーバーを削除したりコメントアウトすることもできます。 |
|||
NSS データベースは {{man|1|getent}} でクエリできます。ドメイン名は、NSS を介して解決できます。 |
|||
{{Note|{{ic|/etc/resolv.conf}} への変更はすぐに適用されます。}} |
|||
$ getent hosts ''domain_name'' |
|||
=== OpenDNS === |
|||
{{Note|ほとんどのプログラムは NSS を使用してドメイン名を解決しますが、{{ic|/etc/resolv.conf}} や {{ic|/etc/hosts}} を直接読み取るプログラムもあります。[[ネットワーク設定#localhost がネットワーク上で解決される]] を参照してください。}} |
|||
[https://opendns.com OpenDNS] はフリーの代替ネームサーバを提供しています: |
|||
== Glibc リゾルバ == |
|||
# OpenDNS nameservers |
|||
nameserver 208.67.222.222 |
|||
nameserver 208.67.220.220 |
|||
glibc リゾルバは、解決ごとに {{ic|/etc/resolv.conf}} を読み取り、使用するネームサーバーとオプションを決定します。 |
|||
IPv6 サーバーも利用可能です: |
|||
{{man|5|resolv.conf}}は、ネームサーバー(nameservers)といくつかの設定オプションを記載するファイルです。 |
|||
nameserver 2620:0:ccc::2 |
|||
最初に記載された名前解決サーバーが優先的に使用され、最大3つまで記載できます。 |
|||
nameserver 2620:0:ccd::2 |
|||
先頭に ({{ic|#}}) が付いた行は無視されます。 |
|||
{{Note|glibc リゾルバはクエリをキャッシュしません。クエリの探索時間を改善するために、キャッシングリゾルバを設定できます。glibc リゾルバも DNSSEC を検証できません。そのためには、DNSSEC 対応のバリデータリゾルバが必要です。詳細については、[[#DNS サーバー]] を参照してください。}} |
|||
{{Warning|OpenDNS サーバーはクエリに対して、たとえドメインや DNS レコードが存在していなかったとしても、いつでも IP アドレスを返します。ネットワークの問題をデバッグするときにこれが問題になるかもしれません (OpenDNS ダッシュボードで特定の IP アドレスについてこれを無効にすることができます)。}} |
|||
=== /etc/resolv.conf の上書き === |
|||
[[ネットワーク設定#ネットワークマネージャ|Network manager]] は {{ic|/etc/resolv.conf}} を上書きする傾向があります。詳細については、対応するセクションを参照してください。 |
|||
OpenDNS は全てのクエリを最初に自身のサーバーに通してルーティングすることで Google の検索をハイジャックします。これによって Google の検索が明らかに遅くなったり、Google の FeelingLucky 機能が使えなくなったりすることがあります。後者の場合、元の挙動に戻す [https://addons.mozilla.org/en-US/firefox/addon/7993 Firefox アドオン]が存在します。もっとも賢い解決方法は Google へのクエリを全て ISP の DNS サーバーにリダイレクトすることです。これは [[dnsmasq]] を使うことで可能です。 |
|||
* [[dhcpcd#/etc/resolv.conf]] |
|||
=== Google === |
|||
* [[Netctl#/etc/resolv.conf]] |
|||
* [[NetworkManager#/etc/resolv.conf]] |
|||
* [[ConnMan#/etc/resolv.conf]] |
|||
プログラムが {{ic|/etc/resolv.conf}} を上書きするのを防ぐために、不変の [[ファイルのパーミッションと属性#ファイルの属性|ファイル属性]] を設定して書き込み保護することもできます。 |
|||
[https://developers.google.com/speed/public-dns/ Google のネームサーバ]を代わりに使うこともできます: |
|||
# chattr +i /etc/resolv.conf |
|||
# Google nameservers |
|||
nameserver 8.8.8.8 |
|||
nameserver 8.8.4.4 |
|||
{{Tip|複数のプロセスで {{ic|/etc/resolv.conf}} に書き込みたい場合は、[[Openresolv|resolvconf]] を使用できます。}} |
|||
IPv6 サーバーも利用可能です: |
|||
==== nmcli を使用した代替方法 ==== |
|||
nameserver 2001:4860:4860::8888 |
|||
nameserver 2001:4860:4860::8844 |
|||
[[NetworkManager]] を使用する場合、{{man|1|nmcli}} を使用して {{ic|/etc/resolv.conf}} の永続オプションを設定できます。''Wired'' を接続の名前に変更します。例: |
|||
=== Comodo === |
|||
[http://securedns.dnsbycomodo.com/ Comodo] も IPv4 のセットを提供しており、任意で(無料ではありませんが)ウェブフィルタリングもできます。つまりこの機能は OpenDNS がやっているようにクエリをハイジャックすることを意味しています。 |
|||
# nmcli con mod Wired +ipv4.dns-options 'rotate,single-request,timeout:1' |
|||
# Comodo nameservers |
|||
nameserver 8.26.56.26 |
|||
nameserver 8.20.247.20 |
|||
その他のオプションについては、{{man|1|nmcli}}、{{man|5|nm-settings-nmcli}}、および {{man|5|resolv.conf}} のマニュアルページを参照してください: |
|||
=== Yandex === |
|||
[https://dns.yandex.com/advanced/ Yandex.DNS] には3つの選択肢があります: |
|||
=== 探索時間を制限する === |
|||
# Basic Yandex.DNS - Quick and reliable DNS |
|||
nameserver 77.88.8.8 # Preferred IPv4 DNS |
|||
nameserver 77.88.8.1 # Alternate IPv4 DNS |
|||
nameserver 2a02:6b8::feed:0ff # Preferred IPv6 DNS |
|||
nameserver 2a02:6b8:0:1::feed:0ff # Alternate IPv6 DNS |
|||
非常に長いホスト名の探索に直面したとき ([[pacman]] やブラウジング中など)、代替ネームサーバーが使われるまでの小さなタイムアウトを定義することがしばしば役に立ちます。これを行うには、{{ic|/etc/resolv.conf}} に以下を記述してください。 |
|||
# Safe Yandex.DNS - Protection from virus and fraudulent content |
|||
nameserver 77.88.8.88 # Preferred IPv4 DNS |
|||
nameserver 77.88.8.2 # Alternate IPv4 DNS |
|||
nameserver 2a02:6b8::feed:bad # Preferred IPv6 DNS |
|||
nameserver 2a02:6b8:0:1::feed:bad # Alternate IPv6 DNS |
|||
options timeout:1 |
|||
# Family Yandex.DNS - Without adult content |
|||
nameserver 77.88.8.7 # Preferred IPv4 DNS |
|||
nameserver 77.88.8.3 # Alternate IPv4 DNS |
|||
nameserver 2a02:6b8::feed:a11 # Preferred IPv6 DNS |
|||
nameserver 2a02:6b8:0:1::feed:a11 # Alternate IPv6 DNS |
|||
=== IPv6 でホスト名の解決が遅れる === |
|||
3つのモードのどれでも Yandex.DNS の速度は同じです。"Basic" モードでは、トラフィックフィルタリングは存在しません。"Safe" モードでは、問題のあるサイトからの保護が提供されます。"Family" モードでは、未成年に悪影響を及ぼすサイトをブロックします。 |
|||
ホスト名の解決時に5秒の遅延が発生した場合は、DNS サーバー/ファイアウォールの誤動作が原因である可能性があり、並列の A および AAAA 要求に対して1つの応答しか返さない可能性があります。[https://udrepper.livejournal.com/20948.html] {{ic|/etc/resolv.conf}} で次のオプションを設定することで、これを修正できます。 |
|||
=== UncensoredDNS === |
|||
options single-request |
|||
[http://censurfridns.dk UncensoredDNS] はフリーの無検閲 DNS リゾルバで、ファイアウォールによってポート53がブロックされている場合でもポート5353を使ってクエリを送信できます。 |
|||
=== ローカルドメイン名 === |
|||
# censurfridns.dk IPv4 nameservers |
|||
nameserver 91.239.100.100 ## anycast.censurfridns.dk |
|||
ローカルマシン名のホスト名を完全修飾ドメイン名なしで使用できるようにするには、{{ic|/etc/resolv.conf}} にローカルドメインの行を以下のように追加してください。 |
|||
nameserver 89.233.43.71 ## ns1.censurfridns.dk |
|||
domain example.org |
|||
これにより、''ssh'' コマンドを使用する際に {{ic|mainmachine1.example.org}} のようなローカルホストを単に {{ic|mainmachine1}} として参照することができますが、 [[ドメイン名前解決#ルックアップユーティリティ|drill]] コマンドなどは検索を行うために完全修飾ドメイン名を要求します。 |
|||
== ルックアップユーティリティ == |
|||
特定の DNS サーバーと DNS/[[DNSSEC]] レコードを照会するには、専用の DNS ルックアップユーティリティを使用できます。これらのツールは DNS 自体を実装し、[[#Name Service Switch|NSS]] を使用しません。 |
|||
{{Pkg|ldns}} は、DNS から情報を取得するために設計されたツールである {{man|1|drill}} を提供します。 |
|||
たとえば、''drill'' を使用して特定のネームサーバーにドメインの TXT レコードを照会するには、次のようにします: |
|||
$ drill @''nameserver'' TXT ''domain'' |
|||
DNS サーバーが指定されていない場合、''drill'' は {{ic|/etc/resolv.conf}} で定義されたネームサーバーを使用します。 |
|||
{{Tip|一部の DNS サーバーには、独自の DNS 探索ユーティリティが付属しています。例えば |
|||
* {{Pkg|knot}} {{man|1|khost}} と {{man|1|kdig}} を提供します。 |
|||
* [[Unbound]] {{man|1|unbound-host}} を持っています。 |
|||
* [[BIND]] には、{{man|1|dig}}、{{man|1|host}}、{{man|1|nslookup}}、および多数の {{ic|dnssec-}} ツールがあります。 |
|||
* [[systemd-resolved]] {{man|1|resolvectl}} があり、DNS 探索用の {{ic|query}} サブコマンドを提供します。 |
|||
}} |
|||
# censurfridns.dk IPv6 nameservers |
|||
nameserver 2001:67c:28a4:: ## anycast.censurfridns.dk |
|||
nameserver 2002:d596:2a92:1:71:53:: ## ns1.censurfridns.dk |
|||
== Resolver のパフォーマンス == |
== Resolver のパフォーマンス == |
||
Glibc resolver は問い合わせをキャッシュしません。ローカルキャッシュを実装するには、 [[systemd-resolved]] を使用するか、ローカルキャッシュ [https://wiki.archlinux.org/title/Domain_name_resolution#DNS_servers DNS server] を設定し、 {{ic|127.0.0.1}} と {{ic|::1}} を {{ic|/etc/resolv.conf}} または {{ic|/etc/resolvconf}} ([[openresolv]] を使用する場合) でネームサーバとして使用します。 |
Glibc resolver は問い合わせをキャッシュしません。ローカルキャッシュを実装するには、 [[systemd-resolved]] を使用するか、ローカルキャッシュ [https://wiki.archlinux.org/title/Domain_name_resolution#DNS_servers DNS server] を設定し、 {{ic|127.0.0.1}} と {{ic|::1}} を {{ic|/etc/resolv.conf}} または {{ic|/etc/resolvconf}} ([[openresolv]] を使用する場合) でネームサーバーとして使用します。 |
||
{{Tip| |
{{Tip| |
||
* ''drill'' または ''dig'' は、クエリー時間を報告します。 |
* ''drill'' または ''dig'' は、クエリー時間を報告します。 |
||
* 通常、ルータは自身のキャッシングリゾルバ を ネットワークの DNS サーバとして設定し、ネットワーク全体に DNS キャッシュを提供します。 |
* 通常、ルータは自身のキャッシングリゾルバ を ネットワークの DNS サーバーとして設定し、ネットワーク全体に DNS キャッシュを提供します。 |
||
* 次の DNS サーバへの切り替えに時間がかかりすぎる場合は、 [[ドメイン名前解決#timeout オプションを使ってホスト名の検索時間を減らす]] を試してください。}} |
* 次の DNS サーバーへの切り替えに時間がかかりすぎる場合は、 [[ドメイン名前解決#timeout オプションを使ってホスト名の検索時間を減らす]] を試してください。}} |
||
== プライバシーとセキュリティ == |
|||
== DNS 設定の保護 == |
|||
[[dhcpcd]], [[netctl]] ,[[NetworkManager]] などの様々なプロセスによって {{ic|/etc/resolv.conf}} が上書きされることがあります。これは通常は望ましいことですが、場合によっては DNS 設定を手動で設定する時もあります (例: 固定 IP アドレスを使う場合)。DNS 設定を保護する方法は複数存在します。 |
|||
*dhcdpcd を使っている場合、下の [[#dhcpcd 設定の修正]] を見て下さい。 |
|||
*[[netctl]] を使って固定 IP アドレスを割り当てる場合、プロファイルで {{ic|DNS*}} オプションは使わないで下さい。このオプションを使うと ''resolvconf'' が呼び出されて {{ic|/etc/resolv.conf}} が上書きされます。 |
|||
DNS プロトコルは暗号化されておらず、機密性、完全性、認証を考慮していないため、信頼されていないネットワークや悪意のある ISP を使用すると、DNS クエリが盗聴され、応答が [[Wikipedia:ja:中間者攻撃|manipulated]] される可能性があります。さらに、DNSサーバーは [[Wikipedia:DNS hijacking|DNS hijacking]] を行うこともできます。 |
|||
=== NetworkManager を使う === |
|||
DNS サーバーがあなたのクエリを機密扱いにすることを信頼する必要があります。DNS サーバーは ISP や [[ドメイン名前解決#サードパーティの DNS サービス|サードパーティ]] によって提供されています。また、自分で [[ドメイン名前解決#DNS サーバー|再帰型ネームサーバー]] を運用することもできますが、より多くの労力がかかります。信頼できないネットワークで [[DHCP]] クライアントを使う場合は、任意の DNS サーバーを使ったり、その影響を受けたりしないように、必ず静的なネームサーバーを設定するようにしてください。リモート DNS サーバーとの通信を安全にするために、[[Wikipedia:DNS over TLS|DNS over TLS]] ([[RFC:7858|RFC 7858]]) や [[Wikipedia:ja:DNS over HTTPS|DNS over HTTPS]] ([[RFC:8484|RFC 8484]]) または [[Wikipedia:DNSCrypt|DNSCrypt]] などの暗号化プロトコルを使用するとよいでしょう。ただし上流サーバと [[#DNS server|リゾルバ]] がこのプロトコルをサポートしていることが条件です。また、[[stunnel]] などの通信を暗号化・復号化する専用ソフトを利用する方法もあります。[[Wikipedia:ja:DNSサーバ|認証付きのサーバー]] からの応答であることを確認するために、[[DNSSEC]] を検証することができます ([[ドメイン名前解決#DNS サーバー|リゾルバ]] と上流のサーバの両方がサポートしている場合) |
|||
NetworkManager が {{ic|/etc/resolv.conf}} を変更しないようにするには、{{ic|/etc/NetworkManager/NetworkManager.conf}} を編集して {{ic|[main]}} セクションに以下を追加します: |
|||
=== アプリケーションレベルの DNS === |
|||
dns=none |
|||
主要な Web ブラウザ [https://support.mozilla.org/en-US/kb/firefox-dns-over-https] [https://www.chromium.org/developers/dns-over-https] などの一部のクライアントソフトウェアは、HTTPS 上で DNS を実装し始めていることに注意してください。クエリの暗号化は、しばしばボーナスとみなされるかもしれませんが、それは、ソフトウェアがシステムリゾルバの設定の周りでクエリを横取りすることも意味します[https://blog.powerdns.com/2019/09/25/centralised-doh-is-bad-for-privacy-in-2019-and-beyond/] |
|||
上記の設定後 {{ic|/etc/resolv.conf}} が壊れたシンボリックリンクになる場合は削除して、それから新しい {{ic|/etc/resolv.conf}} ファイルを作成してください。 |
|||
[[Firefox]] では、DNS over HTTPS の有効・無効やDNSサーバーを選択するための [https://support.mozilla.org/en-US/kb/firefox-dns-over-https#w_manually-enabling-and-disabling-dns-over-https 設定オプション] が提供されています。 |
|||
=== openresolv を使う === |
|||
[[Chromium]] はユーザーのシステムリゾルバを調査し、システムリゾルバのアドレスが DNS over HTTPS も提供することが分かっている場合、DNS over HTTPS を有効にします。詳細と DNS over HTTPS を無効にする方法については、[https://blog.chromium.org/2020/05/a-safer-and-more-private-browsing-DoH.html このブログの記事] を参照してください。 |
|||
{{Pkg|openresolv}} には ''resolvconf'' ユーティリティが入っています。これは複数の DNS 設定を管理するためのフレームワークです。詳しくは {{ic|man 8 resolvconf}} や {{ic|man 5 resolvconf.conf}} を見て下さい。 |
|||
Mozilla [https://support.mozilla.org/en-US/kb/configuring-networks-disable-dns-over-https] は、システムリゾルバがドメイン {{ic|use-application-dns.net}} を解決できない場合、普遍的にアプリケーションレベル DNS を無効にすることを提案しています。現在のところ、これはFirefoxにのみ実装されています。 |
|||
設定は {{ic|/etc/resolvconf.conf}} で行い、{{ic|resolvconf -u}} を実行すると {{ic|/etc/resolv.conf}} が生成されます。 |
|||
=== |
=== Oblivious DNS === |
||
dhcpcd の設定ファイルを編集することで dhcpcd デーモンが {{ic|/etc/resolv.conf}} を上書きするのを止めることができます。{{ic|/etc/dhcpcd.conf}} の最後のセクションに次を加えて下さい: |
|||
[https://odns.cs.princeton.edu/ Oblivious DNS] は、多くの DNS プライバシーの問題に対処するシステムです。詳しくは[https://blog.cloudflare.com/oblivious-dns/ Cloudflare の記事] をご覧ください。 |
|||
nohook resolv.conf |
|||
== サードパーティの DNS サービス == |
|||
または、{{ic|/etc/resolv.conf.head}} という名のファイルを作ってあなたの DNS サーバーを記入することができます。dhcpcd はこのファイルを {{ic|/etc/resolv.conf}} の先頭に挿入します。 |
|||
{{Note|サードパーティの DNS サービスを使用する前に、そのサービスのプライバシーポリシーで、ユーザーデータの処理方法に関する情報を確認してください。ユーザーデータには価値があり、他の当事者に販売することができます。}} |
|||
=== /etc/resolv.conf の書き込み保護 === |
|||
さまざまな [[Wikipedia:Public recursive name server|Public recursive name server]] が利用可能であり、その一部には専用のソフトウェアもあります。 |
|||
{{ic|/etc/resolv.conf}} が何かによって修正されてしまうのを止める他の方法として書き込み保護属性を設定する方法があります: |
|||
# chattr +i /etc/resolv.conf |
|||
* {{App|[[cloudflared]]|HTTPS 経由の Cloudflare DNS の DNS クライアント|https://developers.cloudflare.com/1.1.1.1/dns-over-https/cloudflared-proxy|{{Pkg|cloudflared}}}} |
|||
=== timeout オプションを使ってホスト名の検索時間を減らす === |
|||
* {{App|dingo|HTTPS 経由の Google DNS の DNS クライアント|https://github.com/pforemski/dingo|{{AUR|dingo-git}}}} |
|||
ホスト名の解決にとても長い時間がかかっている場合 ([[pacman]] やブラウザで)、短い timeout を設定するとよいかもしれません。タイムアウトを設定するには、{{ic|/etc/resolv.conf}} に次の行を追加してください: |
|||
* {{App|opennic-up|最も応答性の高い OpenNIC サーバーを使用して、DNS サーバーの更新を自動化します|https://github.com/kewlfft/opennic-up|{{AUR|opennic-up}}}} |
|||
options timeout:1 |
|||
* {{App|nextdns|NextDNS 用の DNS-over-HTTPS CLI クライアント|https://github.com/nextdns/nextdns|{{AUR|nextdns}}}} |
|||
[https://github.com/cleanbrowsing/dnsperftest dnsperftest] を使用して、最も一般的な DNS リゾルバのパフォーマンスを自分の場所からテストできます。[https://www.dnsperf.com/#!dns-resolvers dnsperf.com] は、プロバイダー間のグローバルベンチマークを提供します。 |
|||
== ヒントとテクニック == |
|||
== DNS サーバー == |
|||
=== ローカルドメイン名 === |
|||
DNSサーバーには、[[Wikipedia:Authoritative name server|authoritative]] と [[Wikipedia:Name server#Recursive query|recursive]] があります。そのどちらでもない場合、それらは '''スタブリゾルバ''' と呼ばれ、単にすべてのクエリーを別の再帰的ネームサーバーに転送するだけである。スタブリゾルバは通常、ローカルホストまたはネットワークに DNSキャッシュを導入するために使用される。同じことが、本格的なネームサーバーでも実現できることに注意してください。このセクションでは、利用可能なDNSサーバーを比較します。より詳細な比較は、[[Wikipedia:Comparison of DNS server software]]を参照してください。 |
|||
{| class="wikitable sortable" style="text-align:center" |
|||
! rowspan=2 | 名前 !! rowspan=2 | パッケージ !! colspan=4 | 機能 !! rowspan=2 | [[resolvconf]] !! colspan=5 | サポートされているプロトコル |
|||
|- |
|||
! [[Wikipedia:Authoritative name server|Authoritative]] !! [[Wikipedia:Name server#Recursive query|Recursive]] !! [[Wikipedia:Name server#Caching name server|Cache]] !! [[Wikipedia:Domain Name System Security Extensions#The lookup procedure|Validates]]<br>[[DNSSEC]] !! [[Wikipedia:Domain Name System|DNS]] !! [[Wikipedia:DNSCrypt|DNSCrypt]] !! [[Wikipedia:DNS over TLS|DNS<br>over TLS]] !! [[Wikipedia:DNS over HTTPS|DNS<br>over HTTPS]] !! [https://datatracker.ietf.org/doc/html/rfc9250 DNS<br>over QUIC] |
|||
|- |
|||
! [[BIND]] |
|||
| {{Pkg|bind}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{G|[[openresolv#Subscribers|Yes]]}} || {{Yes}} || {{No}} || {{Y|Server<sup>1</sup>}} || {{Y|Server}} || {{No|https://gitlab.isc.org/isc-projects/bind9/-/issues/3635}} |
|||
|- |
|||
! [[CoreDNS]] |
|||
| {{AUR|coredns}} || {{Yes}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No|https://github.com/coredns/coredns/issues/5583}} |
|||
|- |
|||
! [[DNS over HTTPS|DNS-over-HTTPS]] |
|||
| {{Pkg|dns-over-https}} || {{No}} || {{No}} || {{No}} || {{No}} || ? || ? || {{No}} || {{No|https://github.com/m13253/dns-over-https/issues/104}} || {{Yes}} || {{No|https://github.com/m13253/dns-over-https/issues/129}} |
|||
|- |
|||
! [https://maradns.samiam.org/deadwood/doc/Deadwood.html Deadwood] ([[Wikipedia:MaraDNS|MaraDNS]] recursor) |
|||
| {{AUR|maradns}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} |
|||
|- |
|||
! [[DNSCrypt|dnscrypt-proxy]] |
|||
| {{Pkg|dnscrypt-proxy}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}} || {{Y|Server}} || {{Y|Resolver}} || {{No|https://github.com/DNSCrypt/dnscrypt-proxy/issues/1124}} || {{Yes}} || ? |
|||
|- |
|||
! [[dnsmasq]] |
|||
| {{Pkg|dnsmasq}} || {{Y|Partial}}<sup>2</sup> || {{No}} || {{Yes}} || {{Yes}} || {{G|[[openresolv#Subscribers|Yes]]}} || {{Yes}} || {{No}} || {{No|https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2018q2/012131.html}} || {{No}} || {{No}} |
|||
|- |
|||
! [https://github.com/AdguardTeam/dnsproxy dnsproxy] |
|||
| {{AUR|dnsproxy}} || {{No}} || {{No}} || {{Yes}} || {{No|https://github.com/AdguardTeam/dnsproxy/issues/10}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} |
|||
|- |
|||
! [[Knot Resolver]] |
|||
| {{Pkg|knot-resolver}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} || {{Y|[https://knot-resolver.readthedocs.io/en/stable/daemon-bindings-net_tlssrv.html#dns-over-https-doh Server]}} || {{No|https://gitlab.nic.cz/knot/knot-resolver/-/issues/548}} |
|||
|- |
|||
! [[pdnsd]] |
|||
| {{Pkg|pdnsd}} || {{Yes}} || {{Yes}} || {{G|Permanent}} || {{No}} || {{G|[[openresolv#Subscribers|Yes]]}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} |
|||
|- |
|||
! [[Wikipedia:PowerDNS#Recursor|PowerDNS Recursor]] |
|||
| {{Pkg|powerdns-recursor}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{G|[[openresolv#Subscribers|Yes]]}} || {{Yes}} || {{No}} || {{Y|[https://github.com/PowerDNS/pdns/pull/10338 Partial]}} || {{No}} || ? |
|||
|- |
|||
! [[Rescached]] |
|||
| {{AUR|rescached-git}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes|https://github.com/shuLhan/rescached-go#integration-with-openresolv}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} |
|||
|- |
|||
! [https://github.com/folbricht/routedns RouteDNS] |
|||
| {{AUR|routedns-git}} || {{No}} || {{No}} || {{Yes}}<sup>3</sup> || {{No|https://github.com/folbricht/routedns/issues/123}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} |
|||
|- |
|||
! [https://github.com/pymumu/smartdns SmartDNS] |
|||
| {{Pkg|smartdns}} || {{No}} || {{No}} || {{Yes}} || {{No|https://github.com/pymumu/smartdns/issues/19}} || ? || {{Yes}} || {{No}} || {{Y|Resolver}} || {{Y|Resolver}} || {{No}} |
|||
|- |
|||
! [[Stubby]] |
|||
| {{Pkg|stubby}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Y|Server}} || {{No}} || {{Y|Resolver}} || {{No|https://github.com/getdnsapi/stubby/issues/278}} || {{No|https://github.com/getdnsapi/stubby/issues/288}} |
|||
|- |
|||
!style="white-space: nowrap;"| [[systemd-resolved]] |
|||
| {{Pkg|systemd}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{G|[[systemd-resolved|Yes]]}} || {{Y|Resolver and [https://github.com/systemd/systemd/issues/4621#issuecomment-260050033 limited server]}} || {{No}} || {{Y|Resolver}} || {{No|https://github.com/systemd/systemd/issues/8639}} || {{No|https://github.com/systemd/systemd/issues/23770}} |
|||
|- |
|||
! [[Unbound]] |
|||
| {{Pkg|unbound}} || {{Y|Partial}} || {{Yes}} || {{Yes}}<sup>3</sup> || {{Yes}} || {{G|[[openresolv#Subscribers|Yes]]}} || {{Yes}} || {{Y|Server}} || {{Yes}} || {{Y|[https://github.com/NLnetLabs/unbound/issues/308 Server]}} || {{No|https://github.com/NLnetLabs/unbound/issues/743}} |
|||
|} |
|||
# BIND は DNS over TLS と DNS over HTTPS の両方を提供できますが ([https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#tls tls{}] と [https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#interfaces listen-on] を参照)、DNS over TLS/DNS over HTTPS アップストリームにクエリを転送することはまだできません。''dig'' ツールは DNS over TLS と DNS over HTTPS ({{ic|+tls}} と {{ic|+https}} オプションを使用) でクエリを実行できますが [https://gitlab.isc.org/isc-projects/bind9/-/issues/3163 証明書チェックなし] です。 |
|||
# [[Wikipedia:DNSサーバーソフトウェアの比較#cite_note-masqauth-32|Wikipedia]]より: dnsmasq は認証付きのサポートが制限されており、公共のインターネット利用よりもむしろ内部ネットワーク利用を意図しています。 |
|||
# [[Redis]] バックエンドを使用して、Unbound に永続的なキャッシュを提供できます。 |
|||
=== 認証専用サーバー === |
|||
{| class="wikitable sortable" style="text-align:center" |
|||
! 名前 !! パッケージ !! [[DNSSEC]] !! 地理的<br>バランシング |
|||
|- |
|||
! gdnsd |
|||
| {{Pkg|gdnsd}} || {{No}} || {{Yes}} |
|||
|- |
|||
! [[Wikipedia:Knot DNS|Knot DNS]] |
|||
| {{Pkg|knot}} || {{Yes}} || {{Yes|https://www.knot-dns.cz/docs/2.7/singlehtml/#geoip-geography-based-responses}} |
|||
|- |
|||
! [[Wikipedia:MaraDNS|MaraDNS]] |
|||
| {{AUR|maradns}} || {{No}} || ? |
|||
|- |
|||
! [[NSD]] |
|||
| {{Pkg|nsd}} || {{No}} || {{No}} |
|||
|- |
|||
! [[PowerDNS]] |
|||
| {{Pkg|powerdns}} || {{Yes}} || {{Yes}} |
|||
|} |
|||
=== 条件付き転送 === |
|||
特定のドメイン名を照会するときに、特定の DNS リゾルバを使用することができます。これは、VPN に接続する場合に特に便利です。これにより、VPN ネットワークへのクエリは VPN の DNS によって解決されますが、インターネットへのクエリは引き続き標準の DNS リゾルバによって解決されます。ローカルネットワークでも使用できます。 |
|||
これを実装するには、[[#DNS サーバー|ローカル リゾルバ]] を使用する必要があります。これは、glibc がサポートしていないためです。 |
|||
動的な環境 (ラップトップやある程度はデスクトップ)では、接続しているネットワーク (複数) に基づいてリゾルバを設定する必要があります。そのための最良の方法は [[openresolv]] を使うことです。なぜなら [[openresolv#Subscribers|multiple subscribers]] をサポートしているからです。いくつかの [[ネットワークマネージャ]] は openresolv を通して、あるいはリゾルバを直接設定して、これをサポートしています。NetworkManager [[NetworkManager#DNS caching and conditional forwarding|supports conditional forwarding without openresolv]] は、openresolv を使わずに条件付き転送をサポートしています。 |
|||
{{Note|転送に他の条件 (送信元 IP アドレスなど) を使用することもできますが、"条件付き転送" は、"照会されたドメイン" を条件に使用される名前です。}} |
|||
完全修飾ドメイン名を使わずにローカルマシンのホストネームを使いたい場合、以下のように {{ic|resolv.conf}} にローカルドメインを追加してください: |
|||
== 参照 == |
|||
domain localdomain.com |
|||
* [https://www.tldp.org/LDP/nag2/x-087-2-resolv.html Linux Network Administrators Guide] |
|||
上記の設定によって ''ssh'' コマンドを使用する際に {{ic|mainmachine1.localdomain.com}} とローカルホストを指定するところを {{ic|mainmachine1}} だけで参照できるようになります。ただし、''drill'' コマンドを実行するときはルックアップを実行するため完全修飾ドメイン名が必要になります。 |
|||
* [https://www.debian.org/doc/manuals/debian-handbook/sect.hostname-name-service.en.html#sect.name-resolution Debian Handbook] |
|||
* [[RFC:7706]] - ループバックで動作させることでルートサーバーへのアクセス時間を短縮 |
|||
* [http://linux-ip.net/pages/diagrams.html#domain-name-system-overview Domain name system overview] - DNS に関する図 |
|||
* [[代替 DNS サービス]] |
|||
2025年2月1日 (土) 05:55時点における最新版
一般に、ドメイン名 は IP アドレスを表し、ドメインネームシステム (DNS) で IP アドレスに関連付けられます。
ここでは、ドメイン名前解決の設定方法とドメイン名の解決方法について説明します。
Name Service Switch
Name Service Switch (NSS) 機能は GNU C ライブラリ (glibc) の一部であり、getaddrinfo(3) API をサポートしており、ドメイン名を解決するために使用されます。NSS では、システムデータベースを別々のサービスで提供することができ、その検索順序は管理者が nsswitch.conf(5) で設定することができます。ドメイン名の解決を行うデータベースは hosts データベースであり、glibc は以下のサービスを提供しています。
- files:
/etc/hostsファイルを読み込む。hosts(5) を参照してください。 - dns :
/etc/resolv.confを読み込む glibc resolver。 resolv.conf(5) を参照してください。
systemd はホスト名解決のために 3 つの NSS サービスを提供します。
- nss-resolve(8) — で説明されているキャッシング DNS スタブ リゾルバ systemd-resolved
- nss-myhostname(8) —
/etc/hostsを編集せずに ネットワーク設定#ローカルのホストネーム解決 を提供します。 - nss-mymachines(8) — ローカル systemd-machined(8) コンテナの名前のホスト名解決を提供します
NSS を使用してドメイン名を解決する
NSS データベースは getent(1) でクエリできます。ドメイン名は、NSS を介して解決できます。
$ getent hosts domain_name
/etc/resolv.conf や /etc/hosts を直接読み取るプログラムもあります。ネットワーク設定#localhost がネットワーク上で解決される を参照してください。Glibc リゾルバ
glibc リゾルバは、解決ごとに /etc/resolv.conf を読み取り、使用するネームサーバーとオプションを決定します。
resolv.conf(5)は、ネームサーバー(nameservers)といくつかの設定オプションを記載するファイルです。
最初に記載された名前解決サーバーが優先的に使用され、最大3つまで記載できます。
先頭に (#) が付いた行は無視されます。
/etc/resolv.conf の上書き
Network manager は /etc/resolv.conf を上書きする傾向があります。詳細については、対応するセクションを参照してください。
- dhcpcd#/etc/resolv.conf
- Netctl#/etc/resolv.conf
- NetworkManager#/etc/resolv.conf
- ConnMan#/etc/resolv.conf
プログラムが /etc/resolv.conf を上書きするのを防ぐために、不変の ファイル属性 を設定して書き込み保護することもできます。
# chattr +i /etc/resolv.conf
/etc/resolv.conf に書き込みたい場合は、resolvconf を使用できます。nmcli を使用した代替方法
NetworkManager を使用する場合、nmcli(1) を使用して /etc/resolv.conf の永続オプションを設定できます。Wired を接続の名前に変更します。例:
# nmcli con mod Wired +ipv4.dns-options 'rotate,single-request,timeout:1'
その他のオプションについては、nmcli(1)、nm-settings-nmcli(5)、および resolv.conf(5) のマニュアルページを参照してください:
探索時間を制限する
非常に長いホスト名の探索に直面したとき (pacman やブラウジング中など)、代替ネームサーバーが使われるまでの小さなタイムアウトを定義することがしばしば役に立ちます。これを行うには、/etc/resolv.conf に以下を記述してください。
options timeout:1
IPv6 でホスト名の解決が遅れる
ホスト名の解決時に5秒の遅延が発生した場合は、DNS サーバー/ファイアウォールの誤動作が原因である可能性があり、並列の A および AAAA 要求に対して1つの応答しか返さない可能性があります。[1] /etc/resolv.conf で次のオプションを設定することで、これを修正できます。
options single-request
ローカルドメイン名
ローカルマシン名のホスト名を完全修飾ドメイン名なしで使用できるようにするには、/etc/resolv.conf にローカルドメインの行を以下のように追加してください。
domain example.org
これにより、ssh コマンドを使用する際に mainmachine1.example.org のようなローカルホストを単に mainmachine1 として参照することができますが、 drill コマンドなどは検索を行うために完全修飾ドメイン名を要求します。
ルックアップユーティリティ
特定の DNS サーバーと DNS/DNSSEC レコードを照会するには、専用の DNS ルックアップユーティリティを使用できます。これらのツールは DNS 自体を実装し、NSS を使用しません。
ldns は、DNS から情報を取得するために設計されたツールである drill(1) を提供します。
たとえば、drill を使用して特定のネームサーバーにドメインの TXT レコードを照会するには、次のようにします:
$ drill @nameserver TXT domain
DNS サーバーが指定されていない場合、drill は /etc/resolv.conf で定義されたネームサーバーを使用します。
- knot khost(1) と kdig(1) を提供します。
- Unbound unbound-host(1) を持っています。
- BIND には、dig(1)、host(1)、nslookup(1)、および多数の
dnssec-ツールがあります。 - systemd-resolved resolvectl(1) があり、DNS 探索用の
queryサブコマンドを提供します。
Resolver のパフォーマンス
Glibc resolver は問い合わせをキャッシュしません。ローカルキャッシュを実装するには、 systemd-resolved を使用するか、ローカルキャッシュ DNS server を設定し、 127.0.0.1 と ::1 を /etc/resolv.conf または /etc/resolvconf (openresolv を使用する場合) でネームサーバーとして使用します。
- drill または dig は、クエリー時間を報告します。
- 通常、ルータは自身のキャッシングリゾルバ を ネットワークの DNS サーバーとして設定し、ネットワーク全体に DNS キャッシュを提供します。
- 次の DNS サーバーへの切り替えに時間がかかりすぎる場合は、 ドメイン名前解決#timeout オプションを使ってホスト名の検索時間を減らす を試してください。
プライバシーとセキュリティ
DNS プロトコルは暗号化されておらず、機密性、完全性、認証を考慮していないため、信頼されていないネットワークや悪意のある ISP を使用すると、DNS クエリが盗聴され、応答が manipulated される可能性があります。さらに、DNSサーバーは DNS hijacking を行うこともできます。
DNS サーバーがあなたのクエリを機密扱いにすることを信頼する必要があります。DNS サーバーは ISP や サードパーティ によって提供されています。また、自分で 再帰型ネームサーバー を運用することもできますが、より多くの労力がかかります。信頼できないネットワークで DHCP クライアントを使う場合は、任意の DNS サーバーを使ったり、その影響を受けたりしないように、必ず静的なネームサーバーを設定するようにしてください。リモート DNS サーバーとの通信を安全にするために、DNS over TLS (RFC 7858) や DNS over HTTPS (RFC 8484) または DNSCrypt などの暗号化プロトコルを使用するとよいでしょう。ただし上流サーバと リゾルバ がこのプロトコルをサポートしていることが条件です。また、stunnel などの通信を暗号化・復号化する専用ソフトを利用する方法もあります。認証付きのサーバー からの応答であることを確認するために、DNSSEC を検証することができます (リゾルバ と上流のサーバの両方がサポートしている場合)
アプリケーションレベルの DNS
主要な Web ブラウザ [2] [3] などの一部のクライアントソフトウェアは、HTTPS 上で DNS を実装し始めていることに注意してください。クエリの暗号化は、しばしばボーナスとみなされるかもしれませんが、それは、ソフトウェアがシステムリゾルバの設定の周りでクエリを横取りすることも意味します[4]
Firefox では、DNS over HTTPS の有効・無効やDNSサーバーを選択するための 設定オプション が提供されています。
Chromium はユーザーのシステムリゾルバを調査し、システムリゾルバのアドレスが DNS over HTTPS も提供することが分かっている場合、DNS over HTTPS を有効にします。詳細と DNS over HTTPS を無効にする方法については、このブログの記事 を参照してください。
Mozilla [5] は、システムリゾルバがドメイン use-application-dns.net を解決できない場合、普遍的にアプリケーションレベル DNS を無効にすることを提案しています。現在のところ、これはFirefoxにのみ実装されています。
Oblivious DNS
Oblivious DNS は、多くの DNS プライバシーの問題に対処するシステムです。詳しくはCloudflare の記事 をご覧ください。
サードパーティの DNS サービス
さまざまな Public recursive name server が利用可能であり、その一部には専用のソフトウェアもあります。
- cloudflared — HTTPS 経由の Cloudflare DNS の DNS クライアント
- dingo — HTTPS 経由の Google DNS の DNS クライアント
- opennic-up — 最も応答性の高い OpenNIC サーバーを使用して、DNS サーバーの更新を自動化します
- nextdns — NextDNS 用の DNS-over-HTTPS CLI クライアント
dnsperftest を使用して、最も一般的な DNS リゾルバのパフォーマンスを自分の場所からテストできます。dnsperf.com は、プロバイダー間のグローバルベンチマークを提供します。
DNS サーバー
DNSサーバーには、authoritative と recursive があります。そのどちらでもない場合、それらは スタブリゾルバ と呼ばれ、単にすべてのクエリーを別の再帰的ネームサーバーに転送するだけである。スタブリゾルバは通常、ローカルホストまたはネットワークに DNSキャッシュを導入するために使用される。同じことが、本格的なネームサーバーでも実現できることに注意してください。このセクションでは、利用可能なDNSサーバーを比較します。より詳細な比較は、Wikipedia:Comparison of DNS server softwareを参照してください。
| 名前 | パッケージ | 機能 | resolvconf | サポートされているプロトコル | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Authoritative | Recursive | Cache | Validates DNSSEC |
DNS | DNSCrypt | DNS over TLS |
DNS over HTTPS |
DNS over QUIC | |||
| BIND | bind | Yes | Yes | Yes | Yes | Yes | Yes | No | Server1 | Server | No |
| CoreDNS | corednsAUR | Yes | No | Yes | No | No | Yes | No | Yes | Yes | No |
| DNS-over-HTTPS | dns-over-https | No | No | No | No | ? | ? | No | No | Yes | No |
| Deadwood (MaraDNS recursor) | maradnsAUR | No | Yes | Yes | No | No | Yes | No | No | No | No |
| dnscrypt-proxy | dnscrypt-proxy | No | No | Yes | No | No | Server | Resolver | No | Yes | ? |
| dnsmasq | dnsmasq | Partial2 | No | Yes | Yes | Yes | Yes | No | No | No | No |
| dnsproxy | dnsproxyAUR | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes |
| Knot Resolver | knot-resolver | No | Yes | Yes | Yes | No | Yes | No | Yes | Server | No |
| pdnsd | pdnsd | Yes | Yes | Permanent | No | Yes | Yes | No | No | No | No |
| PowerDNS Recursor | powerdns-recursor | No | Yes | Yes | Yes | Yes | Yes | No | Partial | No | ? |
| Rescached | rescached-gitAUR | No | No | Yes | No | Yes | Yes | No | Yes | Yes | No |
| RouteDNS | routedns-gitAUR | No | No | Yes3 | No | No | Yes | No | Yes | Yes | Yes |
| SmartDNS | smartdns | No | No | Yes | No | ? | Yes | No | Resolver | Resolver | No |
| Stubby | stubby | No | No | No | Yes | No | Server | No | Resolver | No | No |
| systemd-resolved | systemd | No | No | Yes | Yes | Yes | Resolver and limited server | No | Resolver | No | No |
| Unbound | unbound | Partial | Yes | Yes3 | Yes | Yes | Yes | Server | Yes | Server | No |
- BIND は DNS over TLS と DNS over HTTPS の両方を提供できますが (tls{} と listen-on を参照)、DNS over TLS/DNS over HTTPS アップストリームにクエリを転送することはまだできません。dig ツールは DNS over TLS と DNS over HTTPS (
+tlsと+httpsオプションを使用) でクエリを実行できますが 証明書チェックなし です。 - Wikipediaより: dnsmasq は認証付きのサポートが制限されており、公共のインターネット利用よりもむしろ内部ネットワーク利用を意図しています。
- Redis バックエンドを使用して、Unbound に永続的なキャッシュを提供できます。
認証専用サーバー
| 名前 | パッケージ | DNSSEC | 地理的 バランシング |
|---|---|---|---|
| gdnsd | gdnsd | No | Yes |
| Knot DNS | knot | Yes | Yes |
| MaraDNS | maradnsAUR | No | ? |
| NSD | nsd | No | No |
| PowerDNS | powerdns | Yes | Yes |
条件付き転送
特定のドメイン名を照会するときに、特定の DNS リゾルバを使用することができます。これは、VPN に接続する場合に特に便利です。これにより、VPN ネットワークへのクエリは VPN の DNS によって解決されますが、インターネットへのクエリは引き続き標準の DNS リゾルバによって解決されます。ローカルネットワークでも使用できます。
これを実装するには、ローカル リゾルバ を使用する必要があります。これは、glibc がサポートしていないためです。
動的な環境 (ラップトップやある程度はデスクトップ)では、接続しているネットワーク (複数) に基づいてリゾルバを設定する必要があります。そのための最良の方法は openresolv を使うことです。なぜなら multiple subscribers をサポートしているからです。いくつかの ネットワークマネージャ は openresolv を通して、あるいはリゾルバを直接設定して、これをサポートしています。NetworkManager supports conditional forwarding without openresolv は、openresolv を使わずに条件付き転送をサポートしています。
参照
- Linux Network Administrators Guide
- Debian Handbook
- RFC:7706 - ループバックで動作させることでルートサーバーへのアクセス時間を短縮
- Domain name system overview - DNS に関する図
- 代替 DNS サービス