ドメイン名前解決

提供: ArchWiki
2014年5月26日 (月) 23:46時点におけるKusakata (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

DNS リゾルバの設定ファイルが /etc/resolv.conf です。resolv.conf(5) man ページより:

"resolver は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。 レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。 このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。
"このファイルが存在しない場合、問い合わせはローカルマシン上の ネームサーバに対してのみ行われる。ドメイン名はホスト名から決定され、 ドメインの検索パスはドメイン名から作成される。"

Linux における DNS

(通常は) あなたの使っている ISP が DNS サーバーを提供しており、キャッシュサーバーを持っている場合はルーターに DNS サーバーを追加することができます。DNS サーバーの切り替えは Windows のユーザーにとっては問題になりません、なぜなら DNS サーバーが遅かったり動作していなかったりする場合、すぐに他のサーバーに切り替えられるからです。しかしながら、通常 Linux はタイムアウトに多くの時間をかけるので、遅延が発生する原因となりえます。

変更を加える前に dig (dnsutils パッケージに入っています) を使ってください。下のセクションで調整を行ったらクエリ時間を比較するためにもう一度実行してください:

$ dig www5.yahoo.com

また、ネームサーバを指定することもできます:

$ dig @ip.of.name.server www5.yahoo.com

代替 DNS サーバー

他の DNS サーバーを使うには、/etc/resolv.conf を編集して、一番最初に使われるようにファイルの一番上にサーバーを追加してください。任意で、記載されているサーバーを削除したりコメントアウトすることもできます。

ノート: /etc/resolv.conf への変更はすぐに適用されます。

OpenDNS

OpenDNS はフリーの代替ネームサーバを提供しています:

# OpenDNS nameservers
nameserver 208.67.222.222
nameserver 208.67.220.220

IPv6 サーバーも利用可能です:

nameserver 2620:0:ccc::2
nameserver 2620:0:ccd::2
警告: OpenDNS サーバーはクエリに対して、たとえドメインや DNS レコードが存在していなかったとしても、いつでも IP アドレスを返します。ネットワークの問題をデバッグするときにこれが問題になるかもしれません (OpenDNS ダッシュボードで特定の IP アドレスについてこれを無効にすることができます)。

Google の問題を修正する

OpenDNS は全てのクエリを最初に自身のサーバーに通してルーティングすることで Google の検索をハイジャックします。これによって Google の検索が明らかに遅くなったり、Google の FeelingLucky 機能が使えなくなったりすることがあります。後者の場合、元の挙動に戻す Firefox アドオンが存在します。もっとも賢い解決方法は Google へのクエリを全て ISP の DNS サーバーにリダイレクトすることです。これは dnsmasq を使うことで可能です。

Google

Google のネームサーバを代わりに使うこともできます:

# Google nameservers
nameserver 8.8.8.8
nameserver 8.8.4.4

IPv6 サーバーも利用可能です:

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Comodo

Comodo も IPv4 のセットを提供しており、任意で(無料ではありませんが)ウェブフィルタリングもできます。つまりこの機能は OpenDNS がやっているようにクエリをハイジャックすることを意味しています。

# Comodo nameservers 
nameserver 8.26.56.26 
nameserver 8.20.247.20

DNS 設定の保護

dhcpcd, netctl ,NetworkManager などの様々なプロセスによって /etc/resolv.conf が上書きされることがあります。これは通常は望ましいことですが、場合によっては DNS 設定を手動で設定する時もあります (例: 固定 IP アドレスを使う場合)。DNS 設定を保護する方法は複数存在します。

  • dhcdpcd を使っている場合、下の #dhcpcd 設定の修正 を見て下さい。
  • netctl を使って固定 IP アドレスを割り当てる場合、プロファイルで DNS* オプションは使わないで下さい。このオプションを使うと resolvconf が呼び出されて /etc/resolv.conf が上書きされます。

openresolv を使う

openresolv には resolvconf ユーティリティが入っています。これは複数の DNS 設定を管理するためのフレームワークです。詳しくは man 8 resolvconfman 5 resolvconf.conf を見て下さい。

設定は /etc/resolvconf.conf で行い、resolvconf -u を実行すると /etc/resolv.conf が生成されます。

dhcpcd 設定の修正

dhcpcd の設定ファイルを編集することで dhcpcd デーモンが /etc/resolv.conf を上書きするのを止めることができます。/etc/dhcpcd.conf の最後のセクションに次を加えて下さい:

nohook resolv.conf

または、/etc/resolv.conf.head という名のファイルを作ってあなたの DNS サーバーを記入することができます。dhcpcd はこのファイルを /etc/resolv.conf の先頭に挿入します。

/etc/resolv.conf の書き込み保護

/etc/resolv.conf が何かによって修正されてしまうのを止める他の方法として書き込み保護属性を設定する方法があります:

# chattr +i /etc/resolv.conf

timeout オプションを使ってホスト名の検索時間を減らす

ホスト名の解決にとても長い時間がかかっている場合 (pacman やブラウザで)、短い timeout を設定するとよいかもしれません。これを行うには、/etc/resolv.conf.tail という名前のファイルを作成して次の行を追加してください:

options timeout:1

参照