新規にドメインを取得し、自分でネームサーバを立てて運用をしようとするも、うまくいかずに数日ほどハマる。
ゾーンファイルを書き換えたりすることは日常的に行っており、DNSの仕組みも把握していたので、ゼロから構築するのもイージーだろうと思っていたら、まあ、色んなミスを重ねてハマりまくった。反省の意味も込めて、メモ書き。
お名前.comの設定ミス
お名前.comでドメインを取得後、ネームサーバを変更するも、「ネームサーバー変更 不可通知」というメールが返ってきてしまった。
sample.com というドメインに対して、ns1.sample.com と ns2.sample.com というDNSサーバを BIND で構築。dns1.onamae.com と dns2.onamae.com というデフォルトのネームサーバを、それぞれ ns1.sample.com と ns2.sample.com で書き換えるだけではダメ。
冷静に考えれば当然で、そんな設定では sample.com の名前解決をする ns1.sample.com の名前解決ができない。卵が先か、ニワトリが先か、みたいな。ネームサーバ自身のIPアドレスを、トップドメインに通知しないとダメですよねー。
お名前.comはここが分かりにくいんだけど、ネームサーバのIPアドレスを設定するには、「ネームサーバの設定」メニューのなかにある、「ホストの登録・変更・削除」を使う。ここで構築した ns1.sample.com と ns2.sample.com それぞれの IPアドレスを登録。
これで、ちゃんとネームサーバの指定ができました。ふぅ。
ファイアウォールの設定ミス
ネームサーバの変更はうまくいったはずなのに、nslookup や dig で引いてみると、AレコードもNSレコードもデフォルトのまま。設定が反映されていない。1日経っても状況は変わらず。.com は10分もあれば反映されるので、これはおかしい。
で、ネームサーバ側からごにょごにょやっていて、気付く。
「あ、BIND用のUDP/TCPポート(53番)が開けてない!」
BINDは通常UDPを使うんだけど、ゾーンファイルの容量が大きくなるとTCPを使うようになるので、両方でポートを開けてあげる必要がある。ふぅ。
ルータの設定ミス
さて、いよいよと思って nslookup したら、今度は
Non-authoritative answer: *** Can't find sample.com: No answer
NSレコードが更新されたものの、そこが返答しないのであれば、名前解決はできない。なんかね、今度は外部からのルーティングを遮断していた。もう致命的ミス。
これは自分がドメインと格闘しているあいだに、他のメンバーが別件でルーターの設定を変更しておかしくなっていたっぽい。のわー。すぐに復旧したものの、そのあいだ、あーでもない、こーでもないと、孤軍奮闘していた。まあ、空回り。早く相談しておけば良かった…。
DNSのキャッシュうざー
ここまで来て、ようやく nslookup で正常に引けるようになるかと思いきや、近くのネットワークでDNSが更新されておらず、古い情報を引いてきてしまう。
まず、社内ネットワークのBINDのキャッシュをクリア。
# rndc flush
続いて、構内ルータ(YAMAHA RT57i)のキャッシュをクリア。これは管理画面の「詳細設定と情報」のなかにある、コマンドの実行から行う。(マニュアル見て初めて知った!)
clear dns cache
そして、Windowsマシンのキャッシュにも、別れを告げる。
c:\>ipconfig /flushdns
ここまでやったら、ようやく普通に nslookup でも引けるようになったし、ブラウザからドメインでアクセスしても期待通りに名前解決してくれるようになりました。
これまでゾーンファイルを操作してきた経験があったから、named.conf やゾーンファイルの記述には問題ないという自信があったので、それ以外のところということで、重点的に確認していくことができたから、少しはマシだったものの、問題がいくつも重なっていると苦しい。DNSの場合は、外部のブラックボックスをも相手にするものだから、なおさら。
教訓:ネットワーク設定を甘く見るな!
ということで、お疲れさまでした。次は、SSLだなっと。