자동 시간 동기화: `ntpdate`는 작동하지만 `chrony`는 작동하지 않습니다.

자동 시간 동기화: `ntpdate`는 작동하지만 `chrony`는 작동하지 않습니다.

Linux 서버에서 시간 동기화에 문제가 있습니다. 머신과 NTP 서버는 모두 (더 작은) 대학 데이터 센터에 있으며 로컬 주소도 마찬가지입니다.

이상하게도 이 ntpdate명령은 작동합니다.

ntpdate -u 172.16.0.25

산출:

17 Jan 15:03:53 ntpdate[25993]: adjust time server 172.16.0.25 offset 0.036043 sec

하지만 그렇지 chronyd않습니다. (그냥 멈춥니다.)

chronyd -q 'server 172.16.0.25 iburst'

자동 시간 동기화를 설정하기 위해 모든 것을 시도했지만 ntpd성공하지 못했고 마침내 의지했지만 chrony여전히 알아낼 수 없습니다.

이것이 일어난 일입니다 ntpd. ntpdate아래 지침에 따라 설치했습니다 .https://vitux.com/how-to-setup-ntp-server-and-client-on-debian-10. conf 파일에는 명령이 있습니다

server 172.16.0.25 prefer iburst

시스템 상태 ntp가 보고하는 경우

Jan 18 10:26:11 akulab1 ntpd[26957]: kernel reports active service TIME_ERROR: 0x41: Clock Unsynchronized

ntpq -p다음과 같은 출력이 있습니다

HKS-SRV01.unica .LOCL.           1 u    9   64   15    0.557  2275.65   9.515 – 

그러나 잠시 후 서비스가보고되었습니다.

Jan 18 10:31:01 akulab1 ntpd[26957]: ntpd exiting on signal 15 (Terminated)

NTP 동기화가 실패했기 때문입니다. 그러나 ntpdate -u 172.16.0.25 보고서는 sync: 18 Jan 10:33:13 ntpdate[26990]: step time server 172.16.0.25 offset 2.282101 sec(제대로 기억한다면...) – ksonofre 7분 앞으로

이것은 내 /etc/ntp.conf파일입니다:

driftfile /var/lib/ntp/ntp.drift

leapfile /usr/share/zoneinfo/leap-seconds.list

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server 172.16.0.25 prefer iburst

restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

restrict 127.0.0.1
restrict ::1

restrict source notrap nomodify noquery

NTP 서비스를 다시 시작했습니다.systemctl restart ntp

출력은 ntpq -np다음과 같습니다.

root@akulab1:~# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   63   64  377    0.518  104.685  14.815

그러나 service( systemctl status ntp)는 여전히 다음을 보고합니다.

Jan 18 11:04:10 akulab1 ntpd[27089]: kernel reports TIME_ERROR: 0x4041: Clock Unsynchronized

또한 NTP 서비스를 설정한 후 timedatectl set-ntp trueNTP 서비스가 종료되고 비활성 상태로 보고됩니다.

ntpd 서비스를 다시 시작했는데 활성화되었습니다. 또한 동기화를 위해 한 시간 넘게 기다렸지만 동기화를 받지 못했습니다(서버 주소 앞에 별표나 더하기 기호가 없음). 다음 출력은 다음과 같습니다 ntpq -np.

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   61   64  377    0.588  269.847  14.797

또한 다음은 명령의 출력입니다 ntpdate -qu.

18 Jan 13:57:44 ntpdate[1975]: no servers can be used, exiting

좋습니다. 위 명령은 아직 완료되지 않았으므로 ntpdate -qu 172.16.0.25다음과 같은 출력이 표시됩니다.

server 172.16.0.25, stratum 1, offset 0.435131, delay 0.02621
18 Jan 14:51:56 ntpdate[6951]: adjust time server 172.16.0.25 offset 0.435131 sec

그리고 ntpq -np다음이 주어진다:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   17   64  377    0.554  436.092  14.279

해결책은 아래 허용되는 답변에 나와 있습니다. 현재 시간 동기화가 작동하고 있다고 가정하지만 올바르게 동기화되지 않으면 계속 시계 드리프트를 추적하고 질문을 업데이트하겠습니다.


최종 솔루션은 이 문서에 게시되어 있습니다.NTP 서버에 연결할 수 있지만 시간이 선택/설정되지 않았습니다.

답변1

당신의 시계는 거의 확실하게 동기화되어 있습니다. "동기화되지 않은 시계"는 ntpd업스트림 소스와의 동기화를 기다리는 동안에만 적용되므로 오해의 소지가 있습니다.

NTP에는 두 가지 경로가 있습니다. systemd하나는 관리를 통해 timedatectl, ntpd다른 하나는 모니터링을 통해 ntpq. 혼자 떠나는 것이 좋습니다 timedatectl.

systemctl start ntp    # don't restart ntpd if it was already running
watch -n1 ntpq -pn     # while :; do clear; date; echo; ntpq -pn; sleep 1; done

처음에 연결 가능성이 0인 업스트림이 나열되어 약 5분 동안 이상하게도 377로 증가하는 것을 볼 수 있습니다. +왼쪽 열에는 시간 동기화 후보임을 나타내는 1이 있어야 하며 *최종적으로 승인된 시간으로 변경됩니다.

대기 시간 및 오프셋 필드는 밀리초 단위로 측정됩니다. 대학 WAN에서는 대기 시간이 낮을 것으로 예상하며 500나노초가 꽤 좋습니다. 몇 시간과 며칠 동안 오프셋은 0에 가까워져야 합니다.

다음은 내 서버의 안정적인 예에서 발췌한 것입니다. xDSL 회선의 경우 37밀리초의 지연 시간이 합리적으로 느껴집니다. 업스트림 서버의 오프셋은 놀라울 정도로 낮으며 지터는 허용 가능합니다.

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*51.155.16.62    .GPS.            1 u   10   64  377   37.420    0.524  34.067

NTP 명령을 사용하여 sysinfo동기화 상태를 볼 수 있습니다. 여기서는 출력의 첫 번째 줄을 보고 있습니다. sync_ntp이 줄이 있으면 내 클라이언트가 업스트림 서버와 동기화되었음을 확인할 수 있습니다.

ntpq -c sysinfo | head -n1
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,

마지막 경고. 그것은기초적인시간을 정확하게 유지하려는 서비스가 있는 경우 로컬 시스템의 시간을 변경하지 않습니다. 서비스는 시간 변경을 확인하고 현지 시계가 정확한 시간을 유지할 수 없다고 가정합니다. 그런 다음 시계를 수정하기 위해 매우 열심히 작동하며 이로 인해 결국 로컬 시계가 더 이상 업스트림과 동기화되지 않을 수 있습니다. 바라보다NTPD는 얼마나 자주(그리고 언제) 업데이트됩니까?

이런 일이 발생하면 NTP가 스스로 이를 인지하거나 수정할 때까지 (오랜 시간 동안) 기다려야 합니다. ntpd( systemctl stop ntp; systemctl disable ntp) 를 비활성화하고 중지한 다음 즉시 제거하고 다시 시작하여 이 문제를 직접 해결할 수 있습니다 /etc/adjtime. (이 제거/재부팅 단계를 두 번 수행해야 할 수도 있습니다.) 그런 다음 ntpdate -u 51.155.16.62시간을 올바르게 설정하고 다시 재부팅하십시오. 마지막으로 NTP( )를 다시 활성화합니다 systemctl enable ntp; systemctl start ntp.

이를 설치 한 경우 ntpdate쿼리를 사용하여 서버의 업스트림 시차를 지정할 수 있습니다 ntpdate -qu {server}. ntpd런타임에 시간을 설정하려고 하지 마세요 .

기타 참고자료

관련 정보