例えばLAN内からLAN内にあるサーバーのサイトを確認したいとき、いちいちIPアドレスを打ち込まなくてはいけません。Windowsだとhostsに書き込めば解決しますが、スマホではそうも行きません。
これを解決するためにはDNSサーバーを構築して名前解決をする必要があります。そこで登場するのがBIND9というソフト。これを使ってサクッとLAN内向けDNSサーバーを構築してみましょう。
実は以前も挑戦したことがあるのですが、全く刃が立たず挫折した苦い思い出があります。
まぁ、前回も今回の再挑戦もコバヤシがうるさく薦めてくるからやってみるか、という程度なんですけども
今回サーバーに使うのはUbuntuServer14.04、ドメインはpcok.jpで、ルーターのIPアドレスには192.168.0.1、サーバーには192.168.0.72が割り振られています。
ご自分の環境に合わせて読み替えてくださいね。
また、設定の難しいBIND9を攻略するために、bind9によるlan向けdnsサーバの構築 – debian etch で自宅サーバ様が非常に参考になりました。ありがとうございます。
それでは早速セットアップしていきましょー。
まずはインストール
sudo apt-get install bind9
インストールできたら設定ファイルの変更です。
まずは/etc/resolv.conf
nameserver 127.0.0.1
domain pcok.jp
search pcok.jp
これでDNSサーバーとドメイン名、ドメインリストが設定できました。
続いて/etc/bind/named.conf.options
acl localnet {
192.168.0.0/24;
127.0.0.1;
};options {
directory “/var/cache/bind”;// LAN内部(localnet)からの問い合わせのみ許可
allow-query { localnet; };// セカンダリDNSサーバーがないので転送しない
allow-transfer { none; };// 自ドメイン以外はルータへ
forwarders { 192.168.0.1; };
forward only;auth-nxdomain no;
};
LAN内のIPアドレスはまとめてlocalnetと定義しています。
IPv4しか使っていないので、IPv6の設定は削除。
続いて/etc/bind/named.conf
include “/etc/bind/named.conf.options”;
include “/etc/bind/named.conf.local”;view “local” {
include “/etc/bind/named.conf.default-zones”;
match-clients { localnet; };
zone “pcok.jp” {
type master;
file “/etc/bind/pcok.jp.zone”;
};zone “0.168.192.in-addr.arpa” {
type master;
file “/etc/bind/pcok.jp.rev”;
};
};
こんな感じ。太字の部分はデフォルトで入っている設定です。viewステートメントを使って名前解決を行うゾーンをまとめて定義しているのですが、その際include “/etc/bind/named.conf.default-zones”;をviewステートメントに入れていないとダメだと怒られました。
pcok.jpからの正引き用設定と、192.168.0.Xからの逆引き用設定を追記しています。192.168.0.Xというネットワークであれば、0.168.192.in-addr.arpaとなります。192.168.1.Xであれば1.168.192.~となります。
で、それぞれ設定ファイルを読み込ませることになっているので、まずは正引き用の/etc/bind/pcok.jp.zoneから
$TTL 86400
@ IN SOA pcok.jp. root.pcok.jp. (
2014012301 ;シリアル番号
3600 ;リフレッシュ間隔
900 ;リトライ間隔
604800 ;ゾーンデータの有効時間
86400 ;ネガティブキャッシュの有効時間
)IN NS pcok.jp. ;ネームサーバー
IN MX 10 pcok.jp. ;メールサーバー
IN A 192.168.0.72 ;ウェブサーバー
ns IN A 192.168.0.72 ;ネームサーバー
mail IN A 192.168.0.72 ;メールサーバー
タブが消えて見難い…。
$TTL 86400ではリソースキャッシュの有効時間を設定しています。この場合は24時間。
続いて二行目、ゾーンを管理するサーバーと管理者のメールアドレスを記入します。ドメインの後にピリオドが必要なことに注意。また、@もピリオドに変えます。
三行目のシリアル番号は、YYYYMMDDNN形式で記入します。何でも良さそうなので、設定を書いた日時を書いておきました。
それ以下はコメントで書いてある通りの設定です。この数値が一般的なものだそうなので、真似しておきました。
最後の五行はホスト名とそれに対応するIPアドレスを設定しています。ちなみにうちでは全部まとめてpcok.jpです。
続いて逆引き/etc/bind/pcok.jp.rev
$TTL 86400
@ IN SOA pcok.jp. root.pcok.jp. (
2014012301
3600
900
604800
86400
)IN NS pcok.jp.
72 IN PTR pcok.jp.
ほぼ一緒。逆引きでもネームサーバーは定義しておきます。
一番最後の行ではローカルIPとそれに対応するホスト名を書きます。
192.168.0.72というIPアドレスなので72となっています。
これで設定は終了なのですが、bindを再起動する前に設定ファイルのテストをしておきましょう。
sudo named-checkconf /etc/bind/named.conf
でなにも言われなければ問題ありません。
では最後に、
sudo service bind9 restart
でサーバーの設定は終了です。
あ、DNSサーバー用のポートも開放しておきましょう。
sudo ufw allow 53
これでほんとに終了。
が、この状態ではまだDNSサーバーとして利用することが出来ません。
ルーターの設定が必要ですね。
我が家のルーターはAterm WH822Nという製品になります。これを例に説明すると、設定画面のDNSv4ルーティング設定を開き、「追加」をクリック。
宛先ドメイン名は取得したドメイン(pcok.jp)、指定方法を「ゲートウェイ」、ゲートウェイとプライマリDNSにDNSサーバーのIPアドレス(192.168.0.72)を記入して完了です。
ここまでやると、WindowsやスマホなどのLAN内の機器からドメイン名を使ってアクセスできるようになります。楽しい!
というわけで、思ったより簡単にDNSサーバーを構築することが出来ました。先人に感謝ですね。