Home > DNS > tinydnsで時限DNS切り替え

tinydnsで時限DNS切り替え add this entry to hatena bookmarkhatena bookmark counter

  • 2007-03-31 (土) 1:59
  • DNS

tinydnsでは一定の時刻になるとDNSレコードが切り替わるように予約&TTLの自動減算をしてくれる機能がある。 →djbdns by DJB

そこで時間を指定するのに使うのはexternal TAI64 timestampで、djb先生のお馴染みtai64nとはちょっと違う。

時間表記をtai64に変換する方法をいろいろ探っていたのだが、Nautilusの日記にあったtime2tai64.plでも少しダメだったので、少し手直ししてみた。

#!/usr/bin/perl
use Date::Parse;
$date_str = <>;
$time = str2time($date_str);
$hextime = sprintf("%lx",$time + 10);
$tai64n = sprintf("@40%014s",$hextime);
print "$tai64n¥n";

これを/usr/local/bin/time2tai64 として保存。あとは、

[root@sayuri ~]# echo "2007-03-31 02:00:00" | time2tai64

で得られた値をdjbdnsのdataで使えばOK。たとえば2007/03/31 02:00:00 (perlとシステムのタイムゾーンが設定されていれば日本時間でOK)にtest.example.comを1.8.7.1 から1.8.7.2に切り替え、切り替え後はTTL1800秒で運用するという例はこちら。

+test.example.com:1.8.7.1:0:40000000460d421a
+test.example.com:1.8.7.2:1800:40000000460d421a

ちなみにqmailsolutionsの記事ではTAI64値に@を含めるように書いてあるが、これは誤記だとおもいます。

Comments:1

匿名 08-10-20 (月) 18:51

TAI64の仕様を探している途中でやって参りました。
よろしければ教えてください。
UNIXタイムスタンプに足している10秒というのは、なんなのでしょうか。

UTCとのずれは閏秒の33秒のようなんですが、なんでこの+10というのが出てくるのかが分からなくて困っています。
たしかに仕様どおり組み上げると10秒ずれるんですが。

御存じでしたら教えてください。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://d.1555.info/2007/03/31/time-period-dns/trackback/
Listed below are links to weblogs that reference
tinydnsで時限DNS切り替え from しゃおの雑記帳

Home > DNS > tinydnsで時限DNS切り替え

Search
Feeds
Meta

Return to page top