# Resolv.conf (日本語)

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` を編集して、一番最初に使われるようにファイルの一番上にサーバーを追加してください。任意で、記載されているサーバーを削除したりコメントアウトすることもできます。

Note: `/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

Warning: 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 resolvconf` や `man 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

## 参照

- OpenNIC Alternative DNS Installer

Category:

- Domain Name System (日本語)