DNSサーバを立てる(続き)

プライマリネームサーバも反映されたことですし、メールサーバも立ったので、いよいよセカンダリDNSサービスを申し込みます。

セカンダリDNSサービスの申込み

今回お世話になるのは、こちら(→無料のセカンダリDNS マイハマネット)です。
こちら(→http://www.zuk.jp/debian4/bind9.html)に

登録には同じドメインのメールアドレスを使用するので、メールサーバが必須です。

と書いてあったので、メールサーバを立てたのですが、今回申し込んでみると、同じドメインのメールアドレスでなくて、なんでもいいみたいでした。『最大5ドメインを管理できるようになりました』ということなので、この制限が撤廃されたのではないでしょうか。
(大変勉強になったので『メールサーバ立てなくてもよかったじゃん』とは言いませんが、しなくてもいい苦労だったことは確かですね)

マイハマネット申込みの手順

手順というほどのことはありませんが、こんな感じで申し込みました。

  1. 申込みはこちら(→無料のセカンダリDNS マイハマネット)から。
  2. [新規登録]ボタンを押して、名前とメールアドレスを登録します。そうするとすぐに登録したメールアドレスにIDとパスワードが送られてきます。
  3. こちら(→無料のセカンダリDNS マイハマネット)から、ID(メールアドレス)、パスワードでログインします。パスワードは[Account]で変更できます。
  4. [DNS]でIPアドレスドメイン名を登録します。左端のチェックボタンをクリックしておくことを忘れずに。※ はまったところは別で書きます。
  5. 登録が終わると[Zone]にゾーン情報が表示されます。これがでればOKです。うまくいかないと「file not exist」とか言われます。
  6. うまくいかないときはログを確認しましょう。これはうまくいったときのログです。

はまったところ

わかってしまえば簡単なんですが、以下は計5時間ほどはまってしまったポイントとテスト方法のまとめです。

ゾーン転送はUDPではなくTCP

ここ(→スレーブ・サーバのゾーン転送とセキュリティ (1/3):実用 BIND 9で作るDNSサーバ(5) - @IT)に書いてありましたが『ゾーン転送はUDPではなくTCPを利用』だそうです。RT-200NEのパケットフィルタリングの設定を「通過:dns = UDP順方向」にしていたので、「通過:dns = TCP順方向」も追加しました。あわせて、静的IPマスカレード設定にも「dns = TCP」を追加しました。(セカンダリDNSからのゾーン転送リクエストがUDPで来てるのであれば、これは必要ないかもしれませんが、いろいろと試行錯誤した結果、とりあえずこうやってうまくいってるので、これらを外しての再テストはしていません)

マイハマネットに登録するドメイン

一番大きいと思われるポカがこれ。マイハマネットでDNSを登録するとき、最初ドメイン名にDNSサーバのFQDN『ns1.5-55.jp』を書いてました。そういう設定だと、上のログの一番最初の行を見てもらうとわかるようにbindから「NODATA response」が返ってくるようで、こちら側のbindのログ「/var/log/daemon.log」には正常動作だからか、なにも残りません。いまみると「zone ns1.5-55.jp/IN」→「ns1.5-55.jpのゾーン情報」となっていて、ns1のゾーン情報なんておかしいじゃんと気づいてもいいはずなんですけどね。

named.confの設定

ゾーン転送に関する設定は「/etc/bind/named.conf.options」と「/etc/bind/named.conf.local」にあります(ボクの場合)。

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

//  allow-transfer { none; };         // ゾーン転送を許可する(none)
    allow-transfer {                  // ゾーン転送を許可する
        219.109.237.3;                // マイハマネット
        192.168.1.3;                  // test
    };

これは「allow-transfer { none; };」のままでいいです。ただ、ローカルからnslookupでテストするときはここにローカル・クライアントのアドレスを書いておかないと「*** Can't list domain 5-55.jp: Query refused」と怒られますので一応書いておきました。

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

    allow-transfer {                  // ゾーン転送を許可する
        219.109.237.3;                // マイハマネット
        192.168.1.3;                  // test
    };

こちらは書いておかないとダメです。ここは間違っていなかったんですが、いろいろと疑ってしまいました。

テストについて

tail -f /var/log/daemon.log

これでログを流しっぱなしにして確認するのが吉です。
あと、Windowsの nslookupが思いのほか役に立ちました。

C:\> nslookup
Default Server:  ns1.5-55.jp.1.168.192.in-addr.arpa
Address:  192.168.1.xxx

    
[ns1.5-55.jp.1.168.192.in-addr.arpa] 5-55.jp. SOA 5-55.jp root.5-55.jp. (2008041701 28800 14400 3600000 86400) 5-55.jp. NS ns1.5-55.jp 5-55.jp. MX 10 mail.5-55.jp 5-55.jp. A 192.168.1.xxx * A 192.168.1.xxx 5-55.jp. SOA 5-55.jp root.5-55.jp. (2008041701 28800 14400 3600000 86400) >
「ls -d ドメイン名」がゾーン転送のリクエストです。DNSサーバが正しくゾーン転送を行うように設定されていれば、このコマンドに対してゾーン情報(DNSレコード)を返してきてくれます。 また、「Server xxx.xxx.xxx.xxx」コマンドでDNSサーバを切り替えられます。イントラネットの環境からグローバルアドレス(219.117.201.xxx)を指定すると一応切り替わりますが、こんなエラーになってしまいます。
    
Default Server: 5-55.jp Address: 219.117.201.xxx
ls: connect: No error *** Can't list domain 5-55.jp: Unspecified error >
もし外部にリモートデスクトップ接続できるPCがあるのであれば、リモートログインしてそのPCから、「nslookup - 219.117.201.xxx」とやると、ns1.5-55.jpに接続できるはずです。

参考

以下のサイトに大変お世話になりました。ありがとうございました。
  1. こちら(→無料のセカンダリDNS マイハマネット)でこれからお世話になります。
  2. こちら(→http://www.zuk.jp/debian4/bind9.html)はいつもお世話になっています。
  3. こちら(→スレーブ・サーバのゾーン転送とセキュリティ (1/3):実用 BIND 9で作るDNSサーバ(5) - @IT)の記事が参考になりました。「実用 BIND 9で作るDNSサーバ」は計15回の連載なので時間があれば全体的に目を通すとためになります。
  4. こちら(→DNSサーバ構築)で nslookupでのテスト方法を知りました。他にbindでの逆引き設定など、これからの参考になります。
  5. こちら(→http://www.bsddiary.net/doc/bind9.html)のFAQも参考になりました。
  6. こちら(→Primary DNSサーバの構築)もすばらしくよく書かれています。
  7. こちら(→http://www.kozupon.com/bind/bind2.html)は bindのセキュリティに関してのことが詳しく書かれています。ログのオプションなどもまとまっていて大変参考になりました。