■ClamAVの「connect_error」ログがあったので、調べてみた。
$ sudo grep -i "warn\|error" /var/log/clamav/freshclam.log | cut -c 21- | sort -u
2012 -> connect_error: getsockopt(SO_ERROR): fd=4 error=110: Connection timed out
■結論から言うと、ClamAVのパターンファイル更新サーバのうち、
BIT-DRIVE「219.106.240.0/22」内の「219.106.242.51」のサーバだけ落ちてるのが原因。
「clamav-daemon」、「calmav-freshclam」の動作には問題は無かった。
以下に、切り分けた方法について書きます。
■発見の経緯は以下のメールにあったため。
ローテーション前に、前日までのログから任意のキーワードで抽出、メールする。
http://d.hatena.ne.jp/labunix/20121213
■環境
Squeezeにclamavを導入。EICARチェック
http://d.hatena.ne.jp/labunix/20120423
clamavでPermission deniedが出る場合の対処(暫定)
http://d.hatena.ne.jp/labunix/20120511
ClamAVのチェック時にエラーも取得した方が良いかも
http://d.hatena.ne.jp/labunix/20121023
■「connect_error」の前後を見ると、アップデートは出来ていて、
「db.local.clamav.net (IP: 219.106.242.51)」への接続は失敗しているという状況。
$ sudo grep -A 1 -B 1 "connect_error" /var/log/clamav/freshclam.log | tail -3
Sun Dec 16 19:29:08 2012 -> main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Sun Dec 16 19:29:29 2012 -> connect_error: getsockopt(SO_ERROR): fd=4 error=110: Connection timed out
Sun Dec 16 19:29:29 2012 -> Can’t connect to port 80 of host db.local.clamav.net (IP: 219.106.242.51)
$ sudo grep "Can.t connect to" /var/log/clamav/freshclam.log | sed s/".*80 of host "//g | sort -u
db.local.clamav.net (IP: 219.106.242.51)
■他のIPでは成功している様子。
$ sudo grep -i "update" /var/log/clamav/freshclam.log | \
grep "Database updated" | \
awk '{print $1,$2,$3,$4,$5,$9,$12,$14}'
Sun Dec 16 06:25:28 2012 (1379020 db.local.clamav.net 211.10.155.48)
Sun Dec 16 07:25:52 2012 (1379384 db.local.clamav.net 211.10.155.48)
Sun Dec 16 08:26:16 2012 (1379863 db.local.clamav.net 27.96.54.66)
Sun Dec 16 10:26:42 2012 (1380706 db.local.clamav.net 203.178.137.175)
Sun Dec 16 11:27:06 2012 (1380876 db.local.clamav.net 203.178.137.175)
Sun Dec 16 13:27:31 2012 (1381219 db.local.clamav.net 27.96.54.66)
Sun Dec 16 14:27:55 2012 (1381394 db.local.clamav.net 27.96.54.66)
Sun Dec 16 16:28:21 2012 (1381526 db.local.clamav.net 218.44.253.75)
Sun Dec 16 17:28:44 2012 (1381625 db.local.clamav.net 27.96.54.66)
Sun Dec 16 18:29:08 2012 (1382010 db.local.clamav.net 203.178.137.175)
Sun Dec 16 19:29:32 2012 (1382263 db.local.clamav.net 27.96.54.66)
■「219.106.242.51」を含むIPが引ける。
$ dig db.local.clamav.net | grep -v "^\;\|^\$"
db.local.clamav.net. 2493 IN CNAME db.jp.clamav.net.
db.jp.clamav.net. 58 IN A 203.212.42.128
db.jp.clamav.net. 58 IN A 211.10.155.48
db.jp.clamav.net. 58 IN A 218.44.253.75
db.jp.clamav.net. 58 IN A 219.94.128.99
db.jp.clamav.net. 58 IN A 219.106.242.51
db.jp.clamav.net. 58 IN A 27.96.54.66
db.jp.clamav.net. 58 IN A 120.29.176.126
db.jp.clamav.net. 58 IN A 203.178.137.175
■念のため、手動アップデート
$ sudo /etc/init.d/clamav-daemon stop
$ sudo /etc/init.d/clamav-freshclam stop
$ sudo freshclam -v | grep "up to date"
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cld is up to date (version: 15842, sigs: 337835, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 208, sigs: 41, f-level: 63, builder: neo)
■プロキシを経由する設定がされていることを確認。
$ sudo grep ^HTTP /etc/clamav/freshclam.conf | sed s/"[0-9]"/"X"/g
HTTPProxyServer XXX.XX.XX.XX
HTTPProxyPort XXXX
■「503」が該当のエラーの様子。
$ sudo tail -100 /var/log/squid/access.log | \
grep db.local.clamav.net | \
sed s/"^.*\["/"\["/g | sed s/"\""/"\n"/g
[16/Dec/2012:20:06:27 +0900]
GET http://db.local.clamav.net/daily-15843.cdiff HTTP/1.0
503 757
-
ClamAV/0.97.6 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
TCP_MISS:DIRECT
[16/Dec/2012:20:06:57 +0900]
GET http://db.local.clamav.net/daily-15843.cdiff HTTP/1.0
200 12953
-
ClamAV/0.97.6 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
TCP_MISS:DIRECT
[16/Dec/2012:20:08:27 +0900]
GET http://db.local.clamav.net/daily-15843.cdiff HTTP/1.0
200 427
-
ClamAV/0.97.6 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
TCP_MISS:DIRECT
■80ポートへ直接アクセスが可能なサーバで以下のテスト。
「219.106.242.51」のサーバが落ちてる。
$ telnet 219.94.128.99 80 | head -5
Trying 219.94.128.99...
Connected to 219.94.128.99.
Escape character is '^]'.
GET / HTTP/1.0
HTTP/1.1 200 OK
Date: Sun, 16 Dec 2012 11:21:03 GMT
$ telnet 219.106.242.51 80
Trying 219.106.242.51...
GET / HTTP/1.0
telnet: Unable to connect to remote host: Connection timed out
■「ClamAV update process started」の時間で再度ログを確認。
$ sudo tail -20 /var/log/clamav/freshclam.log | grep "19\:42\:" | grep "up to date"
sudo tail -500 /var/log/clamav/freshclam.log | grep "19\:42\:" | grep "up to date"
Sun Dec 16 19:42:55 2012 -> main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Sun Dec 16 19:42:55 2012 -> daily.cld is up to date (version: 15842, sigs: 337835, f-level: 63, builder: neo)
Sun Dec 16 19:42:55 2012 -> bytecode.cld is up to date (version: 208, sigs: 41, f-level: 63, builder: neo)
■デーモンの開始
$ sudo /etc/init.d/clamav-daemon start
Starting ClamAV daemon: clamd .
$ sudo /etc/init.d/clamav-freshclam start
Starting ClamAV virus database updater: freshclam.