ウェブサイト検索

Ubuntu 16.04 LTS に DNS サーバーをインストールして構成する


この包括的なチュートリアルでは、Ubuntu 16.04 LTS 64 ビット サーバー エディションで DNS サーバーをインストールして構成する方法について説明します。すでにご存知かもしれませんが、DNSDomain name system の短縮形であり、使用されます。ホスト名を IP アドレスに解決したり、その逆に解決したりできます。このガイドでは、3 つのシステムを使用します。1 つはプライマリ DNS サーバー用、もう 1 つはセカンダリ DNS 用、3 つ目は DNS クライアント用です。すべてのシステムは Ubuntu 16.04 オペレーティング システムで実行されています。各システムの IP とホスト名は次のとおりです。

プライマリ DNS サーバー:

  • オペレーティング システム : Ubuntu 16.04 LTS 64 ビット サーバー
  • ホスト名 : pri.ostechnix.lan
  • IP アドレス : 192.168.1.200/24

セカンダリ DNS サーバー:

  • オペレーティング システム : Ubuntu 16.04 LTS 64 ビット サーバー
  • ホスト名 : sec.ostechnix.lan
  • IP アドレス : 192.168.1.201/24

DNS クライアント:

  • オペレーティング システム : Ubuntu 16.04 LTS 64 ビット サーバー
  • ホスト名 : client.ostechnix.lan
  • IP アドレス : 192.168.1.202/24

始めましょう。

Ubuntu 16.04 での DNS サーバーのインストールと構成

簡素化して理解しやすくするために、このガイドを 3 つの部分に分割します。

  1. キャッシュ専用ネームサーバーをインストールして構成します。
  2. プライマリ DNS サーバーまたはマスター DNS サーバーのインストールと構成
  3. セカンダリ DNS サーバーまたはスレーブ DNS サーバーのインストールと構成

段階的にやってみましょう。

パート 1: キャッシュ専用ネームサーバーをインストールして構成する

Ubuntu サーバーが最新であることを確認してください。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

BIND9をインストールする

システムを更新した後、次のコマンドを実行して、DNS サーバーのセットアップに使用される BIND9 パッケージをインストールします。

sudo apt-get install bind9 bind9utils bind9-doc

BIND9をインストールする

キャッシュネームサーバーの構成

キャッシュ ネーム サーバーは、DNS クエリ結果を特定の期間ローカルに保存します。クエリをローカルに保存することで DNS サーバーのトラフィックを削減し、DNS サーバーのパフォーマンスと効率を向上させます。

キャッシュ ネーム サーバーを設定するには、/etc/bind/named.conf.options ファイルを編集します。

sudo nano /etc/bind/named.conf.options

次の行のコメントを解除します。次に、ISP または Google パブリック DNS サーバーの IP アドレスを追加します。

forwarders {
 8.8.8.8;
 };

ファイルを保存して閉じます。

次に、bind9 サービスを再起動して変更を有効にします。

sudo systemctl restart bind9

キャッシュネームサーバーが正常にインストールされました。

キャッシングネームサーバーのテスト

次に、コマンドを使用して動作しているかどうかを確認してみましょう。

dig -x 127.0.0.1

以下のようなものが表示されたら、おめでとうございます。キャッシュネームサーバーは動作しています!

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -x 127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22769
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa. IN PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 604800 IN PTR localhost.

;; AUTHORITY SECTION:
127.in-addr.arpa. 604800 IN NS localhost.

;; ADDITIONAL SECTION:
localhost. 604800 IN A 127.0.0.1
localhost. 604800 IN AAAA ::1

;; Query time: 0 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 15:53:59 IST 2016
;; MSG SIZE rcvd: 132

パート 2: プライマリ DNS サーバーのインストールと構成

次のコマンドを使用して、Ubuntu サーバーが最新であることを確認します。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

BIND9をインストールする

次のコマンドを実行して、BIND9 パッケージをインストールします。

sudo apt-get install bind9 bind9utils bind9-doc

プライマリDNSサーバーの構成

すべての設定ファイルは /etc/bind/ ディレクトリにあります。

bind9設定ファイルを編集しましょう

任意のエディタを使用して「/etc/bind/named.conf」を編集します。

sudo nano /etc/bind/named.conf

このファイルには次の行が含まれている必要があります。行がない場合は、追加してください。

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

変更を保存してファイルを終了します。

順方向ゾーン ファイルと逆方向ゾーン ファイルを定義する必要があります。

これを行うには、named.conf.local ファイルを編集します。

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

以下に示すように、順方向ファイルと逆方向ファイルを定義します。

zone "ostechnix.lan" {
        type master;
        file "/etc/bind/for.ostechnix.lan";
        allow-transfer { 192.168.1.201; };
        also-notify { 192.168.1.201; };
 };
zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/rev.ostechnix.lan";
        allow-transfer { 192.168.1.201; };
        also-notify { 192.168.1.201; };
 };

ここで、for.ostechnix.lan はフォワード ゾーン ファイルです。 rev.ostechnix.lan はリバース ゾーン ファイルです。 192.168.1.202 はセカンダリ DNS サーバーの IP アドレスです。これを行うのは、プライマリ サーバーがダウンした場合にセカンダリ DNS がクエリのフェッチを開始するためです。

ファイルを保存して閉じます。

前のステップで定義したゾーン ファイルを作成しましょう。

まず、以下に示すようにフォワードゾーンファイルを作成しましょう。

sudo nano /etc/bind/for.ostechnix.lan

次の行を追加します。

$TTL 86400
@   IN  SOA     pri.ostechnix.lan. root.ostechnix.lan. (
        2011071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          pri.ostechnix.lan.
@       IN  NS          sec.ostechnix.lan.
@       IN  A           192.168.1.200
@       IN  A           192.168.1.201
@       IN  A           192.168.1.202
pri     IN  A           192.168.1.200
sec     IN  A           192.168.1.201
client  IN  A           192.168.1.202

同様に、上記のファイルで定義されているように、他のクライアント レコードを追加できます。

ファイルを保存して閉じます。次にリバースゾーンを作成します。

sudo nano /etc/bind/rev.ostechnix.lan

次の行を追加します。

$TTL 86400
@   IN  SOA     pri.ostechnix.lan. root.ostechnix.lan. (
        2011071002  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          pri.ostechnix.lan.
@       IN  NS          sec.ostechnix.lan.
@       IN  PTR         ostechnix.lan.
pri     IN  A           192.168.1.200
sec     IN  A           192.168.1.201
client  IN  A           192.168.1.202
200     IN  PTR         pri.ostechnix.lan.
201     IN  PTR         sec.ostechnix.lan.
202     IN  PTR         client.ostechnix.lan.

ファイルを保存して閉じます。

bind9 ディレクトリに適切な権限と所有権を設定します。

sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind

次に、DNS 構成ファイルとゾーン ファイルを確認する必要があります。

次のコマンドを使用して DNS 構成ファイルを確認します。

sudo named-checkconf /etc/bind/named.conf
sudo named-checkconf /etc/bind/named.conf.local

上記のコマンドが何も返さない場合は、DNS 構成が有効であることを意味します。

次に、次のコマンドを使用してゾーン ファイルを確認します。

sudo named-checkzone ostechnix.lan /etc/bind/for.ostechnix.lan

サンプル出力:

zone ostechnix.lan/IN: loaded serial 2011071001
OK

逆引きゾーン ファイルを確認します。

sudo named-checkzone ostechnix.lan /etc/bind/rev.ostechnix.lan

サンプル出力:

 zone ostechnix.lan/IN: loaded serial 2011071002
OK

上記のような結果が得られた場合は、すべて問題ありません。

次に、プライマリ DNS サーバーが動作しているかどうかを確認します。

/etc/network/interfaces ファイルを編集します。

sudo vi /etc/network/interfaces

DNSサーバーのIPアドレスを追加します。この場合、DNS サーバーの IP はこのマシン自体の IP アドレスと同じです。

dns-nameservers 192.168.1.200

ファイルを保存して閉じます。

最後に、Bind9 サービスを再起動します。

sudo systemctl restart bind9

プライマリDNSサーバーのテスト

dig または nslookup コマンドを使用して DNS サーバーを確認します。

dig pri.ostechnix.lan

サンプル出力:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> pri.ostechnix.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51989
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;pri.ostechnix.lan. IN A

;; ANSWER SECTION:
pri.ostechnix.lan. 86400 IN A 192.168.1.200

;; AUTHORITY SECTION:
ostechnix.lan. 86400 IN NS sec.ostechnix.lan.
ostechnix.lan. 86400 IN NS pri.ostechnix.lan.

;; ADDITIONAL SECTION:
sec.ostechnix.lan. 86400 IN A 192.168.1.201

;; Query time: 0 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 16:56:13 IST 2016
;; MSG SIZE rcvd: 110

または、以下に示すように nslookup コマンドを使用します。

nslookup ostechnix.lan

サンプル出力:

Server: 192.168.1.200
Address: 192.168.1.200#53

Name: ostechnix.lan
Address: 192.168.1.200
Name: ostechnix.lan
Address: 192.168.1.201
Name: ostechnix.lan
Address: 192.168.1.202

上記のような結果が得られた場合、プライマリ DNS サーバーは稼働しており、完全に動作しています。

パート 2: セカンダリ DNS サーバーのインストールと構成

このサーバーをセットアップするには別のシステムが必要です。プライマリ DNS に問題が発生した場合でも、セカンダリ DNS サーバーがクエリを解決するため、セカンダリ DNS サーバーが必要です。

まず、コマンドを使用してサーバーを更新します。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

BIND9をインストールする

必要なbind9パッケージをインストールします。

sudo apt-get install bind9 bind9utils bind9-doc

セカンダリDNSサーバーを構成する

bind9 設定ファイルを編集します。

sudo nano /etc/bind/named.conf

次の行が存在しない場合は追加します。

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

ファイルを保存して閉じます。

次に、ゾーン ファイルを定義する必要があります。

これを行うには、named.conf.local ファイルを編集します。

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

次の行を追加または変更します。 IP アドレスとゾーン ファイルを独自の値に置き換えます。

zone "ostechnix.lan" {
        type slave;
        file "/var/cache/bind/for.ostechnix.lan";
        masters { 192.168.5.200; };
 };
zone "1.168.192.in-addr.arpa" {
        type slave;
        file "/var/cache/bind/rev.ostechnix.lan";
        masters { 192.168.5.200; };
 };

ここで、192.168.1.200 はプライマリ DNS サーバーの IP アドレスです。

ゾーン ファイルのパスは /var/cache/bind/ ディレクトリである必要があることに注意してください。これは、AppArmor がデフォルトで内部への書き込みアクセスのみを許可しているためです。

次に、バインド ディレクトリに適切なアクセス許可と所有権を設定します。

sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind

次に、ネットワーク構成ファイルを編集し、プライマリおよびセカンダリ DNS サーバーの IP アドレスを追加します。

sudo nano /etc/network/interfaces
[...]
dns-nameservers 192.168.1.200
dns-nameservers 192.168.1.201

ファイルを保存して閉じます。

最後に、システムを再起動してすべての変更を有効にします。

セカンダリDNSサーバーのテスト

すでに述べたように、DNS サーバーをテストするには「dig」または「nslookup」コマンドを使用します。

次のコマンドを使用してセカンダリ DNS サーバーを確認してみましょう。

dig sec.ostechnix.lan

サンプル出力:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> sec.ostechnix.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49308
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sec.ostechnix.lan. IN A

;; ANSWER SECTION:
sec.ostechnix.lan. 86400 IN A 192.168.1.201

;; AUTHORITY SECTION:
ostechnix.lan. 86400 IN NS sec.ostechnix.lan.
ostechnix.lan. 86400 IN NS pri.ostechnix.lan.

;; ADDITIONAL SECTION:
pri.ostechnix.lan. 86400 IN A 192.168.1.200

;; Query time: 2 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 18:19:47 IST 2016
;; MSG SIZE rcvd: 110

同様に、次のコマンドを使用してプライマリ DNS サーバーを確認できます。

dig pri.ostechnix.lan

または、以下に示すように nslookup コマンドを使用します。

nslookup ostechnix.lan

注: ゾーン ファイルは、プライマリ DNS サーバーのシリアル番号がセカンダリ DNS サーバーのシリアル番号より大きい場合にのみ転送されることに注意してください。

DNSクライアントの設定

クライアント システムでネットワーク構成ファイルを編集します。

sudo nano /etc/network/interfaces

ネームサーバーの IP アドレスを追加します。

[...]
nameserver 192.168.1.200
nameserver 192.168.1.201

ファイルを保存して閉じます。次に、システムを再起動して変更を有効にします。

次のコマンドのいずれかを使用して DNS サーバーをテストします。

dig pri.ostechnix.lan
dig sec.ostechnix.lan
dig client.ostechnix.lan
nslookup ostechnix.local

この段階では、プライマリ DNS サーバーとセカンダリ DNS サーバーが動作するようになります。

それは今のところすべてです。このガイドが役立つと思われた場合は、ソーシャル ネットワークで共有し、OSTechNix をサポートしてください。

乾杯!

関連記事