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.netが111.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 パッケージ bind と dnsutils をインストールします。
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 コマンドの詳細については、以下のトピックをお読みください。
- 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";
};
- ゾーン: ドメイン内のホストの詳細
.
- タイプ: マスター DNS。
- ファイル: ゾーン情報を保存する場所。
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.127 を db.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 コマンド