Ubuntu 16.04 LTS に DNS サーバーをインストールして構成する
この包括的なチュートリアルでは、Ubuntu 16.04 LTS 64 ビット サーバー エディションで DNS サーバーをインストールして構成する方法について説明します。すでにご存知かもしれませんが、DNS は Domain 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 つの部分に分割します。
- キャッシュ専用ネームサーバーをインストールして構成します。
- プライマリ DNS サーバーまたはマスター DNS サーバーのインストールと構成
- セカンダリ 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 をサポートしてください。
乾杯!