⚠️ 記事内に広告を含みます。

resolv.confとは?リゾルバが参照するファイル

resolv.confとは?

resolv.confはスタブリゾルバが参照する設定ファイルです。resolv.confには問い合わせを行うフルリゾルバのアドレスが書かれています

Linuxではresolv.confは「/etc/resolv.conf」にあります。

/etc/hostsファイルを参照して名前解決ができない場合、スタブリゾルバがresolv.confに書かれているネームサーバーを参照して名前解決を要求します。

それでは実際にresolv.confファイルを見てみましょう。

resolv_confファイル

resolv.confファイルをcatコマンドで参照している。nameserverとしてIPv4の192.168.0.1が指定されている。

resolv.confにはnameserverとして3つ登録されています。

スタブリゾルバはホストの/etc/hostsを参照して名前解決ができない場合、resolv.confに記載されているネームサーバーに問い合わせます。

スタブリゾルバはnamedなどの特定のプロセスがあるものではなく、OSが提供しているライブラリ群です(ブラウザなどのアプリケーションはこのライブラリ使ってスタブリゾルバを利用している)。フルリゾルバはBINDなどのミドルウェアを利用することによって自身のホストに構築できます。その場合はnameserverに自身のループバックアドレスを指定しておきます。

外部にフルリゾルバがある時のressolve.confの設定

外部にフルリゾルバがある時のressolve.confの設定 外部のアドレスをresolv.confに設定する

内部にフルリゾルバがある時のressolve.confの設定

内部にフルリゾルバがある時のressolve.confの設定 サーバーは自分のPCに構築することもあり、その場合は自分自身のアドレスがフルリゾルバのアドレスになる。ループバックアドレスは不変なので仮にプライベートアドレスが変わっても変更しなくてよい




resolv.confの書き方、詳細

resolv.confの書式は簡単で3つの項目

  1. nameserver (IPアドレス)
  2. domain  (ドメイン名)
  3. search  (ドメイン名)

があります。

nameserverの項目にはネームサーバーを指定します。この項目は最大3台までのネームサーバーを登録できます。

domainはホスト名を指定して名前解決しようとした際にここで指定したドメイン名を付加して名前解決してくれるようになる設定です。searchにexample.comと設定しておくと、ホスト名hogehogeで名前解決しようとするとhogehoge.example.comで検索してくれます。

searchも同様ですが、ドメイン名を設定できるようです。

参考 Man page of RESOLV.CONF取得できませんでした

resolv.confの初期設定がデフォルトゲートウェイ(ルーター)のアドレスに設定されている理由

resolv.confのアドレスにデフォルトゲートウェイのアドレスが設定されていることが多いです。家庭内のLANなどではDNSなど意識しなくてもインターネットにつながっていますがどうなっているのでしょうか?また、ルーターはフルリゾルバとして機能を持っているのでしょうか?

普通の家庭ではプロバイダが提供するネームサーバーがフルリゾルバで、ルーターは名前解決を中継しているだけのようです。ルーターによっては内部にDNSのキャッシュを残すものもあるようです。このような機能を「DNSフォワーダ」といいます。クライアント側からみるとルーターがフルリゾルバとして働いているように見えますが実際はスタブリゾルバからの名前解決要求をプロバイダが提供するフルリゾルバに渡す中継をしているのです。

フルリゾルバの処理を分散する目的でDNSフォワーダを設置することもあります。通常フルリゾルバは複数のクライアントからの名前解決要求を受けて、権威DNSサーバーへ名前解決の問い合わせる2つの役割を担っています。

DNSフォーワーダを設置することにより複数のクライアントからの名前解決要求を受ける部分を任せることでフルリゾルバの負荷を減少させることができます。

DNSフォワーダを介して負荷分散

DNSフォワーダを介して負荷分散

resolv.confが書き変えられる

resolv.confは再起動するとDCHPクライアントなどによって書き変えられてしまうことがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です