ウェブサイト検索

Ubuntu Server 14.04 でのキャッシュ DNS サーバーのセットアップ


ドメイン ネーム サービス (DNS) は、IP アドレスと完全修飾ドメイン名を相互にマッピングするネーミング サービスです。 DNS を実行するコンピュータはネーム サーバーと呼ばれます。

ここでは、フォワーダー、前方参照、および予約ルックアップを使用してキャッシュ サーバーをインストールおよび構成しました。ほとんどの場合、予備の検索が必要です。キャッシュ サーバーはドメイン名を保持せず、ポインティング サーバーとしてのみ機能します。詳細に進む前に、DNS サーバーとその仕組みについて知る必要があります。

DNSとは何ですか?

ここでは、DNS とその仕組みを理解する簡単な方法を紹介します。

ブラウザで linux-console.net にアクセスする必要がある場合、システムは linux-console.net を検索します。 .com の最後に (.) がありますが、これは何ですか?

(.) は名前空間のルート サーバーを表し、世界中で合計 13 個のルート サーバーが利用可能です。 linux-console.net にアクセスすると、オペレーティング システムの設定に従ってサーバーに名前を付けるように求められます。 Ubuntu では、/etc/resolv.conf でネーム サーバーを構成していましたが、linux-console.net にアクセスしているときに、ルート ネーム サーバーが設定されていない場合、ブラウザはルート ネーム サーバーに問い合わせます。リクエストされたドメイン情報があると、リクエストされた情報がキャッシュされ、リクエストが (TLD) トップレベル ドメイン ネームサーバーに転送されます。TLD ネームサーバーであっても、リクエストは転送されません。利用可能な場合はキャッシュされ、権限のある ネームサーバーに転送されます。

ドメイン登録中に、ドメイン登録担当者は、ドメインがどの権威ネームサーバーを使用するかを定義します。したがって、権威ネームサーバーは私たちのドメイン情報を持っており、私たちのリクエストがANSに到達すると、ANSはlinux-console.net111.111.222.1を持っていると同時にクエリに対して応答します。権威ネームサーバーにキャッシュされ、リクエストをブラウザに送り返します。上記のすべての手順はミリ秒以内に実行されます。

DNS とは何か、そしてそれがどのように機能するか理解できたと思います。次に、Ubuntu Server 14.04 LTS でキャッシュDNS サーバーを設定しましょう。

ステップ 1: DNS サーバーのインストール

まず、この記事の目的で使用する静的 IP アドレスやホスト名などのローカル DNS サーバー情報を確認します。

IP Address:	192.168.0.100
Hostname:	dns.tecmintlocal.com

上記の設定が正しいことを確認するには、「hostnamectl」コマンドと「ifconfig」コマンドを使用します。

hostnamectl
ifconfig eth0 | grep inet

次に、DNS キャッシュ サーバーをセットアップする前に、デフォルト リポジトリを更新し、システム アップグレードを実行します。

sudo apt-get update && sudo apt-get upgrade -y

ここで、次のコマンドを使用して DNS パッケージ binddnsutils をインストールします。

sudo apt-get install bind9 dnsutils -y

DNS をインストールしたら、/etc/bind の下のバインド設定ディレクトリに移動します。

/etc/bind/
ls -l

ステップ 2: DNS キャッシュ サーバーの設定

まず、ここでキャッシュサーバーをセットアップして構成します。 vim エディタを使用してファイル named.conf.options を開いて編集します。

sudo vim named.conf.options

ここで、「フォワーダー」という単語は、ドメイン名リクエストをキャッシュするために使用されています。したがって、ここではルーターをフォワーダーとして使用します。図に示すように、行の前にある // のコメントを解除します。

forwarders {
        192.168.0.1;
        };

wq! を使用してファイルを保存して終了します。ここで、小規模なテストのためにバインド サーバーを起動します。

sudo /etc/init.d/bind9 start

キャッシュが機能するかどうかをテストする必要がある場合は、dig コマンド を使用して、キャッシュが機能しているかどうかを確認できます。

たとえば、今から ubuntu.com を掘ろうとします。最初はキャッシュされないため、数ミリ秒かかる場合がありますが、キャッシュされると超高速になります。

dig @127.0.0.1 ubuntu.com

dig コマンドは、DNS ルックアップのためのツールです。 Dig コマンドの詳細については、以下のトピックをお読みください。

  1. 10 の便利な Dig コマンドの例

ここで、上の画像を見ると、最初の発掘時にクエリに 1965 ミリ秒かかったことがわかり、どの IP アドレスが ubuntu.com にバインドされているかがわかります。

もう 1 回調査して、クエリ時間を確認してみましょう。

すばらしいですね。2 回目の試行では、5 ミリ秒以内にクエリを取得できました。キャッシュサーバーとは何かを理解していただければ幸いです。上の画像は、何百万もの人々がすでに Ubuntu 公式サイトにアクセスしているため、合計 13 のルート サーバーが Ubuntu.com をキャッシュしていることを示しています。

ステップ 3: マスター DNS サーバーの設定

MASTER DNS サーバーを作成します。ここではドメイン名を tecmintlocal.com として定義し、vim エディターを使用してファイル named.conf.local を編集します。

sudo vim /etc/bind/named.conf.local

以下に示すように、DNS マスター エントリを入力します。

zone "tecmintlocal.com" {
        type master;
        file "/etc/bind/db.tecmintlocal.com";
        };
    1. ゾーン: ドメイン内のホストの詳細

.

  1. タイプ: マスター DNS。
  2. ファイル: ゾーン情報を保存する場所。

db.local からコピーを作成して、ゾーン ファイル db.tecmintlocal.com (前方参照) を作成します。

sudo cp db.local db.tecmintlocal.com

次に、vim エディターを使用して、コピーしたゾーン ファイルを開いて編集します。

sudo vim db.tecmintlocal.com

次に、チュートリアルの目的で使用した次のサンプル エントリを追加します。他の仮想マシンのセットアップにも同じものを使用します。要件に応じて以下のエントリを変更します。

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     tecmintlocal.com. root.tecmintlocal.com. (
                     2014082801         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.tecmintlocal.com.
ns      IN      A       192.168.0.100

clt1    IN      A       192.168.0.111
ldap    IN      A       192.168.0.200
ldapc   IN      A       192.168.0.211
mail    IN      CNAME   clt1.tecmintlocal.com.

wq! を使用してファイルを保存して終了します。

最後に、以下のコマンドを使用してバインド DNS サービスを再起動します。

 
sudo service bind9 restart

上記のゾーン設定が機能するかどうかを確認する必要があります。 dig コマンドを使用して確認してみましょう。 localhost クエリから次のようにコマンドを実行します。

dig @127.0.0.1 mail.tecmintlocal.com

ping を実行して clt1.tecmintlocal.com をテストしましょう。その前に、DNS サーバー マシンの dns-server エントリを localhost に変更し、ネットワークを再起動して有効にする必要があります。 。

ネットワーク インターフェイス設定を開いて編集し、DNS エントリを入力します。

sudo vim /etc/network/interfaces

インターフェースのDNSエントリーを以下のように変更します。

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1
        network 192.168.0.0
        broadcast 192.168.0.255
        dns-nameservers 127.0.0.1
	    dns-search tecmintlocal.com

エントリを追加した後、次のコマンドを使用してネットワークを再起動します。

sudo ifdown eth0 && sudo ifup eth0

ネットワークを再起動しても有効にならない場合は、再起動する必要があります。ここで、clt1.tecmintlocal.com に ping を実行してチェックしてみましょう。応答中に、ホスト名 clt1 に対して定義した IP アドレスを取得する必要があります。

ping clt1.tecmintlocal.com -c 3

DNS 逆引き参照の設定

もう一度ファイル named.conf.local を開いて編集します。

sudo vim /etc/bind/named.conf.local

ここで、次のように逆引き DNS ルックアップ エントリを追加します。

zone "0.168.192.in-addr.arpa" {
        type master;
        notify no;
        file "/etc/bind/db.tecmintlocal192";
        };

wq! を使用してファイルを保存して終了します。次に、逆引き参照用に上記のマスター ファイルで説明したように、db.tecmintlocal192 ファイルを作成し、db.127db.tecmintlocal192< にコピーします。 次のコマンドを使用します。

sudo cp db.127 db.tecmintlocal192

次に、ファイル db.tecmintlocal192 を開いて編集し、逆引き参照を設定します。

sudo vim db.tecmintlocal192

以下のように次のエントリを入力し、要件に応じて以下のエントリを変更します。

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.tecmintlocal.com. root.tecmintlocal.com. (
                        2014082802      ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
100     IN      PTR     ns.tecmintlocal.com.

111     IN      PTR     ctl1.tecmintlocal.com.
200     IN      PTR     ldap.tecmintlocal.com.
211     IN      PTR     ldapc.tecmintlocal.com.

を使用してバインド サービスを再起動します。

ここで、予約ルックアップ エントリを確認します。

host 192.168.0.111

上に示すように IP アドレスを使用して逆引き参照を実行しますが、上の画像に示すように名前で応答する必要があります。

同様にdigコマンドを使って確認してみましょう。

dig clt1.tecmintlocal.com

ここでは、ドメイン名 clt1.tecmintlocal.com の IP アドレス が、回答セクションのクエリに対する回答 であることがわかります。 192.168.0.111です。

ステップ 4: クライアントマシンの設定

クライアント マシンの IP アドレスと DNS エントリをローカル DNS サーバー 192.168.0.100 に変更するだけです。その場合、クライアント マシンにはローカル DNS サーバーからホスト名が割り当てられます。

次の一連のコマンドを使用して、クライアントのホスト名を確認してみましょう。

ifconfig eth0 | grep inet
hostname	
dig -x 192.168.0.100

DNS のゾーン ファイル エントリを理解する。この画像は、ゾーン ファイル エントリで定義した内容を簡単に説明します。

それでおしまい!この記事では、オフィスまたは家庭で使用するローカル DNS サーバーをセットアップする方法について説明しました。

さまざまなツールを使用して DNS サーバーのトラブルシューティングを行い、修正する方法についての記事をすぐに読むことができます。 DNS サーバーのトラブルシューティングに使用できるツールは数多くあります。トラブルシューティングのヒントについては、以下の記事をお読みください。

DNS トラブルシューティングのための 8 つの Nslookup コマンド