I think these reports don't tell you what you think they mean. In fact they're
pretty much meaningless. The two different servers have different versions of
the signature. That is perfectly normal - there is simply zero chance and it is
naive to think they will always be fully synced in the same second of time of
day. You can infer nothing when this occurs.
In any event these signature serial numbers are associated with the DNS txt
record. The designed process is entirely serial - freshclam knows your installed
signature file serial number, it knows the DNS txt record, and it requests
updates from any of the signature servers if the local version is different from
the DNS txt record. It will try all the mirrors until success or the list of
mirrors is exhausted. Other things that mess with the fully synchronized state
is that DNS caching, TTL, local system clock differences, and policies of
various name service admins to ignore authoritative TTL suggestions.
The database.clamav.net dns is a round robin of 5 different servers and you
cannot predict what you will receive. In fact in the best case the list be
reordered each time you request the A record. And the chances of two different
clients getting the same A record is very low.
Your own local resolver looks in its own cache to see if it has expired. The TTL
record for the TXT record is 1800 seconds. If you use the dig command retrieve
the TXT record you can watch the TTL count down:
dig txt current.cvd.clamav.net |grep TXT
To eliminate this as a problem source you can always use host table entries
rather than dns for your tests. The round robin records ensure reliability for
the client and crude load balancing for the server farm.
So worst case is the record you see can be 1800 seconds behind an updated TXT
record. Obviously polling the current.cvd.clamav.net server directly will return
an uncached record at the expense of recursing queries (use the IP instead of
the hostname to avoid this).
Because these variables exist, freshclam is somewhat fault tolerant and will
retry 3 times per mirror (default and is configurable), and if a mirror is in a
failed state freshclam will map it out of the servers to try next time
(mirrors.dat). The other variable is some of the sync process is demand-driven.
In very busy systems (which these are) stale files should not exist very long.
Your request just might be a trigger to refresh a stale file, and the next
person to hit that server will retrieve the updated file and your system will
move to another mirror. This scenario presumes files are pulled to the mirrors,
not pushed.
I do believe your angst over not having complete system synchronization is
unwarranted as there are too many uncontrollable variables and it's really not
critical if the first mirror doesn't respond.
Finally - the current cloudflare process is pretty solid - it is a vast
improvement over the historical mirror collaboration
On 11/26/18 4:19 PM, Paul Kosinski wrote:
I believe that the delays we have been observing are due to some
problem with the Boston Cloudflare servers, or, perhaps, Comcast has a
"transparent" caching proxy which is causing us trouble.
I recently installed the same build and configuration of ClamAV 0.100.2
on our Web server, a virtual machine hosted in NYC. It runs the same
extra code (curl etc.) to check the cvd version number that we have
locally. Since Friday, there have been no delays there, although there
have been several significant delays locally. They check at exactly
the same time as each other (i.e., via NTP synced cron jobs).
I also am now running, at each location, simple curls to read the first
few bytes of the cvd files (to get the version number), *and* to log
all the headers sent and received. These are also run at exactly the
same time (as each other) via cron.
The headers show that our local system uses the 'BOS' Cloudflare server,
while the remote one uses the 'IAD' server:
CF-RAY: 47fd0b7af79dae32-BOS
CF-RAY: 47fd0b8064d9c1b8-IAD
Interestingly, these two cron jobs sometimes show that the BOS server
is out of date relative to the IAD server. For example, the following
curls show that one cvd file served by the BOS server is one version
behind that served by the IAD server at the *same* time. The files'
"Last-modified" lines are of particular interest. The BOS server says
the file was last modified on Mon, 26 Nov 2018 at 06:19:22 GMT, while
the IAD server says the file was last modified on Mon, 26 Nov 2018 at
14:15:24 GMT.
In particular, the BOS "Date:" header says it's already about 14 mins
*later* than the IAD "Last-modified:" timestamp indicates. In other
words, the file delivered by the BOS server is, at time of *delivery*,
already about 14 minutes out of date.
_______________________________________________
clamav-users mailing list
clamav-users@lists.clamav.net
http://lists.clamav.net/cgi-bin/mailman/listinfo/clamav-users
Help us build a comprehensive ClamAV guide:
https://github.com/vrtadmin/clamav-faq
http://www.clamav.net/contact.html#ml