BINDで内向きDNS
内向きDNS
内向きDNSとは内部ネットワーク向けのDNSである。だいたいこんな要望があると思う。
- 自宅サーバを公開用のグローバルアドレスではなく、プライベートアドレスでアクセスしたい
- 内部サーバの名前解決
- DNSのキャッシュサーバ
基本は一番目の自宅サーバをプライベートでアクセスだと思う。自分の場合にはノートパソコンを持っていて、外部にいる時にはグローバルアドレスを使用して、内部にきたらプライベートでアクセスしたい。都度、hostsファイルを編集とかは面倒なのでDNSで解決したいということだ。
やること
今回のDNSサーバでやらせることはこんなこと。
- 内部ネットワークの名前解決
- DNSキャッシュ
- 自分で解決しないで、わからない名前は手前のブロードバンドルータに聞く
- 内部限定でアクセスさせる
インスト
今回はbind9を使用する。得に理由なし新しいほうにした。いつものaptでインスト。
apt-get install bind9
ファイル一覧
インストすると/etc/bind配下に以下のファイルができあがる。
| ファイル名 | 内容 |
|---|---|
| db.0 | 0から始めるアドレスの逆引きゾーン定義ファイル |
| db.255 | 255から始めるアドレスの逆引きゾーン定義ファイル |
| db.empty | 空のゾーン定義ファイル |
| zones.rfc1918 | プライベートアドレス用のゾーン定義ファイル |
| db.127 | ローカルホスト(127.0.0.1)の逆引きゾーン定義ファイル |
| db.local | ローカルホスト(localhost)のゾーン定義ファイル |
| db.root | rootゾーン定義ファイル |
| named.conf | bindの基本設定ファイル |
| named.conf.local | その他の設定を書くファイル? |
| named.conf.options | オプション設定ファイル |
自己ドメインのファイル追加
さらに自己ドメイン分を追加する。実際には以下の設定で作成する。
| ファイル名 | 内容 |
|---|---|
| db.nai.homelinux.net | 自己ドメインのゾーン定義ファイル |
| db.172.16.0 | 自己ドメインの逆引きゾーン定義ファイル |
設定
基本設定ファイル(named.conf)
この基本設定ファイルでは、どの場合にはどのゾーン定義ファイルを使うということを書く
今回であれば以下を書く必要がある。
- localhostの正引き
- 127.0.0.1の逆引き
- 自己ドメインの正引き
- 172.16.0.0/24(自己ドメイン)の逆引き
これを設定に書くと、こうなる。
include "/etc/bind/named.conf.options";
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "nai.homelinux.net" {
type master;
file "/etc/bind/db.nai.homelinux.net";
};
zone "0.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.172.16.0";
};
最初の1行目はオプション設定になる。通常は同一ファイルに書くがDebianでは分けて書くみたいだ。その方がすっきりするからその通りにやってみる。
オプション定義ファイル(named.conf.options)
オプション定義ではログ設定とか転送設定といったサーバの動作を設定する
ここではブロードバンドルータへ転送と内部限定でアクセスさせることにする
directory "/var/cache/bind";
dump-file "/var/log/named_dump.db";
statistics-file "/var/log/named.stats";
notify no;
allow-query { 127.0.0.1; 172.16.0.0/24; };
version "unko";
forwarders { 172.16.0.1; };
forward only;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
logging {
channel query_logging {
file "/var/log/named_querylog" versions 3 size 100M;
print-time yes;
severity info;
print-category yes;
};
category queries {
query_logging;
};
category lame-servers { null; };
};
基本的にBindのデフォルト設定を使用している。設定しなくてはならないのは以下。
allow-query { 127.0.0.1; 172.16.0.0/24; };
forwarders { 172.16.0.1; };
正引きゾーン定義ファイル(db.nai.homelinux.net)
上で指定した各ゾーンの定義をする。ローカルホストはデフォルトで構わないので追加する自己ドメインの定義を作成する
$TTL 86400
@ IN SOA nai.homelinux.net. root.nai.homelinux.net. (
2007111701 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS nai.homelinux.net.
IN MX 10 nai.homelinux.net.
IN TXT "test 100"
@ IN A 172.16.0.1
ftp IN A 172.16.0.2
www IN CNAME ftp
逆引きゾーン定義ファイル
IPからホストへの逆引きゾーン定義
$TTL 86400
@ IN SOA nai.homelinux.net. root.nai.homelinux.net. (
2008032300 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS nai.homelinux.net.
1 IN PTR Router.nai.homelinux.net.
2 IN PTR ftp.nai.homelinux.net.
ホスト名の最後に「.」を付け忘れないように注意
レコードについて
DNSには各用途でレコードの種類がある。主に使うレコードはこれだ。
| 名称 | 内容 |
|---|---|
| SOA | ドメイン基本情報。シリアル番号や更新期間などがある。 |
| NS | ドメインのDNSサーバを指定する |
| MX | ドメインのDNSサーバを指定する |
| A | ホストの正引き |
| PRT | ホストの逆引き |
基本設定は以上で終了になる。後はサービスを起動しログを確認しよう。
動作確認
サービス起動
以下のコマンドで起動しよう
/etc/init.d/bind9 start
ログを確認(/var/log/deamon.log)。こんなログがでればOKでしょう
starting BIND 9.3.4 -u bind found 1 CPU, using 1 worker thread loading configuration from '/etc/bind/named.conf' listening on IPv6 interfaces, port 53 listening on IPv4 interface lo, 127.0.0.1#53 listening on IPv4 interface br0, 172.16.0.1#53 command channel listening on 127.0.0.1#953 command channel listening on ::1#953 zone 127.in-addr.arpa/IN: loaded serial 1 zone 0.16.172.in-addr.arpa/IN: loaded serial 2008032300 zone localhost/IN: loaded serial 1 zone nai.homelinux.net/IN: loaded serial 2008032300 running
とりあえず自己ドメインを解決
自己ドメインが解決できることを確認しよう
dig @127.0.0.1 soa nai.homelinux.net
@127.0.0.1と指定したが、DNS設定(/etc/resolv.conf)を自身に設定していれば必要ないオプション
以下のメッセージを確認できればOKだろう
;; ANSWER SECTION: nai.homelinux.net. 86400 IN SOA nai.homelinux.net. root.nai.homelinux.net. 2008032300 10800 900 604800 86400 ;; AUTHORITY SECTION: nai.homelinux.net. 86400 IN NS nai.homelinux.net.
逆引きも確認
dig @127.0.0.1 -x 172.16.0.1
オプション-xが必要。
1.0.16.172.in-addr.arpa. 86400 IN PTR Router.nai.homelinux.net.
外部ドメインを確認
設定では自身がルートDNSに聞かず、ブロードバンドルータに聞いている。外部ドメインが解決できるか確認。
dig google.co.jp
キャッシュも確認しよう
TTLを確認することで、キャッシュがされていることがわかる。
dig google.co.jp
TTLをみると1570
google.co.jp. 1570 IN A 72.14.207.104
再度コマンドを入力すると
google.co.jp. 1554 IN A 72.14.207.104
1554と下がっている。0になれば再度解決にいく。