「ひみつ」なんて書いてますが、ひみつでも何でもありません(^^;
ソースも公開されていますので、誰でも中身を知る事ができます。
ここで書いている内容は、2004年6月18日現在(バージョンで言うと0.73)
の実装に付いて書かれていますので、その後変更されている可能性はあります。
ご注意ください。
ふつ〜のClamAVでは、freshclamというプログラムがあって、 これがデータベースを取得します。
ClamWinでは、ClamWin自身が取得します。
freshclamでは、/etc/clamav/freshclam.confにあるChecksで指定された値で変わります。
ここで指定するのは「一日何回取得するか」ですので、
ここに12と書けば一日12回(2時間おき)ですし、
24と書けば一日24回(1時間おき)になります。
これはfreshclamがデーモンとして立ち上げられた場合の設定ですから、
最初は立ち上がった時になります。
デーモンとして立ち上げない場合は、 自分でcronなどで設定する必要があります。
Windows版クライアントのClamWinでは「Tools」→「Preferences」→
「Internet Updates」で「Enable Automatic Virus Database Updates」
にチェックが入っていれば、その下の設定に従ってアップデートします。
「Hourly」を選択すると毎時アップデートしますが、
この時Timeの時間の所を 00 にしておかないと更新されないようです。
(バグ?仕様?)
ClamAVをインストールすると、ウィルスデータベースを取得する先のサーバとして database.clamav.net となっています。(デフォルトの場合)
ではこの database.clamav.net ってどこでしょう?
ちょっと dig してみましょう。
; <<>> DiG 9.2.1 <<>> database.clamav.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14172 ;; flags: qr rd ra; QUERY: 1, ANSWER: 15, AUTHORITY: 5, ADDITIONAL: 0 ;; QUESTION SECTION: ;database.clamav.net. IN A ;; ANSWER SECTION: database.clamav.net. 5 IN CNAME db.local.clamav.net. db.local.clamav.net. 7200 IN CNAME db.asia.clamav.net. db.asia.clamav.net. 5 IN A 62.210.153.202 db.asia.clamav.net. 5 IN A 129.64.99.170 db.asia.clamav.net. 5 IN A 193.140.143.23 db.asia.clamav.net. 5 IN A 202.134.0.71 db.asia.clamav.net. 5 IN A 203.16.234.78 db.asia.clamav.net. 5 IN A 203.28.142.36 db.asia.clamav.net. 5 IN A 203.81.40.167 db.asia.clamav.net. 5 IN A 203.202.10.60 db.asia.clamav.net. 5 IN A 207.201.202.73 db.asia.clamav.net. 5 IN A 210.22.201.152 db.asia.clamav.net. 5 IN A 211.10.155.48 db.asia.clamav.net. 5 IN A 212.113.16.74 db.asia.clamav.net. 5 IN A 218.44.253.75 ;; AUTHORITY SECTION: clamav.net. 7200 IN NS ns2.oltrelinux.com. clamav.net. 7200 IN NS ns3.clamav.net. clamav.net. 7200 IN NS ns4.clamav.net. clamav.net. 7200 IN NS ns5.clamav.net. clamav.net. 7200 IN NS ns1.oltrelinux.com. ;; Query time: 539 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Jun 18 19:13:12 2004 ;; MSG SIZE rcvd: 413
何だかいっぱい出てますが(^^;
という事で、database.clamav.net をサーバに指定すると、 この13台のサーバのどれかからデータを取ってくる事になります。
というのは、私のサイトからdigで引いた場合の話で、
db.local.clamav.net から db.asia.clamav.net へのCNAMEは、
DNSサーバへ問い合わせて来た相手のIPアドレスによって変わってきます。
たとえば、北米からであれば db.america.clamav.net が返ってきます。
これらIPアドレスによるマッピングは、IANA
で公表されているリストを元に、
APNIC (Asia Pacific Network Information Centre)に割当てられているIPアドレスには db.asia. を、
ARIN (American Registry for Internet Numbers)に割当てられているIPアドレスには db.america. を...
という具合に相手を識別しています。
そのため、asiaと言ってもアジアだけでなく、APNICの管轄である
オーストラリア、ニュージーランドなども含まれます。
(詳しくはAPNICのサイトにある...ハズ(^^;)
で、これら、複数登録されたホストのどれかに取りに行く事になります (こういうのをDNSラウンドロビンと言います) が、実際どこに取りに行くのかはその時の運次第(^^; というか、OSの実装とか諸々の影響で決まってきますが、 ふつ〜の実装だと毎回取得する先は変わってくるはずです。
ちなみに、つい先日頃(6/15にアナウンスがありました)から、
db.(カントリーコード).clamav.net という形も登録されています。
この形で引いた場合、その国に複数のサーバがある時はその複数のサーバが、
一台だけ、または全く無い場合は db.local.clamav.net
と同じものが返されるようになっているようです。
現在、db.jp.clamav.net で問い合わせると2個のIPアドレスが返ってきます。
それでは日本では db.jp.clamav.net とすべきでしょうか?
これは何とも答え難い問題です(^^;
それぞれの得失を考えると
というのがそれぞれメリットでしょうか。
デメリットはその逆。
私見としては、日本に3〜5台ぐらいミラーができれば db.jp
というのも良いでしょうが、2台しか無い現状では database.clamav.net
のままにしておいた方が無難かな?と思います。
ただし、上で書いたように、db.localからdb.asiaへのマッピングは、 IANAの情報に基づいており、このリストによる方法は完璧ではありませんから (一部、APNICを通さないでIPアドレスを取得している場合もある。 企業などで他のNICからIPアドレスブロックを取得して使っている場合とか、 歴史的事情とか。 また、社内DNSサーバが他国にあるけどインターネットへの接続は国内からとか)、 自分の所で database.clamav.net を引いてみて、 不適切と思われるものが返ってきた場合(たとえば db.other.clamav.net とか) には、明示的に設定した方が良い場合もあるかもしれません。
2004年6月23日追記
clamavdb.raimei.co.jp さんが新たに日本のミラーサイトとして追加され、
合わせて3台となりました。
そろそろdb.jp.clamav.netと指定しても良いかも・・・
あくまでも、利用される方の判断ですが。
(そうすべきとは言いません)
2005年10月27日追記
8月頃から、日本国内からDNSを引いた場合、db.local.clamav.net から
db.asia.clamav.netではなく、
db.jp.clamav.netにCNAMEされるようになっています。
ですから、積極的にdb.jpと指定する必要はほとんどありません。
設定の必要があるとすれば、database.clamav.netからdb.jpが引いて来れない
IPアドレスブロックを使っている場合ぐらいでしょう。
また、多くのミラーサイトが新たに加わりましたので
(2005/11/27現在、7ヶ所)
ある程度安心してdb.jpを利用できる環境が整って来たと思います。
古いバージョンの場合は別ですが、
現在のバージョンでは、上記ホストに接続して /main.cvd, /daily.cvd の
2つのファイルを取ってきます。
他には取得するものはありません。
Range指定で、まずmain.cvdの先頭512byteを取得します。
先頭は
ClamAV-VDB:12 May 2004 01-44 +0200:23:21096:2:2afa38b2ececc44e99e396f97e94adef:W x0hUnJ7o4I4qlduirFBa2qnd812KvyAL10W3+oyyK4O5jkPOxeN9crzUYNNV8YDRf6wL8dgZHuDUReGw UcW4XqwhTC9ZEhA2q4uudJ5yh+ReB9A+6Z3Ff2Ox8caKjd4H71fFIMRyTXJSXZiJtuRv6KvZ4L+f+lgO N68+ZMFVNc:ddm
という感じになっていて、 コロン(:)でフィールドが分けられており、 最初から
という情報が含まれています。
この情報から、現在手元にあるデータベースとサーバにあるデータベースの、
どちらが新しいかを判断し、サーバの方が新しければ全データを取得します。
daily.cvdに付いても同様の方法で更新を行います。
なにやら薀蓄(^^;を語っただけで、 別に知らなくても不幸にはならない事ばかりですが、 内部を知ってClamAVを身近に感じて頂けると幸いです。