시간을 수동으로 동기화할 때 ntpd가 "서버를 찾을 수 없습니다"라는 메시지를 표시하는 이유는 무엇입니까?

시간을 수동으로 동기화할 때 ntpd가 "서버를 찾을 수 없습니다"라는 메시지를 표시하는 이유는 무엇입니까?

내 서버는 IDC에서 호스팅되고 있는데, 이 IDC 서버는 인터넷에 접속할 수 없기 때문에 인터넷 NTP 서버를 사용할 수 있습니다. 하지만 IDC 서비스 제공업체에는 원자시계가 있으므로 원자시계와 시간을 동기화할 수 있습니다.
원자시계의 IP는 이고 192.168.90.118, 내 서버의 IP는 입니다 192.168.90.18. 내 서버의 운영 체제는 이고 Debian 8.11ntp를 설치했으며 sudo apt install ntpntpd 버전은 입니다 4.2.6p5.
서버 /etc/ntp.conf내용은 다음과 같습니다.

driftfile /var/lib/ntp/ntp.drift
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 192.168.90.118 version 3
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

원자 시계와 시간을 동기화하기 위해 아래 명령을 실행하려고 시도했는데 "서버를 찾을 수 없습니다"라고 표시됩니다.

sudo service ntp stop
sudo ntpd -gq

원자시계의 IP 주소에 ping을 시도했는데 연결이 가능했고 대기 시간도 짧았습니다. 나는 tcpdim을 사용하여 다음과 같이 원자 시계와 서버 사이의 일부 패킷을 캡처하려고 합니다.

sudo tcpdump -vvv -ni eth0 port 123

16:43:44.802334 IP (tos 0x0, ttl 126, id 12371, offset 0, flags [none], proto UDP (17), lenth 76)  
    192.168.90.118.123 > 192.168.90.18.123: [udp sum ok]NTPv3, lenth 48
        Server, Leap indicator: (0), Stratum 6 (secondary reference), poll 6 (64s), pricision -6
Root Delay: 0.000000, Root disprsion: 10.371246, Reference-ID: 95.31.153.26
            Reference Timestamp: 3843677595.431751999 (2021/10/20 08:13:15)
            Originator Timestamp: 3843708224.802159560 (2021/10/20 16:43:44)
            Receive Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
            Transmit Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
                Originator - Receive Timestamp: +97.394592739
                Originator - Transmit Timestamp: +97.394592739
16:43:46.802173 IP (tos 0x0, ttl 64, id 19514, offset 0, flags [DF], proto UDP (17), lenth 76)  
    192.168.90.18.123 > 192.168.90.118.123: [bad udp cksum -> 0x4b29!]NTPv3, lenth 48
        Client, Leap indicator: clocl unsynchornized(192), Stratum 0 (unspecified), poll 6 (64s), pricision -23
Root Delay: 0.000000, Root disprsion: 0.000091, Reference-ID: (unspec)
            Reference Timestamp: 0.000000000
            Originator Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
            Receive Timestamp: 3843708224.1802334560 (2021/10/20 16:43:44)
            Transmit Timestamp: 3843708226.802159634 (2021/10/20 16:43:46)
                Originator - Receive Timestamp: -97.394417439
                Originator - Transmit Timestamp: -95.394592365

위의 텍스트는 수동으로 입력되었습니다. 위 결과를 보면 kernelntp 패킷이 수신되고 서버와 클라이언트 간의 프로토콜이 일치하는 것으로 보입니다 . 하지만 내 서버의 ntpd가 패킷을 수신하거나 인식하지 못합니다. 어떻게 해결할 수 있나요?

다음과 같이 명령을 실행했습니다 ntpq -np.

ntpq: read: Connection refused

답변1

서비스 공급자에게 문의한 결과 NTP 서버는 Windows 기반이고 프로토콜은 SNTP입니다. 데비안 8.11의 기본 NTP 소프트웨어에서는 SNTP 패킷을 받아들일 수 없습니다. 그래서 ntp 버전을 업그레이드해야 합니다.

답변2

질문에 명시하지 않았지만(댓글에 명시한 대신) 시스템이 인터넷에 액세스할 수 없고 데이터 센터 서비스에만 액세스할 수 있으며 ntp는 포함되지 않고 sntp만 가능하다고 말씀하셨습니다.

실제 NTP 서버를 사용할 수 없고 GPS 동기화에 대한 대안을 얻을 수 없는 경우 유일한 옵션은 시스템에서 ntpd를 비활성화하고 sntp 클라이언트(아마도 cron에서)를 사용하는 것입니다.

관련 정보