고객이 제공 한대로 여러 개의 NTP 서버를 사용하도록 구성된 ntpd 4.2.6p5를 실행하는 격리 된 네트워크에서 Ubuntu 14.04 서버를 배포합니다 (pool.ntp.org에 액세스 할 수 없음). 우리의 벙어리 터미널 클라이언트 장치 는 Larry Doolittle 의 이전 버전의 BusyBox (1.00-rc2) 및 ntpclient 2010 을 실행합니다.
이 설정은 수년간 훌륭하게 작동했지만 최근에는 새로운 고객과의 장애물이되었습니다. 그들은 ntpdate-debian
Linux 서버에 관한 한 자체적으로 잘 작동하는 5 개의 사내 NTP 서버 주소를 제공했습니다 . 그러나 BusyBox 쪽에서 ntpclient
는 “분산이 너무 높음”으로 표시됩니다. 디버그 출력 ntpclient
에서 NTP 서버에서 “1217163.1”을 가져 오지만 지원하는 최대 값은 절대 값입니다 (65536).
$ /usr/sbin/ntpclient -s -i 15 -h 10.17.162.250 -d
Configuration:
-c probe_count 1
-d (debug) 1
-g goodness 0
-h hostname 10.17.162.250
-i interval 15
-l live 0
-p local_port 0
-q min_delay 800.000000
-s set_clock 1
-x cross_check 1
Listening...
Sending ...
recvfrom
packet of length 48 received
Source: INET Port 123 host 10.17.162.250
LI=0 VN=3 Mode=4 Stratum=4 Poll=4 Precision=-20
Delay=60745.2 Dispersion=1346801.8 Refid=10.31.10.21
Reference 3668859928.942079
(sent) 3668859928.708371
Originate 3668859928.708371
Receive 3668859928.963271
Transmit 3668859928.963369
Our recv 3668859928.708371
Total elapsed: 0.00
Server stall: 93.09
Slop: -93.09
Skew: 255443.94
Frequency: 0
day second elapsed stall skew dispersion freq
42463 56728.708 rejected packet: abs(DISP)>65536
이것들은 모두 같은 LAN에있는 모든 장치이므로 솔직히 말하면 흐릿합니다. 놀랍습니다.
ntpq -pn
Ubuntu 14.04 서버 의 출력 결과는 다음과 같습니다 .
user@host:~$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
127.127.1.0 .LOCL. 10 l 1025 64 0 0.000 0.000 0.000
10.17.162.249 10.17.6.10 5 u 23 1024 37 0.865 1381.07 697.260
10.31.10.22 .LOCL. 1 u 1044 1024 17 29.586 -838.06 397.342
10.17.6.10 10.31.10.21 4 u 1065 1024 17 0.366 105.245 402.999
*10.31.10.21 132.246.11.238 3 u 5 1024 37 29.418 794.292 616.796
10.17.6.11 10.31.10.21 4 u 1038 1024 17 0.408 120.030 381.058
내 질문은 :
- 분산이란 무엇이며 그 가치를 바꿀 수있는 것은 무엇입니까?
- NTP 서버에서 더 자세한 정보를 얻기 위해 어떤 명령을 실행할 수 있습니까?
- 결함이 Ubuntu 서버 측에 잘못 존재할 수
ntp.conf
있습니까? 실제로 특별한 것은 없습니다. - 이 경우에 chrony로 전환하면 아무것도 변경됩니까?
답변
나는 여기에 대한 답변에서 혼란이 진행되는 것을 봅니다. ntpclient
적어도 -s
모드에서는 스타터 가 완전한 NTP 클라이언트로 작동하지 않고 하나의 패킷 만 보내고 받기 때문에 “마지막 8 개의 패킷 수신”이 없습니다. 실제로 자체 분산을 추정하지는 않습니다.
대신, 인쇄되는 값은 서버가 반환 한 패킷에서 “루트 분산”(rootdisp)이라는 값으로, 해당 서버 간의 총 오류 / 변동량과 정확한 시간의 추정치입니다. 이 계산 방법은 매우 간단합니다. 모든 NTP 서버는 외부 시계 (예 : 라디오 또는 GPS 수신기) 또는 다른 NTP 서버에서 시간을 가져옵니다. 서버가 외부 클럭에서 시간을 얻는 경우 루트 분산은 해당 클럭의 예상 최대 오류입니다. 다른 NTP 서버에서 시간을 가져 오는 경우 해당 루트 분산은 서버의 루트 분산 에 네트워크 링크가 추가 한 분산입니다.
혼동의 한 가지 점은 ntpq와 chrony는 사람들이 찾고있는 분산 및 루트 분산을 초 단위로 표시하지만 ntpclient는 마이크로 초 단위로 표시한다는 것입니다 . 어쨌든 1217163의 값은 여전히 높습니다. 좋은 NTP 서버는 몇 밀리 초 내에 시간을 알고 있습니다. 수십 또는 수백 밀리 초 안에 나쁜 것. 귀하의 시간은 +/- 1.2 초 이내에만 신뢰할 수 있다고 말합니다.
NTP 온 전성 검사를 비활성화 하는 -x 0
또는 -t
옵션 (ntpclient의 버전에 따라)을 전달하여 실제로 ntpclient가이 서버와 동기화되도록 할 수 있습니다 . 대략 정확한 시간 (몇 초 내에) 만 필요한 경우에는 충분할 수 있습니다. 그러나 ntpclient는 그러한 나쁜 서버와의 동기화를 거부하는 데 상당히 합리적입니다. ntpq
지연 시간이 낮더라도 우분투 시스템 의 출력에 모든 서버에 수백 밀리 초의 지터가 표시되어 매우 신뢰할 수없는 네트워크, 불규칙한 시간을 제공하기 위해 모든 서버 의 음모 또는 기본 을 나타냅니다 서버 자체의 시간 관리 문제.
또한 서버 10.31.10.22는 LOCL
(특별하지 않은 로컬 시계) 의 신용을 광고 하지만 지층은 1 이라는 사실에 관심이 있습니다 . 일반적으로 로컬 시계는 지층 10으로 퍼지되어 마지막 리 소트 동기화 소스로만 사용됩니다 무리가 표류하는 것을 막기 위해 10.31.10.22가 잘못 구성되어 나머지 네트워크에 나쁜 시간을 제공하거나 NTP가 통제 할 수없는 일부 프로그램에 의해 좋은 시간으로 훈련되고 있습니다.이 경우 잘못된 구성은 단순히 LOCL
refid를 알리는 것입니다 . 예를 들어 GPS
또는 시간을 제공하는 모든 것으로 재정의해야합니다 .
답변
“분산이란 무엇입니까?”에 대한 부분 답변입니다.
전형적인 NTP 왕복 여행 :
client | | server
t1 |------->| t2
t3 |<-------| t4
그러면 다음 공식을 사용하여 오프셋 (클라이언트와 서버 간의 시간 차이)과 지연 (네트워크 이동 시간의 필수)이라는 두 가지 값이 생성됩니다.
offset= ((t4 - t3) + (t1 - t2)) / 2
delay = (t4 - t1) - (t3 - t2)
클라이언트는 마지막 8 개의 패킷 중에서 현재 오프셋을 선택하여 지연이 가장 적은 패킷을 선택합니다.
동일한 8 개의 패킷을 사용 하여 마지막 단계에서 선택한 오프셋에 대해 이러한 8 오프셋 차이의 가중 평균을 수행 하여 분산 을 계산합니다 . 여기서 지연은 가중 계수로 사용되어 작은 지연에 더 큰 가중치를 부여합니다. 이 값의 “확산”을 측정 한 것으로, 특히 여러 항목을 선택할 수있는 경우 시간 서버의 품질을 계산하는 데 사용됩니다.
답변
분산 및 왜곡은 엄청 나며, 로컬 클록에서 해당 피어로의 오프셋이 매우 큽니다. 오프셋을 로컬 date
과 비교 하고 시계를 수동으로 설정해야합니다.
ntpq -p
모든 피어를 사용하여 호스트에서 ntpd를 실행하고 표시 하십시오. 더 좋은 것을 선택합니다.
답변
이 시스코 문서 에 따르면 , ” 초 단위로보고되는 분산 은 로컬 클록과 서버 클록 사이에서 관찰 된 최대 클록 시간 차이”입니다. 완전히 손상되지 않은 ntp 서버를 사용하면 높은 분산이 발생하지 않아야합니다. 유일하게 가능한 시나리오는 클라이언트가 ntp를 초기화하고 현재까지 로컬 시계 만 사용할 수있는 경우입니다. 그럼에도 불구하고,보고 한만큼 높은 분산은 2 주 이상 꺼져있는 시계에 해당합니다 .
BIOS에서 시계 (및 날짜조차도)를 조정하거나 ntpdate
시작하기 전에 한 번 발행하여 로컬 시계가 처음에 너무 멀지 않은지 (두 시간 정도는 여전히 허용 될 수 있음) 충분해야합니다. ntpd
클라이언트에서.