在使用 ClamAV 进行病毒库更新(freshclam)的过程中,出现了如下错误信息:
vbnetCopyEditCan't query current.cvd.clamav.net
Invalid DNS reply. Falling back to HTTP mode.
FreshClam previously received error code 429 or 403 from the ClamAV Content Delivery Network (CDN).
This means that you have been rate limited or blocked by the CDN.
You are still on cool-down until after: YYYY-MM-DD HH:MM:SS
错误原因分析
- ClamAV 官方 CDN(由 Cloudflare 提供)会对频繁的请求进行限流,返回 429 或 403 错误码。
- 如果局域网中多台主机共用同一公网 IP,并且多次执行
freshclam命令,会导致触发限流机制,CDN 会自动暂时封禁该公网 IP 一段时间(官方称为「cool-down」)。 - 官方要求每小时最多执行一次
freshclam检查更新,超过频率会被封禁。
排查方法
- 使用
dig或nslookup命令检查 DNS 解析情况,确认current.cvd.clamav.net是否正常返回 A 记录。如果没有返回 IP,则说明被 CDN 限流或 DNS 缓存异常。 - 查看
freshclam的日志,可以直接定位到具体的限流原因和解封时间。 - 如果出现限流,按照日志提示的时间等待,解封后再执行更新。
解决方案
- 保证一小时最多更新一次数据库,避免在定时任务或多台机器中重复执行
freshclam。 - 可以设置一个专用的内部机器作为更新节点,其它机器通过共享或同步方式获取病毒数据库文件,减少对公网 CDN 的请求。
- 在
/etc/clamav/freshclam.conf中修改Checks参数,例如: nginxCopyEditChecks 24表示每天最多检查 24 次(即每小时一次),建议不要超过。
不更新数据库时的扫描处理
即使数据库未更新,ClamAV 仍然可以直接执行扫描,只是病毒库会比较旧,可能导致对最新威胁的检测能力下降。
示例扫描命令如下:
bashCopyEditclamscan -r --bell --exclude-dir=/proc --exclude-dir=/sys --exclude-dir=/dev / | tee /root/clamav_scan_$(date +%Y%m%d_%H%M%S).log
参数说明
-r:递归扫描所有子目录。--bell:扫描结束后在终端响铃提示。--exclude-dir:排除特定目录(如/proc,/sys,/dev)避免扫描虚拟或设备文件系统。/:从根目录开始扫描。tee:同时在终端显示输出并写入日志文件,文件名包含当前时间戳。
总结
- ClamAV 更新失败时,首先检查是否触发了 CDN 限流,并遵循官方频率要求。
- 可以在不更新数据库的情况下执行扫描,作为临时方案。
- 建议长期仍保持定期更新数据库,以获得最新的检测能力。