ホーム >  Linux >  Linuxのリゾルバとは何か?(/etc/resolv.conf )

投稿日:   |  最終更新日:

Linuxのリゾルバとは何か?(/etc/resolv.conf )

Linuxネットワーク

リゾルバは、ネットワークに関するプログラムです。Linuxをサーバ利用する人は目にする機会が多いと思います。

リゾルバとは?

リゾルバ(あるいはレゾルバ)とは、クライアント側のプログラムです。DNSサーバへドメイン名を照会し、対応するIPアドレスを調べます。またその逆に(IPアドレス→ドメイン名)を調べたりするソフトウェアです。

リゾルバの特徴

  • Cライブラリのルーチン群
  • リゾルバの設定ファイルにネームサーバ(DNSサーバ)のIPアドレスを記述
  • リゾルバの設定ファイルには、起動されたときに読み込まれる情報が記述されている
  • searchや、domainを設定すると、デフォルトのルートドメインを指定可能

リゾルバの種類

リゾルバは、大きく分けて2つにわけることができます。

スタブリゾルバ (stub resolver)

DNSサーバへの問い合わせを生業にしているプログラムです。フルサービスリゾルバへ問い合わせを行い、結果を取得したり表示したりするだけのものです。「/etc/resolv.conf」は、これにあたります。

スタブリゾルバは、DNSの階層構造に合わせて最上位から再帰的に問い合わせる能力はありません。

利用者が必要とするドメイン名を、DNSキャッシュサーバ(フルサービスリゾルバ)へ問い合わせます。応答を受け取ってIPアドレスを返答します。

利用者(われわれ)側のコンピュータで実装されるリゾルバは通常このスタブリゾルバです。インターネット接続事業者などが運用するDNSキャッシュサーバ(フルサービスリゾルバ)へ問い合わせを行って名前解決を行います。

フルサービスリゾルバ (full-service resolver)

単体でDNSによる再帰的な問い合わせを繰り返し、自力ですべてのドメイン名の名前解決を行なうことができるリゾルバです。

ドメイン名やDNSサーバは階層構造で管理されています。

①ある特定のホスト名の問い合わせを行うには、世界の十数ヶ所に設置された最上位のルートサーバ(root server)にトップレベルドメイン(.jpや.comなど)のDNSサーバ(権威DNSサーバ)の所在を訪ねます。

②トップレベルドメインのDNSサーバに、セカンドレベルドメインのDNSサーバの所在を訪ねます。

これらの手順を繰り返し、最下層の個別ドメインのDNSサーバから対応するIPアドレスの情報を聞き出します。

この再帰的な問い合わせをして、自らの力で名前解決できるものをフルサービスリゾルバと呼びます。

個々のユーザのコンピュータがこれを用いるのは、非効率で上位ドメインのサーバの負荷が大きすぎます。そのため、通常はネットワーク事業者などが設置するDNSキャッシュサーバと呼ばれるDNSサーバのみがこの機能を持ちます。クライアント側のプログラムは、キャッシュサーバへ名前解決を依頼するだけという運用が一般的です。


resolv.confの書き方

「/etc/resolv.conf」は、自分のマシンが利用するDNSサーバの情報(IPアドレス)を記述します。基本的には,以下の設定があります。

  nameserver ネームサーバのIPアドレス
  domain     ドメイン名
  search     検索リスト

※「nameserver」は、必ず記述する必要があります。

参考:→UNIX における DNS (リゾルバ) の利用方法

ここで言うネームサーバとは、DNSサーバと同義です。ネームサーバーは、インターネット上でドメインとWebサーバやメールサーバを結びつけるための名前解決をするためのサーバです。

基本的な書き方

例)①「nameserver」で学内向けDNSホストのIPアドレスを指定します。

②domainで自ホストが所属するドメイン (この例では st.ryukoku.ac.jp) を指定します。

#
# sample /etc/resolv.conf file
# 
nameserver  133.83.1.3
nameserver  133.83.1.5
domain      st.ryukoku.ac.jp

※ハッシュ記号(#)を行頭に書くと、その行はコメントアウトになります。

domainとsearchの違い

domain

以下では「telnet hogehoge 」というコマンドを入力してリゾルバを実行した場合を例にとって説明します。

①ドメインに「domain st.ryukoku.ac.jp」と指定します。

#
# sample /etc/resolv.conf file
# 
nameserver  133.83.y.xx
domain st.ryukoku.ac.jp

②「telnet hogehoge」コマンドを実行します。

以下のホストのIPアドレスを検索します。

hogehoge.st.ryukoku.ac.jp

このホストがみつからない場合、hogehogeのIP アドレスを検索します。それでも見つからない場合はエラーを返します。

search

一方、searchを指定した場合です。

①以下のようにsearchを指定します。

search st.ryukoku.ac.jp math.ryukoku.ac.jp elec.ryukoku.ac.jp

以下のような順番で検索してくれます。

hogehoge.st.ryukoku.ac.jp
hogehoge.math.ryukoku.ac.jp
hogehoge.elec.ryukoku.ac.jp


まとめ

「domain st.ryukoku.ac.jp」と設定した場合、 「hoge.math.ryukoku.ac.jp」に「telnet」したいときは以下のように長々と入力する必要があります。

telnet hoge.math.ryukoku.ac.jp 

「search …」の場合は「telnet hoge」コマンドだけで済みます。 となると「search にどんどんドメインを書いちゃえ」といきたいところですが、 通常searchに書けるドメインは6つまでです。


Ubuntuの初期設定

自分が使っているPC(ubuntu)は、一切設定をしておりません。試しに「/etc/resolv.conf」を開いたら以下のような結果でした。

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search xxx.ne.jp

※「xxx.ne.jp」は、自宅で経営しているプロバイダのドメインです。特に手を加えていませんが、自動的に設定されていました。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告