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 -pn
ntpd 서버가 시스템 시계 동기화를 얼마나 잘 수행하고 있는지 보고할 수 있습니다. 시차를 기록하는 또 다른 방법이 있습니다.
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
말하면 현재 시간을 조정하는 것뿐만 아니라,시스템 클럭 실행 속도를 제어하는 매개변수를 조정할 수도 있습니다.. 이는 이러한 조정의 효과를 모니터링하기 위해 암시적으로 작성되었습니다.
이 두 가지를 종합하면 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