それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

SOAレコードとdig

DNSSOAレコードについて

takuya@:sites-available$ dig soa google.co.jp +short
ns2.google.com. dns-admin.google.com. 149484063 900 900 1800 60
                                       ^^^       ^^  ^^  ^^  ^^                                                  
                                        │        │    │  │   └ minimun
                                        │        │    │  └─  expire
                                        │        │    └─   retry
                                        │        └─   refresh
                                        └─  serial
  • serial
    • シリアル値。データのID。一般的にはタイム・シリアル値を入れることが多い
  • refresh
    • セカンダリがプライマリに問合せする間隔
  • retry
    • セカンダリがプライマリ問合わせ(上記 refresh ) 失敗時に再取得する間隔
  • expire
    • セカンダリがrefresh に失敗後に現在のキャッシュを保持して返すまでの時間
  • minimun
    • ネガティブキャッシュの存在可能時間を指定する。
    • ネガティブキャッシュとは問合せた結果<該当なし>を保存すること

ネガティブキャッシュと新規追加の関係性。

レコードを新規追加すると、通常だと次のような流れになります。

  1. NS(primary)に新規追加する。
  2. NS(secondary)に同期される
  3. NSに問い合わせが来る
  4. TTL分だけキャッシュされる

先に問い合わせが来てしまった場合。

  1. NS(primary)に新規追加する。
  2. NS(secondary)問い合わせが来る
  3. ネガティブキャッシュされる(「存在しない」がキャッシュされる)
  4. NS(secondary)に同期される

プライマリ→セカンダリの同期前にセカンダリに問い合わせると、セカンダリにはレコードがなく問い合わせ結果がネガティブになり、その情報をSOAに従ってネガティブキャッシュしてしまう。なのでますます反映が遅くなることがある。

SOAで見るべき

一般の人(NS運営してない)がSOAで見る情報はなにより、ネガティブキャッシュ設定だと思います。

なんでこんなことを調べてるのかというとV◯lue-d◯mainの更新の遅さに苦労しててちょっと調べてたわけです。