When using pools in the config, chrony is subject to some implementation
"problems" with libc's getaddrinfo() on many platforms.  This breaks DNS
round-robin as served by the DNS server.

There is a long standing "bug" in several libc implementations due to
strict adherence to RFC 3484 Rule #9.  There were many long arguments about
this in the 2007 era, with no resolution.

Thankfully RFC 6724 obsoletes 3484, but nobody's implemented it yet, and
it's not likely to get backported to stable distributions like Debian.

The end result here is that getaddrinfo() always sorts the output of IPv4
results and chrony will pick the first N in that list.  For example I have
a DNS record internally that has 8 servers, and I have chrony pick 4.
Every node has the same identical 4 node list instead of a random sampling
of the 4.

It would be nice if chrony were have an option to shuffle the list before
selecting.

Something like this:
pool pool.ntp.org iburst maxsources 4 shuffle

[0]: https://tools.ietf.org/html/rfc6724

- Ben Kochie

Reply via email to