[俺日記]

ぐるりうぇぶのDNSトラブル / 2006-10-30 (月)

23日にGoogleのメールホスティングのアカウントとGoogleアカウントが一緒に消えてしまった話は書いたがその後メールホスティングのアカウントはGoogleチームのお陰でなんとか復旧。過去のメールは消えてしまったが、まぁ受信してなかったメールに大したものが無かったのがせめてもの救いか。まぁメーリングリストはやろうと思えば過去ログ取れる訳だし、gmailや本名の方のメールホスティングアカウントから転送してる奴はそっちの方にアーカイブしてるのが残ってるし、そもそもPOPで受信したメールは手元にちゃんとある訳で、被害がメール数通で済んだのは不幸中の幸いと言わねばならない。

が、世の中そんなに甘くないのである。Googleチームから連絡が来て、アカウントを何とか復活出来た。次にDNSの設定を元に戻そうと思ったのだが……。

.comとか.netではDNSサーバを二つ以上登録させられるのは管理されている(していた)人なら知ってるだろう。俺はNamezeroでDNSの設定を変更しようとした時に二つ以上設定しないと変更させないよ、という仕様になっていた事で以前それを知ったんだが、外部にセカンダリを頼む事で何とかしてた訳。具体的にはxname.orgを使ってたんだが、これが26日に落ちた(泣)。原因はDDoSらしい。今は半分くらい復旧したみたい(ns0は土曜日に復活、ns1はまだ、という状態)だけど、当然それまで放って置く訳も無く。何たって本名の方は実稼働中なんだから。まぁ俺・嫁・長男・母・姉・弟の6アカウントしか無い訳ですが、それでも半分落ちたままっていう状態はまずい。xname.orgのサーバを一つ、うちのサーバを一つ、という二つ構成にしていたので、名前解決に失敗する確率は1/2なわけですが、今思うにxname.orgを二つ、うちのサーバを一つにしてなくて良かった。この構成だと今回の場合2/3で失敗するもんな。増やせばいいってもんじゃないんだなぁ、と妙な事を実感。片方、極端にレスポンスが悪いサーバを使っていなかったのが幸いした。

障害対策として普通は『全く違うところを複数使う』が良いと思われるわけだが、個人サーバでそこまでするのか(出来るのか)と言われるとちょっと無理っぽい。んで、全く違うところ使ってて、物理的に離れていてかつIPアドレスも全然違うネットワークだったとしてもさ、NSレコードに並んで出て来るのはどうしようもないよね。悪意を持ってある組織にDDoS攻撃しようとしてる奴がターゲットをどうやって決めるかって考えたら、当然NSレコードに書かれているサーバになるわけで(正に今回のxname.orgがそうだよな)。NSレコードは公開情報だから当然隠しようも無いので(隠してどうする)、考えてみると攻撃して来た奴を片っ端から接続拒否するくらいしか、防ぐ手段が無いのか?

まぁそれはそれとして。仕方がないので、裏技的になるけどNamezeroで同じIPアドレスを違う名前複数回登録して、それを使う事にした。gururi.comも、本名の方も同様の措置を講じてみる。なんか同じIPアドレスが登録出来てしまってちょいと拍子抜けなんだがなぁ。ホスト名はns1とf。fはfixed IP Addressのfってことで。DNSサーバが落ちてるときはたぶんWebサーバも落ちてるわけなので、困るのはメールの配送なんだが、まぁそんなに落ちないだろう。tinydnsはちゃんとdaemontoolsで監視してるし。落ちるのはたぶんルータ(まずいっての)。時々挙動不審なんだよな、BA8000Pro。なんか他に良いルータありませんか>誰か

[ ツッコミの受付は終了しています ]

「ぐるりうぇぶのDNSトラブル」のリンク用URL


[俺日記]

障害発生中(サーバは動いてるけど精神的にトラブル継続中) / 2006-10-23 (月)

障害っつーかなんつーか。俺はGoogleのmailホスティングサービスを利用してるんだけど(gururi.comともう一つ、本名の方)、これって基本MailとCalendarとChatとDomain web pagesが使える。っつーかそれしか使えない。一部Personalized Start Page(間違ったわけじゃないよ)が使えるアカウントもあるみたいだけど、まぁそれは置いといて。んで、それ以外のサービス、Personalized HomepageやReaderなんかは引き続きGmailのを使ってたわけ。

んで、今日の俺は何を思ったのかGoogle Notifier for Mac 1.9.90を入れたんだ。前はMailもCalendarもgmail.comなアカウントじゃなきゃ駄目だったと思うのだが(うろ覚え)、今日やってみたらgururi.comなアカウントでもメールの一覧が取れてたので、おお、対応したのか、とか思ってたんだが……なんかGoogleアカウントを取得してないのにGoogleアカウントが出来てたっぽい。何故だ。なんで出来たと判断したかって言うと、Readerの画面を出したら右上に表示されてるメールアドレスがgmail.comじゃなくgururi.comになってたのと、gmail.comの方で購読設定してたのが全部消えてたから。消えてたんじゃなく違うアカウントにアクセスしてたんだけど。

俺にはgururi.comでGoogleアカウントを作る気は全く無かった訳ですよ(以前作ったけど消した)。Googleアカウントの設定開いてもgururi.comのままだったし、サービスの一覧にはCalendarとGmailとReaderがあったけど、Gmailには当然アクセス出来ないし。招待無しで作ったアカウントってGmail使えないからね。

で、不要なGoogleアカウントな訳で、んじゃNotifierもまだ使えないかなー、とか思いながら消した訳。そしたらホスティングの方のアカウントも消えやがった_| ̄|○

adminとしてログイン出来なくなるわ、メールも届かなくなるわ(アカウントが無くなったんだから当然だよな)、とりあえずメールが届くようにするためにDNSサーバをnamezeroの奴に戻さなきゃいけなくなるわ、そうするとgururi.comへのアクセスがforwardingになっちゃうわ、http://gururi.com/にアクセスしようとするとgururi.macj.netに飛ばされるんだけどそこではgururi.comへ飛ばすようになっててそのせいで無限ループが発生しちゃうのでサーバ設定直さなきゃだわ(長いよ)、もうね、散々。早いうちにgururi.comに来たメールはgmai.comに飛ばすように設定出来たのと、Inboxに残っていたメールの重要度は大して高くなかった(新し物好きのダウンロ〜ドとかせいぜいそのくらい)が救いか。

夕方になってようやく、gururi.comの転送先とgururi.macj.netでアクセスされた時の転送先をgururi.dyndns.orgにしたので、多分これも見えてるはず。ていうかこれアップロード出来るんかw

関係ないけど、先ほどメールがちゃんと届いてるかテストしてる最中に、BLOOD+の11巻(AA)発送しましたってメールがAmazonから来てて。2通。あれ?メールトラブル?と思ったら重複して注文してた模様。アホか。返品なんて初めてだよ。開封せずにそのまま送り返す予定だけど、誰か欲しい人いたらコメントかメールで連絡おくれ。

今日の教訓。管理者アカウントは万が一に備えて複数作っといた方がいい、かな?(なんか違う気がする)


[俺日記]

医学都市伝説さんのDNSトラブル / 2006-10-09 (月)

医学都市伝説: あれ?ネーム・サーバーが……』より(via otsuneさんのブクマ)。タグはDNS

otsuneさんは

単にns1がコンテンツサーバーでns2がゾーン転送を受けていたのに、それを逆に設定しちゃってexpireされたんだろうなぁ

って言ってたけど、『ns1がマスターでns2がスレーブ』って言いたかったのかなと言ってみる。いや話の本筋はそこじゃない。まずはSOAレコードを引いてみた。SOAレコードは以下のように返って来た。

med-legend.com. 600 IN SOA main.primevps.net. tech.webk.net. 2006050501 7200 3600 604800 600

digコマンドでSOAレコード引いたとき、IN SOAの次に来るのはマスターネームサーバだったよね。この場合はmain.primevps.netというサーバになるわけか。このサーバはNSレコードには存在しないんだけど、これは許されるのだろうか?ns1もns2もmainのスレーブサーバってことでいいのかな。ns1とns2はmainに更新が無いか2時間ごとに問い合わせ、あればゾーン転送してもらう、この設定自体には特に問題無さそうだ(本当かなぁ)。ns1、ns2、mainに直接digで問い合わせてみたが、レコードは全て一致する。シリアルも2006050501で同じ。これ多分今年の子供の日に更新したんだよねぇ。だから『ns1→ns2という転送を逆に設定した→転送が失敗し続けてexpire』という、プライマリとセカンダリを入れ替えてしまったが故の事故って線は無いんじゃないかと。この場合どっちがプライマリでも同じだと思う。たぶん。

さて、初期設定の誤りであったのなら、何で今まで問題なかったのか、そもそもns1、ns2の順など関係ないのなら、何故それを変更したらアクセスできるようになったのか、順序に関係があるなら、何で知らないうちに設定が変るようなことがあったのか、と言う謎が残ったことになる。

レコードから推測されるのは、ns1もns2もmainからゾーン転送してもらっており、立場は同じという事。だから順序は関係ない。そもそもns1とns2の間でゾーン転送は行われていないと思われる。

で、プライマリ=ns2という設定を、プライマリ=ns1にしたら繋がった、という事だけど、仮にプライマリ→セカンダリという方向にゾーン転送するようになっていた場合、ns2→ns1とゾーン転送しようとして失敗し続け、その結果としてns1は自分が持つレコードを破棄しているはずであるが、ns2が持つレコードは破棄されていないはずである。つまり1/2の確率で(=ns2に問い合わせしたときだけ)名前解決が出来て繋がるはず。でもそういう話じゃないっぽい。そしてこの状態からns1→ns2という方向に設定を直したって元に戻る訳が無い。でも、そういう話ではなく、またどちらのサーバのレコードも2006年5月5日から変更していないっぽいんだから、この仮定は却下。やっぱりmainからns1、ns2にゾーン転送されていると考えるのが自然だろう。

それよりも気になったのは、ns1とns2が、同一の(たぶん)ネットワークにあるって事(IPアドレスが1番違い)。ついでに言えばmainも多分同じネットワークにある。これはDNSの性格上問題じゃないかなーと思うのだが。コンテンツサーバはそれぞれ違うところに置かないと意味無いって俺は習ったよ?

以上の事から、俺は今回の事象は以下のような流れではないかと推測する。

mainが落ちたまたはmainとns1・ns2間のネットワークトラブルが発生した→ns1とns2がmainに問い合わせをするが失敗→REFRESH=2時間、RETRY=1時間、EXPIRE=1週間を経てns1・ns2がレコードをexpireする→名前解決不能に陥る→繋がらなくなる→設定を変更した→ns1とns2がmainに再度同期を求める→名前解決可能になる→繋がるようになった

というものではないかと。一度レコードをexpireしてからのns1・ns2がmainに対して同期を繰り返そうとするかはわからんしどっちでもいい気がする。RETRYが1時間だから、同期失敗から設定変更の間にmainが復活するってのは十分ありそうな話だ。同期要求を繰り返していない場合、このサービスではmainが全部のゾーンのマスターサーバになってるってのはありそうな状況だから、設定を変更したらmainに対して新たにゾーン転送を求めて無事転送された、ってことでいいんじゃね?otsuneさんにiChatでこの事話したら、

あー、ns1とns2を入れ替えたのは本来は意味が無くてネガティヴキャッシュをリセットしたのが効果あったと

一言でまとめると、「http://jp.webk.net/がnsを場所的に冗長にしていないから、いろいろあってそう言う事が起こった」

と実に的確な表現でまとめてくださいました。

回避方法?やっぱり全然別のネットワークに複数のコンテンツサーバを置くしか無いんじゃないですか?2個だと1個落ちたとき名前解決出来ない確率は1/2だけど、n個置けば1/nに減るし。うち?2個だよ(;´Д`)

[ ツッコミの受付は終了しています ]

「医学都市伝説さんのDNSトラブル」のリンク用URL