![ntpq 피어 출력 설명](https://linux55.com/image/205963/ntpq%20%ED%94%BC%EC%96%B4%20%EC%B6%9C%EB%A0%A5%20%EC%84%A4%EB%AA%85.png)
ntpq 명령에서 다음 출력을 얻습니다.
# ntpq -pn
remote refid st t when poll reach delay offset jitter
================================================================================
*192.168.1.1 10.10.4.1 2 u 68y 1024 170 0.198 0.584 0.606
68y
칼럼은 무엇을 의미하나요 when
? 문서에 따르면 마지막 패킷을 수신한 후 일정 시간이 지났다고 표시됩니다. 이것은 수신된 마지막 패킷이 68년 전에 수신되었음을 의미합니까? 믿을 수 있나요?
# ntpq --version
ntpq 4.2.8p11
답변1
이 reach
값은 이전에 원격 NTP 서버를 폴링하려는 8번의 시도 결과를 8진수로 표현한 것입니다. 8진수 값은 마지막 3번의 폴링 시도가 실패했음을 나타내는 170
이진수 값에 매핑됩니다 .01111000
이 poll
값은 현재 폴링 간격을 나타냅니다. 귀하의 경우 1024초가 기본 최대값입니다. 이는 ntpd
원격 시간 서버 192.168.1.1에 대한 연결이 오랫동안 유지되었으며 합리적으로 양호한 delay
, offset
및 값 jitter
으로 입증되는 것처럼 합리적으로 양호한 동기화가 달성되었음을 나타냅니다. 결과적으로 poll
값을 최대 허용 값으로 조정했습니다.
이 reach
값은 마지막 3번의 폴링 시도가 실패했음을 나타내 므로 poll
값 1024는 구성된 원격 NTP 서버의 마지막 폴링 성공 이후 최소 3076초가 경과해야 함을 의미합니다.
내부에ntpq 하위 명령의 소스 코드, when
값은 다음과 같이 계산됩니다.prettyinterval()
기능. 이름에서 알 수 있듯이 시간 간격의 길이를 매개변수로 사용하고 이 매개변수는 함수로 계산됩니다.when()
. 현재 타임스탬프와 마지막으로 수신된 타임스탬프 사이의 간격을 계산합니다. 또는 수신된 타임스탬프가 0인 경우 현재 타임스탬프와 마지막 참조 타임스탬프 사이의 간격을 계산합니다.
when()
큰 값을 생성하는 유일한 방법은 마지막 수신 타임스탬프에 0이 아니지만 예기치 않게 작은 값이 있거나 마지막 수신 타임스탬프가 0인 경우인 것 같습니다.그리고마지막 참조 타임스탬프는 0이 아니지만 예상외로 작습니다.
내 추측으로는 원격 NTP 서버가 마지막으로 도달했을 때 응답으로 의미 없는 NTP 타임스탬프를 보냈을 수 있습니다. 아니면 로컬 시스템 시계가 정말 이상합니다. 몇 가지 간단한 계산 후에 원격 NTP 서버의 타임스탬프는 약 1954년일 수도 있고 시스템의 로컬 시간 개념은 약 2090년일 수도 있습니다.