SOHO用のイントラネット用DNSサーバーの構築方法について、暫定的ながら投稿いたします。なお、インターネット用サーバーについてはセキュリティ上、詳しい知識が必要になります。
【1】前提条件
①SOHO用DNSサーバーで、ドメイン名はit-ishin.com
②5台のUbuntuサーバーを設置し、それぞれのサーバーのホスト名はubuntu01、ubuntu02、ubuntu03、ubuntu04、www。ubuntu01をDNSサーバーとし、アドレスは192.168.1.2。www.it-ishin.comはインターネットサーバーとして使用。
③ubuntuは14.04LTS。サーバー版をデスクトップ化したものもあれば、デスクトップ版から$ sudo apt-get remove network-managerで、/etc/network/interfacesをいじれるようにしたものもあります。
④ルーターのアドレスは192.168.1.1。NTT東日本のフレッツマンションタイプ用のルーターです。
取り敢えず、こんな環境ですが、実際はUbuntuマシン。ルーターはフレッツ光マンションタイプ用のもの(住友電工製)で、レーザープリンターは有線ですが、無線LAN(有線のものは何故か、高い)インクジェット複合機(ブラザー製)はDNSサーバー(メインマシン)にUSBケーブルで接続し、他のマシンには無線LANのUSBタイプの子機をつけています。バッファロー製、プラネックス製のものですが、自動的に認識してくれます。取り敢えず、/etc/network/interfacesにauto wlan0の行を挿入し、DHCPで動作させています。
【2】bind9の導入
基本的には、$ sudo apt-get install bind9 bind9utilsとなります。 インストールすると/etc/bindのディレクトリにひな形の設定ファイルができます。
【3】SOHO用DNSサーバーの設定
①大もとのnamed.confの設定
// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; # include "/etc/bind/named.conf.default-zones"; include "/etc/bind/named.conf.internal-zones";
named.conf.internal-zonesにSOHO用の設定を書き込みます。
②named.conf.internal-zonesの設定
# 内部向けの定義を記述 view "internal" { # 指定範囲内のホストが内部向けの定義を参照 match-clients { localhost; 192.168.1.0/24; }; # 内部向け正引き情報を定義 zone "it-ishin.com" { type master; file "/etc/bind/it-ishin.com.lan"; allow-update { none; }; }; # 内部向け逆引き情報を定義 *注 zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/1.168.192.db"; allow-update { none; }; }; include "/etc/bind/named.conf.default-zones"; };
SOHO内部向け正引き情報はit-ishin.com.lanに設定、逆引き情報は1.168.192.dbに設定します。
③正引き情報it-ishin.com.lanの設定
$TTL 86400 @ IN SOA ubuntu01.it-ishin.com. root.it-ishin.com. ( 2014041801 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS ubuntu01.it-ishin.com. IN A 192.168.1.2 ubuntu01 IN A 192.168.1.2 ubuntu02 IN A 192.168.1.3 ubuntu03 IN A 192.168.1.4 ubuntu04 IN A 192.168.1.6 www IN A 192.168.1.5 www2 IN A 192.168.1.5 mail IN A 192.168.1.5
インターネットサーバーはApacheのバーチャルホスト機能を使い、postfixとdevcotを使った簡易メールサーバーとしても利用しています。
④逆引き情報ファイル1.168.192.dbの設定
$TTL 86400 @ IN SOA ubuntu01.it-ishin.com. root.it-ishin.com. ( 2014041801 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS ubuntu01.it-ishin.com. IN PTR it-ishin.com. IN A 255.255.255.0 2 IN PTR ubuntu01.it-ishin.com. 3 IN PTR ubuntu02.it-ishin.com. 4 IN PTR ubuntu03.it-ishin.com. 6 IN PTR ubuntu04.it-ishin.com. 5 IN PTR www.it-ishin.com.
⑤検証
$ sudo service bind9 restartでbind9を新しい設定で起動します。次に正引きをdig www.it-ishin.com、逆引きをdig -x 192.168.1.5で検証します。
michiaki@ubuntu01:/etc/bind$ dig www.it-ishin.com ; <<>> DiG 9.9.5-3-Ubuntu <<>> www.it-ishin.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER< ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;x. IN A ;; AUTHORITY SECTION: . 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014051101 1800 900 604800 86400 ;; Query time: 814 msec ;; SERVER: 192.168.1.2#53(192.168.1.2) ;; WHEN: Mon May 12 08:32:32 JST 2014 ;; MSG SIZE rcvd: 105
michiaki@ubuntu01:/etc/bind$ dig www.it-ishin.com <<>> DiG 9.9.5-3-Ubuntu <<>> -x 192.168.1.5 ;; global options: +cmd ;; Got answer: ;; ->>HEADER< ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: ; udp: 4096 ;; QUESTION SECTION: ;5.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 5.1.168.192.in-addr.arpa. 86400 IN PTR www.it-ishin.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS ubuntu01.it-ishin.com. ;; ADDITIONAL SECTION: ubuntu01.it-ishin.com. 86400 IN A 192.168.1.2 ;; Query time: 1 msec ;; SERVER: 192.168.1.2#53(192.168.1.2) ;; WHEN: Mon May 12 08:33:40 JST 2014 ;; MSG SIZE rcvd: 122
これで、取り敢えず動作しますが、/etc/resolov.confのnameserverの先頭は192.168.1.2、次に外部向けの192.168.1.1を設定しておく必要があります。なお、Wordpressを使った場合、Apacheのモジュールmod_rewrite.soを使っているせいか内部LAN環境ではWordpressが内部用のDNSサーバーにアクセスできなくなる場合があります。その場合は、/etc/hostsにWordpressのIPアドレスを設定しておく必要があります。
今後、KVMを使って1台のUbuntuマシンに複数のVPSサーバーを構築することから始めて、負荷分散や代表的なIaaSであるOpenStackの勉強をする予定でいます。