엔테푸드

엔테푸드

ntpd일반 데몬을 사용하여 가상 머신이 실제로 실행되지 않고 시간이 유지되는지 테스트하고 싶습니다.조정시계.

macOS 시스템의 VirtualBox에서 Solaris 11.4(Intel용 Oracle 표준 이미지)를 실행하고 있는데 올바르게 동기화되지 않습니다. 가상 머신이 이 작업을 수행하기 위해 VirtualBox Guest Additions를 사용했을 수도 있고(이것이 어떻게 작동하는지 전혀 모르겠습니다) ntpd게스트에서 이를 실행하여 타이밍을 망칠 수도 있다는 생각이 들었습니다.

ntpd이것을 테스트하기 위해 Solaris VM에 설정해야 한다고 생각했습니다.감시 장치일부 공개 시간 서버이지만 어떻게든 로컬 시계를 수정하는 것을 방지합니다. 이렇게 하면 시간에 따른 변경 사항을 보고 기록하여 로컬 시계가 실제로 정확한 시간을 유지하고 있는지 확인할 수 loopstats있습니다 peerstats.

문제는 ntpd로컬 시계 조정을 중지하는 방법에 대한 팁을 찾을 수 없다는 것입니다.

나는 또한 openntpd과거에 실제 타이밍을 위해 OpenBSD에서 사용하는 시스템에서 이 작업을 수행하고 싶었습니다. 그런 다음 데몬은 ntpd방해 없이 백그라운드에 앉아서 모니터링할 수 있습니다. 그러나 당시에는 이를 달성할 방법도 찾을 수 없었습니다.

답변1

엔테푸드

당신에 대해 알아요~ 해야 하다ntpd를 사용할 때 내가 아는 유일한 옵션은 다음과 같습니다.

NTP 비활성화

위에서 본 바와 같이매뉴얼 ntp.conf페이지ntp를 비활성화할 수 있습니다.피드백 루프또는 일반인의 관점에서 말하면 시간 서버와 로컬 시계 간의 시간 수정을 계산하는 기능을 제거합니다. ntp.conf이 옵션을 활성화하는 데 필요한 줄은 다음과 같습니다.

disable ntp

참고: 이 옵션을 사용하면 시간 참조가 필요한 다른 시스템에 ntpd가 제공하는 시간이 잘못되거나 꺼질 수 있습니다. 외부 시스템의 시간 드리프트를 모니터링하려는 경우가 아니면(외부 시스템의 IP 거부 및 허용 사용) 한 줄을 사용하여 다른 시스템의 모든 시간 쿼리를 거부하는 deny것이 합리적으로 보입니다 .

노트:시스템 시계가 실제로 ntpd에 의해 "자유롭게 실행"되는지는 나에게 완전히 명확하지 않습니다. 그러나 이는 문서화된 옵션이므로 ntpd가 문서화된 옵션을 따르지 않으면 버그입니다.

미친

minsane minsane
이는 클러스터링 알고리즘에 대한 하나 이상의 실제 키메라를 생성하기 위해 시계 선택 알고리즘에 사용할 수 있는 최소 후보 수입니다. 해당 수량보다 적은 수량의 경우,시계는 규율이 없으며 자유롭게 작동하도록 허용됩니다..

이는 ntp.conf라인( in )을 설정하여 수행됩니다. 예를 들면 다음과 같습니다.

tos minsane 100

또는 다른 높은 숫자(사용 가능하거나 사용된 서버보다 큼).

참고: 클럭 값의 느린 변화를 피하기 위해 커널 드리프트 값을 0으로 재설정하는지 여부는 확실하지 않습니다. 커널 규율 기능을 비활성화하기 위해 추가 설정을 disable kernel갖는 것이 합리적일 수 있습니다 .

관련된

ntpd-qn

ntpd서버가 실행되는 동안 ntpq -pnntpd 서버가 시스템 시계 동기화를 얼마나 잘 수행하고 있는지 보고할 수 있습니다. 시차를 기록하는 또 다른 방법이 있습니다.

ntpdate-q

이 패키지 ntpdate(더 이상 사용되지 않음으로 표시됨)를 사용하여 시차를 확인할 수 있습니다.

ntpdate -q 'pool.ntp.org'         # marked as deprecated.

ntpdate -qu 'pool.ntp.org'명령은 실행하는 데 루트 권한이 필요하지 않습니다( -u"권한이 없는 네트워크 포트 사용"을 의미하지만 실행 파일은 사용자가 액세스할 수 있어야 함).

sntp

이를 쿼리하는 간단한 프로그램이 있습니다(-s 또는 -S 옵션이 사용되지 않으면 변경되지 않음).

sntp pool.ntp.org

날짜

이 프로그램은 rdate원격 시간(및 현지 시간)을 표시할 수 있습니다.

rdate -np pool.ntp.org; date

-n, (기본) RFC 868 시간 프로토콜 대신 SNTP(RFC 2030)를 사용하십시오.인쇄결과적으로 실제적인 변경이 필요하지 않습니다.

그러나 이 프로그램은 전체 초(분수가 아닌) 해상도로 제한됩니다. 그리고, 그것은솔라리스에는 옵션이 없습니다

만성병 환자

시스템 시계를 설정하지 않고 시차 테스트를 수행할 수 있는 ntp(chrony)용 대체 패키지:

chronyd -Q 'pool pool.ntp.org iburst'

나는 이것이 인터넷 ntp 시간과 시스템 시간 사이의 시차를 감지(변경하지 않음)하는 방법이라고 믿습니다.

답변2

나는 이것이 ntpd즉시 가능하다고 생각합니다.

이 두 가지를 종합하면 ntpd에 실시간 조정 없이 이러한 매개변수의 값을 올바르게 유지하는 모드가 있을 가능성은 거의 없습니다.시계, 사용 가능한 유일한 시계는 시스템 시계입니다.


귀하의 질문에 실제로 필요한지 확실하지 않습니다 ntpd. 모든 [S]NTP 클라이언트가 가능합니다.

약간의 코드가 만족스러우면 시스템 시계를 재보정하지 않고도 서버를 폴링하는 무언가를 함께 구성할 수 있습니다.

예를 들어 Python용 NTP 라이브러리는 다음과 같습니다.ntplib. 60초 폴 오프셋을 인쇄하는 스크립트는 다음과 같습니다.

import ntplib
import sys
import time

def main(*args):
    ntp_client = ntplib.NTPClient()
    while True:
        for server in args:
            try:
                response = ntp_client.request(server, version=3)
                print(response.offset)
                time.sleep(60)
            except ntplib.NTPException:
                print("query failed: {}".format(server))

if __name__ == "__main__":
    if len(sys.argv) == 1:
        # Do not use this server for commertial software without permission
        main('pool.ntp.org')
    else:
        main(sys.argv[1:])

파일에 넣으십시오 ntp_check.py. ntplib pip install ntplib또는 특정 배포판이 설치되어 있는지 확인하십시오 ( apt-get install python3-ntplib). 그런 다음 다음을 사용하여 호출하세요.

python3 ntp_check.py

관련 정보