[chrony-users] Changing hostnames for chronyc sources and sourcestats results

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-users Archives ]


I have run into what I consider confusing operation/a bug of chronyc for the server name results it returns.  When I run chronyc sourcestats or chronyc sources the “Name/IP address” field doesn’t always list the hostname/s that are entered into my chrony.conf file.

It seems like instead of chronyc isn’t’ generating it’s reports using the hostnames that are entered into my chrony.conf configuration file and  instead chronyd is taking the hostnames from the chrony.conf configuration file and then resolving it to an IP address and caching that information using that IP address to make the connections to the time servers. (which makes sense when pools are used.)  However when chronyc is called with the sources or sourcestats option, instead of using the original hostname it got from the chrony.conf file, It attempts to do a reverse DNS lookup of the numerical IP address it has been using. If reverse record is not setup in DNS for the output shows only the numerical IP address, in the “Names/IP address field.” If one reverse record exist it displays that FQDN instead of what was entered into chrony.conf and no IP address.  If a reverse lookup returns multiple FQDNs to the particular IP address it seems to randomly chooses one of the returned FQDNs to display in the list for that particular invocation of chronyc and no IP address. Which depending on your situation could return confusing results if it returns the name server pool name for more than one line.

 

Note: this is happening in chronyc 3.4 (the latest for RHEL 7) and also 2.1.1

Steps to reproduce 

1.       Configure DNS with multiple forward and reverse lookup records for a time server.

E.g.

172.0.0.51 realhostname1.example.test

172.0.0.51 time1.example.test

172.0.0.52 realhostname2.example.test

172.0.0.52 time2.example.test

172.0.0.53 realhostname3.example.test

172.0.0.53 time3.example.test

172.0.0.51 timepool.example.test

172.0.0.52 timepool.example.test

172.0.0.53 timepool.example.test

 

2.       Add to the chronyd configuration file ( e.g. /etc/chrond.conf ) 3 server lines, the first being the first hosts numerical ip address line, the second being time2.e… record  for the …52 IP address and for the third server use realhostname3.example.test ( I would never do this in reality it is just to prove the point.)

e.g.

server 172.0.0.51  #plus any additional needed settings

server time2.example.test  #plus any additional needed settings

server realhostname3.example.test  #plus any additional needed settings

 

 

3.       Restart chronyd (example on a systemctl box)

systemctl reload chronyd

4.       Run chronyc sources and or chronyc sourcestatus

 

Expected results

The sources lines to return the hostname or numerical IP address as configured in a servers line of the chrony.conf file possibly with or without that being followed by a slash and a numerical IP address of the actual host it is connected to incase the hostname in the configuration file points to an Obvious DNS based server pool of multiple numerical IP addresses. (Though for consistency of output and ease of figuring things out I would find it useful if it were to always having a / and Numerical IP address output for every systems regardless of whether it’s a the member of a DNS pool or not.) 

Note: To reduce the size of this message, I have not included any chronyc sources output but they return similar results for the Name fields. 

 

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

172.0.0.51/172.0.0.51                                      27  16   47m     +0.094      0.296   -216us   333us

time2.example.test/172.0.0.52                      29  17   52m     -0.080      0.110    +86us   119us

realhostname3.example.test/172.0.0.53     24  10   43m     -0.052      0.212   +528us   166us

 

Of if you feel you must have DNS reverse lookup results maybe have it list both the reverse resolved hostname and in parenthesis the configured hostname.

 

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

172.0.0.51(172.0.0.51)                                      27  16   47m     +0.094      0.296   -216us   333us

time2.example.test(time2.example.test)                29  17   52m     -0.080      0.110    +86us   119us

realhostname3.example.test(realhostname3.example.test)    24  10   43m     -0..052      0.212   +528us   166us

 

 

 

Actual Results

It performs a reverse lookup on the numerical IP address that it has cached from a previous forward lookup of the hostname for the corresponding server line of the chrony.conf files and lists a result of the reverse lookup.  If the DNS server returns multiple reverse records for a box with multiple reverse DNS entries, it seems to randomly chooses a hostname to display on each iteration.

Note: To make it a bit easier to follow along, I have copied pasted and edited a single output for each example to show what is going on. Thus all of the examples will have the exact same numbers on each line.  I am also making the assuming that the sort order of the servers does not change from invocation to invocation (though that assumption may be wrong.)

e.g., Least informative case scenario of basically useless results where there are multiple servers in a pool that have reverse lookups to the pool for the numerical IP address but the files was configured with multiple unique underling IP addresses or DNS names of members of the pool ending up with different span, frequency,… results for multiple sources lines all listed as the same FQDN.

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

timepool.example.test              27  16   47m     +0.094      0.296   -216us   333us

timepool.example.test             29  17   52m     -0.080      0.110    +86us   119us

timepool.example.test              24  10   43m     -0.052      0.212   +528us   166us

 

 

Some of the other possible outcomes for a three-time server configuration with 3 reverse lookup entries per time server IP address.

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

realhostname1.example.test      27  16   47m     +0.094      0.296   -216us   333us

time2.example.test                        29  17   52m     -0.080      0.110    +86us   119us

realhostname3.example.test      24  10   43m     -0.052      0.212   +528us   166us

 

 

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

timepool.example.test                27  16   47m     +0.094      0.296   -216us   333us

time2.example.test                      29  17   52m     -0.080      0.110    +86us   119us

timepool.example.test                      24  10   43m     -0..052      0.212   +528us   166us

 

[tst01 ~]$  chronyc sourcestats

210 Number of sources = 3

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev

==============================================================================

time1.example.test              27  16   47m     +0.094      0.296   -216us   333us

realhostname2.example.test/172.0.0.52             29  17   52m     -0.080      0.110    +86us   119us

timepool.example.test/172.0.0.53              24  10   43m     -0.052      0.212   +528us   166us

 

Additional Notes:

Thank you for taking the time to consider making this change as well as any related extra flags that would be needed to deal with any consequences (like additional flags) of this change, as it would make things less confusing/quicker to figure out for me and potentially others when they are trying to figure out which time server is which in the output and after a change of chrony.conf that they have actually connected to the time servers they meant to be connected to and what IP address they are connected to or to potentially point out that after they changed the configurations that they failed to restart chronyd after making a configuration change to say use a different hostname that currently points to the same numerical IP address.)

 

_________________________

Alexander Kohr

Unix Systems Administrator

Temple University Health System

 

 




This electronic message is intended to be for the use of the named recipient, and may contain information that is confidential or privileged. This communication may contain protected health information (PHI) that is legally protected from inappropriate disclosure by the Privacy Standards of the Health Insurance Portability and Accountability Act (HIPAA) and relevant Pennsylvania Laws. You can direct questions concerning PHI or HIPAA to the Corporate Compliance and Privacy Officer at (215) 707-5605. If you are not the intended recipient, please note that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this message in error, you should notify the sender immediately by telephone or by return e-mail and delete and destroy all copies of this message.


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/