Humanity

Edit the world by your favorite way

GeekなページさんのDNS関連の記事がわかりやすかったのでまとめた

Geekなぺーじ:なぜ「DNSの浸透」は問題視されるのか
Geekなぺーじ:「DNSの浸透」とアプリケーションのキャッシュ

すごくわかりやすかったので、すごく簡潔すぎて自分にしか分からないかもしれないまとめ記事書いてみる。
Geekなページさん」と敬称をつけるかつけないか、
「あきみちさん」と呼べる程親しい間柄ではないし・・・と小一時間悩みました。


まず上の記事を読んだ後、コメント欄DNS pinningという単語が見えたので調べてみた。
調べた結果、自分の結論もコメント欄のtssさんの意見と同じものになった。

そもそもDNS pinning が必要なWebのセキュリティモデル自体がおかしい。

Geekなぺーじ:なぜ「DNSの浸透」は問題視されるのか (6)

2行でまとめると

  1. DNSサーバはTTLを無視しない、ってかそんなサーバ見たことねーよ
  2. しかしアプリケーションレベルではTTLが無視されることがある(DNS Rebinding/DNS Spoofing対策)。しかもRFC違反ではない。

なんだけど

もちろん、NS ではなく A/AAAA のキャッシュが原因で起きるトラブルもあって、これはドメイン移転以外でも起きるし、TTL 無視のアプリが主原因だと思われる。実例は このへんを参照。でも、これはドメイン移転時の「浸透」とは原因がまったく異なるので、いっしょくたにして、「TTL を無視するやつがいて…」とかしたり顔で語ってはいけない。

どさにっき

この人が言うようにアプリケーションの動作は別問題な訳で、そういう動作になってしまったのはDNS Rebinding対策のため。
ただ

network.dnsCacheExpiration のデフォルトは60秒で、つまりその程度で DNS rebinding attack 対策には十分

どさにっき

と言われてるように「60秒以上」とか最小値が仕様に含められていて、かつアプリケーションもその通りにTTLを準拠するようになってほしかったとは思う。
ただそういう理想世界にこだわってもいられないので、自分の結論としては

  • TTLを過ぎたらサーバは停止してもよい
    • 少なくとも「行儀の良い」DNSサーバのキャッシュはクリアされてるはずだというのがその理由。アプリケーションは諦める
    • ドメインにアクセスできなかったら再度ドメイン解決するアプリケーションがほとんど(JVM除いて?)だというのも追加の理由
  • 諸悪の根源はDNS Pinningを必要とするWebの仕組み。

もちろんケースによって答えは違うんだけども、TTLが切れた以上は面倒見切れねーという気がした。
面倒見なくちゃいけない場合は(ry

追記

http://wizardbible.org/33/33.txt
この記事も相当分かりやすかったです。