14

I've got a system that is not running ntpd on which I'm attempting to update the clock using ntpdate. The system is an appliance that appears to be CentOS 6 based.

When I run ntpdate 0.pool.ntp.org, I get:

8 Sep 17:52:05 ntpdate[7445]: no server suitable for synchronization found

However, when I do ntpdate -d 0.pool.ntp.org, I get:

8 Sep 17:55:14 ntpdate[9499]: ntpdate 4.2.2p1@1.1570-o Fri Nov 18 13:21:21 UTC 2011 (1)
Looking for host 0.pool.ntp.org and service ntp
host found : 4.53.160.75
transmit(4.53.160.75)
receive(4.53.160.75)
transmit(4.53.160.75)
receive(4.53.160.75)
transmit(4.53.160.75)
receive(4.53.160.75)
transmit(4.53.160.75)
receive(4.53.160.75)
transmit(4.53.160.75)
transmit(64.16.214.60)
receive(64.16.214.60)
transmit(64.16.214.60)
receive(64.16.214.60)
transmit(64.16.214.60)
receive(64.16.214.60)
transmit(64.16.214.60)
receive(64.16.214.60)
transmit(64.16.214.60)
transmit(54.236.224.171)
receive(54.236.224.171)
transmit(54.236.224.171)
receive(54.236.224.171)
transmit(54.236.224.171)
receive(54.236.224.171)
transmit(54.236.224.171)
receive(54.236.224.171)
transmit(54.236.224.171)
transmit(50.22.155.163)
receive(50.22.155.163)
transmit(50.22.155.163)
receive(50.22.155.163)
transmit(50.22.155.163)
receive(50.22.155.163)
transmit(50.22.155.163)
receive(50.22.155.163)
transmit(50.22.155.163)
server 4.53.160.75, port 123
stratum 2, precision -23, leap 00, trust 000
refid [4.53.160.75], delay 0.03160, dispersion 0.00005
transmitted 4, in filter 4
reference time:    d7b867d0.f9841075  Mon, Sep  8 2014 17:37:20.974
originate timestamp: d7b86c03.b6a49dae  Mon, Sep  8 2014 17:55:15.713
transmit timestamp:  d7b86c02.7e12a51e  Mon, Sep  8 2014 17:55:14.492
filter delay:  0.03189  0.03188  0.03172  0.03160
         0.00000  0.00000  0.00000  0.00000
filter offset: 1.218061 1.217856 1.218023 1.217968
         0.000000 0.000000 0.000000 0.000000
delay 0.03160, dispersion 0.00005
offset 1.217968

server 64.16.214.60, port 123
stratum 2, precision -23, leap 00, trust 000
refid [64.16.214.60], delay 0.04886, dispersion 0.00006
transmitted 4, in filter 4
reference time:    d7b86425.55948a73  Mon, Sep  8 2014 17:21:41.334
originate timestamp: d7b86c03.f7d91219  Mon, Sep  8 2014 17:55:15.968
transmit timestamp:  d7b86c02.bed42c3c  Mon, Sep  8 2014 17:55:14.745
filter delay:  0.04919  0.04892  0.04912  0.04886
         0.00000  0.00000  0.00000  0.00000
filter offset: 1.210967 1.210879 1.210967 1.210836
         0.000000 0.000000 0.000000 0.000000
delay 0.04886, dispersion 0.00006
offset 1.210836

server 54.236.224.171, port 123
stratum 3, precision -20, leap 00, trust 000
refid [54.236.224.171], delay 0.04878, dispersion 0.00011
transmitted 4, in filter 4
reference time:    d7b864eb.b06fee7d  Mon, Sep  8 2014 17:24:59.689
originate timestamp: d7b86c04.2b9d2547  Mon, Sep  8 2014 17:55:16.170
transmit timestamp:  d7b86c02.f1e80bed  Mon, Sep  8 2014 17:55:14.944
filter delay:  0.04977  0.04950  0.04878  0.04887
         0.00000  0.00000  0.00000  0.00000
filter offset: 1.214091 1.214069 1.213755 1.213750
         0.000000 0.000000 0.000000 0.000000
delay 0.04878, dispersion 0.00011
offset 1.213755

server 50.22.155.163, port 123
stratum 2, precision -23, leap 00, trust 000
refid [50.22.155.163], delay 0.07384, dispersion 0.00005
transmitted 4, in filter 4
reference time:    d7b869c9.2b3f3d0b  Mon, Sep  8 2014 17:45:45.168
originate timestamp: d7b86c04.75472e97  Mon, Sep  8 2014 17:55:16.458
transmit timestamp:  d7b86c03.384a83b1  Mon, Sep  8 2014 17:55:15.219
filter delay:  0.07408  0.07414  0.07384  0.07387
         0.00000  0.00000  0.00000  0.00000
filter offset: 1.214115 1.214122 1.214012 1.214069
         0.000000 0.000000 0.000000 0.000000
delay 0.07384, dispersion 0.00005
offset 1.214012

 8 Sep 17:55:15 ntpdate[9499]: step time server 4.53.160.75 offset 1.217968 sec

Based on my previous searches, this result (with the various receive() lines and the offset) suggests that it is communicating with the remote NTP servers correctly (not blocked by a firewall). So, why does it not update my clock when I run it?

csyria
  • 265

2 Answers2

16

Try running it as:

ntpdate -u 0.pool.ntp.org

The -u configures ntpdate to use an unprivileged port, which it always does when you use the -d option.

Therefore, it it works with -u and -d but not without either, I'd double check your firewalls.

From the man page:

-u Direct ntpdate to use an unprivileged port for outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronize with hosts beyond the firewall. Note that the -d option always uses unprivileged ports.

garethTheRed
  • 33,957
  • 1
    This did it. I'm guessing I have a more restrictive firewall somewhere beyond this server, which I was missing because -d worked. Thanks! – csyria Sep 08 '14 at 19:36
2

add this rule in iptables:

iptables -t nat -A POSTROUTING -p udp --sport 123 -j MASQUERADE --to-ports 1025-65535
Chris Davies
  • 116,213
  • 16
  • 160
  • 287
  • 2
    Hello Norberto. This may well solve the problem but it would be very helpful if you could edit your answer to explain why it does so. – Chris Davies May 03 '16 at 14:33
  • 2
    To the downvoter: a reason for the downvote would be courteous and quite possibly helpful. IMO there's nothing intrinsically wrong with this answer that a little explanation couldn't solve. – Chris Davies May 03 '16 at 14:36