
우리 생산 상자에서 ntpd에 문제가 있습니다. 생산 상자에 NTP 기능을 활성화하고 한 가지 문제를 관찰하고 있습니다.
상자의 초기화 프로세스에서 ntpd 데몬을 시작합니다. 그 시간 동안에는 인터넷 연결이 되지 않습니다. 아래는 내 작은 ntp.conf
파일 입니다.
driftfile /etc/ntp.drift
logconfig =syncstatus
server pool.ntp.org iburst
인터페이스가 나타나면 우리 상자는 인터넷 연결이 조금 늦게 시작됩니다. 그때 나는 ntpd가 시계를 동기화하지 않는다는 것을 알았습니다. 내가 할 때 ntpq -c as
, 나는 을 얻습니다 no association id's found
. 거의 30분 정도 기다렸는데 그래도 도착했어요no association id's found
ntpd를 다시 시작해야 합니다. 다시 시작한 후 ntpd는 시계를 동기화하고 모든 것이 정상적으로 작동합니다. 그러나 다시 상자를 재부팅하면 동일한 문제가 발생합니다. 다시 한 번 상자가 나타나고 인터넷에 연결할 수 있게 되면 ntpd를 다시 시작해야 합니다.
비슷한 종류의 문제에 직면한 사람이 있나요?
시간 인터페이스가 나타날 때까지 ntpd 시작을 지연해야 합니까?
업데이트
좀 더 실험을 해보고 다음 server pool.ntp.org iburst
으로 대체했습니다.pool pool.ntp.org iburst
. ntpd를 다시 시작할 필요가 없었습니다. 그래서 여기서 나에게 또 다른 질문이 생깁니다.
교체했는데 무슨 일이 일어났나요 server
?pool
?
pool
대신 항상 키워드를 사용해야합니까 ?server
?
언제 사용해야 pool
하며 언제 사용해야 할까요?server
?
나는 몇 가지 조사를 했고
pool is the same as server, except it resolves one name into several addresses and uses them all
그들이 같은 일을 하고 있다면 왜 server pool.ntp.org iburst
나에게는 효과가 없었지만 pool pool.ntp.org iburst
효과가 있었다는 것을 발견했습니다.
업데이트
pool
제안된 대로 대신을 사용했지만 server
여전히 부팅 시 시계가 동기화되지 않습니다. 이전에도 no association id's found
오고 있었는데 풀 사용 후 목록이 표시되네요.
GW:/admin# ntpq -c lpeer
remote refid st t when poll reach delay offset jitter
===================================================================== =========
time.google.com .POOL. 16 p - 64 0 0.000 +0.000 0.002
GW:/admin# ntpq -np
remote refid st t when poll reach delay offset jitter
time.google.com .POOL. 16 p - 64 0 0.000 +0.000 0.002
GW:/admin# ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 34173 8811 yes none none reject mobilize 1
GW:/admin# ntpq -c "rv 34173"
associd=34173 status=8811 conf, bcast, sel_reject, 1 event, mobilize,
srcadr=0.0.0.0, srcport=0, srchost="time.google.com", dstadr=0.0.0.0,
dstport=0, leap=11, stratum=16, precision=-19, rootdelay=0.000,
rootdisp=0.000, refid=POOL, reftime=(no time), rec=(no time), reach=000,
unreach=0, hmode=3, pmode=0, hpoll=6, ppoll=10, headway=0,
flash=1400 peer_dist, peer_unreach, keyid=0, offset=+0.000, delay=0.000,
dispersion=16000.000, jitter=0.002,
filtdelay= 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00,
filtoffset= +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00,
filtdisp= 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0
플래시 상태가 로 표시됩니다 1400
. ntp 문서에서 1400
플래시 상태를 찾을 수 없다는 의미는 무엇입니까 ?1400
업데이트
작동하기 시작했습니다. 나는 교체 iburst
한 minpoll 3 maxpoll 4
후 재부팅 중입니다. 수영장을 이렇게 이용했어요 pool pool.ntp.org minpoll 3 maxpoll 4
. 이 변경으로 인해 어떤 차이가 발생했는지 잘 모르겠습니다.
또한 minpoll과 maxpoll을 사용하지 말아야 한다는 내용도 읽었습니다.
Too frequent for a sustained period and public NTP services may block you. ntpd is already good at dynamically selecting the pool interval.
어쨌든 도와주신 모든 분들께 감사드립니다.
답변1
ntpd에 서버를 제공하면 시작 시 호스트 이름을 IP 주소로 확인하고 IP 주소를 사용하여 시간을 동기화하려고 시도합니다. 해당 호스트 이름이 확인되지 않으면 삭제됩니다. 문제가 해결되더라도 호스트 이름은 기억하지 않고 IP 주소만 기억합니다.
라인 의 서버가 server
동적 풀이 아닌 고정 IP 주소를 가진 로컬 호스트인 경우 호스트 이름을 실제 IP 주소로 바꿀 수 있으며 네트워크가 연결되지 않은 경우에도 삭제하면 안 됩니다. 시작.
대신 ntpd에 풀을 제공하면 호스트 이름이 유지됩니다(및 태그 지정 .POOL.
). 주기적으로(시작 시 포함) DNS에서 해당 호스트 이름을 확인하고 별도의 항목으로 얻은 모든 IP를 추가하고 가장 선호도가 낮은 IP 중 일부를 정리합니다.
명령 ntpq -np
이나 이와 동등한 명령을 사용하여 이 중 일부를 볼 수 있습니다.ntpq -n -c peers
이 모든 것에는 타이밍 문제와 ntpd 버전 문제도 있습니다. 이 정확한 문제는 ntpd의 버그로 제출되었으며 몇 가지 수정 변형이 있었습니다. ntpd의 일부 버전은 실패할 경우 호스트 이름 확인을 연기하지만 결국에는 포기할 수 있습니다. 따라서 네트워크 연결을 잠시 끊었다가 다시 연결하여 테스트하는 경우에는 문제가 발생하지 않을 수도 있습니다. 또한 ntp는 도달 가능한 호스트와 도달할 수 없는 호스트 모두에 대해 호스트 폴링 시간을 기하급수적으로 증가시키는 폴링 알고리즘을 사용합니다(시계 안정성과 시간 동기화로서의 호스트의 유용성에 따라 다름). 상한은 1024초(32분)입니다. 네트워크 연결 가능성이 변경되면 이를 알아차리는 데 시간이 오래 걸릴 수 있습니다. (폴링 시간과 간격은 에 나열되어 있습니다 ntpq -np
.)
또한 일부 부팅 시작 스크립트는 ntpdate 또는 유사한 도구를 사용하여 ntp.conf에서 시스템 시계를 서버로 설정하므로 ntpd가 시작되기 전에 시계가 부분적으로 동기화됩니다. 이것은 일회성 시도이며 실패할 경우 ntpd는 시계가 크게 잘못된 상태로 시작될 수 있습니다. 약간만 잘못된 경우 ntp가 이를 수정하지만, 크게 잘못된 경우 ntpd는 시계 동기화를 거부할 수 있으며 경우에 따라 ntpd 버전이 충돌하거나 종료될 수 있습니다. 일부 ntpd 버전에는 고유한 원샷 클럭 빅 스텝 옵션이 있습니다.