ClamAV でのウィルス定義ファイルのアップデートエラー

ALL
スポンサーリンク

Linux で利用できるフリーのアンチウイルスソフト ClamAV で下のようなエラーをログに残して、ウィルス定義ファイルのアップデートが時々失敗していることがあります。

Mar  3 03:47:23 test freshclam[17356]: getfile: daily-19996.cdiff not found on remote server (IP: 203.178.137.175)
Mar  3 03:47:23 test freshclam[17356]: getpatch: Can't download daily-19996.cdiff from db.jp.clamav.net

ウィルス定義ファイルのダウンロード先のサーバへの接続が失敗しているようです。
サーバは /etc/freshclam.conf の DatabaseMirror 行で指定します。

CentOS6 のデフォルトでは下記のようになっています。
(注:後でこの行を修正します)

/etc/freshclam.conf

DatabaseMirror db.jp.clamav.net
DatabaseMirror db.local.clamav.net

DatabaseMirror を複数書いていると、先頭のサーバから順にアクセスします。
サーバへの接続に失敗すると、次のサーバへアクセスします。
アクセスは、DatabaseMirror 毎に MaxAttempts の回数リトライします。

さて、上記 CentOS6 のデフォルトのサーバ指定ですが、サーバを2つ指定しているにも関わらず、ウィルス定義ファイルのアップデートが時々失敗していました。

db.jp.clamav.net , db.local.clamav.net は DNSラウンドロビンで複数サーバからどれかが割りあたります。
nslookup db.jp.clamav.net , nslookup db.local.clamav.net コマンドを実行して見ると、両方とも下記になっていました。

120.29.176.126
203.178.137.175
203.212.42.128
218.44.253.75
219.94.128.99
27.96.54.66

これでは、db.jp.clamav.net での接続に失敗した場合、続けて db.local.clamav.net にアクセスしても、6分の1の確率で同じサーバにアクセスして失敗してしまいます。
また、いずれも日本のサーバなので cronで一斉にサーバにアップデートに行く等、ある時間帯にアクセスが集中する為に、サーバへのアクセスが失敗するのではないかと考えました。

そこで、DatabaseMirror 行で指定するサーバの1つは、アクセスが集中する時間帯をずらせるように、海外のものを指定してみました。
次のように db.us.clamav.net を指定します。

DatabaseMirror db.jp.clamav.net
DatabaseMirror db.us.clamav.net

これでしばらく様子を見て、結果をこのブログでお知らせします。

コメント

  1. ぷ~ より:

    同じエラー出ました。結果知りたいです。

  2. パソコン鳥 より:

    以前のことのなので前後のログは残っていません・・が、現在は問題なく動いています。
    エラーは連続して発生していなければ問題ありません。
    あるサーバでエラーが出ても、別のサーバでリトライし、そちらで成功するので。
    ちょっと確証はありませんが、本記事執筆時点と現在では挙動が違うようで、db.jp.clamav.net で定義されている複数のサーバに、リトライごとにどれかに接続しなおしているようです。