NTP가 원격 서버가 아닌 LOCAL과 동기화되는 이유는 무엇입니까?


11

따라서 현재 NTP 설정을 디버깅하려고하는데 단일 구성된 서버에서 오프셋이 3 초 이상이며 조정되지 않는 것으로 나타났습니다. ntpq 출력에서 ​​LOCAL (0)의 별표는 시스템이 10.130.33.201 서버 (모든 시스템과 동기화하려는 시스템의 또 다른 Linux 상자)가 아니라 자신과 행복하게 동기화되고 있음을 나타냅니다.

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.130.33.201   LOCAL(0)         9 u   49   64  377    0.242  -3742.2   1.049
*LOCAL(0)        .LOCL.          10 l    2   64  377    0.000    0.000   0.001

그리고 이것은 내 ntp.conf 파일입니다. 다른 사람이 작성했기 때문에 모든 것이 올바른지 100 % 확신하지 못합니다.

server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift

restrict -4 default  nomodify nopeer notrap
restrict -6 default  ignore

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

버스트와 iburst 및 minpoll / maxpoll에 대해 읽었으므로 필요하지 않을 수도 있지만 현재 문제와 관련이 있다고 생각하지 않습니다.

또한 배포 방법으로 인해 구성 파일을 변경하는 데 많은 작업이 필요하므로 실제로 변경해야 할 사항이 없기를 바랍니다. NTP의 작동 방식을 이해하지 못하는 경우가되기를 바랍니다.


편집하다 -

그래서 이것은 This question 과 중복되는 것처럼 보이지만 포스터에 충분한 대답이 있다고 생각하지 않으므로 서버보다 현지 시간이 선호 되는지 알고 싶습니다 . 또한 아래 답변 중 하나에 따라 prefer구성의 서버 줄 에서 키워드 를 사용 하고 다시 시작했지만 효과가없는 것 같습니다.

다른 질문에 대한 답변에서 알 수 있듯이 구성에서 "로컬"라인을 모두 제거하면 서버에 연결할 수 없으면 어떻게됩니까? NTP가 죽거나 계속 시도합니까?


중요 편집-

일반적으로 10.130.33.201 ( "서버")은 인터넷에 액세스 할 수 없으며 사용할 GPS 시간 소스가 없습니다. 중요한 부분은 시간이 실제로 얼마나 정확한지에 관계없이 시스템의 모든 장치가 서버와 동일한 시간을 갖는다는 것입니다.

그래서 어떻게 될지 알기 위해 NTP 풀 서버 중 하나를 서버의 구성 파일에 추가하여 로컬에서 시간을 얻는 것이 아니라 거기에서 시간을 얻었습니다. 이제 NTP 시간 서버에서 시간을 올바르게 얻습니다.

그런 다음 클라이언트는 이제 LOCAL (0)을 선호하지 않고 서버와 동기화합니다.

 ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.130.33.201   38.229.71.1      3 u   58   64  377    0.216  715621.   1.001
 LOCAL(0)        .LOCL.          10 l   18   64  377    0.000    0.000   0.001

새로운 질문-내 서버가 로컬 (원래 제공된 예)을 사용하는 경우 클라이언트가 "오, 10.130.33.201은 LOCAL (0)을 사용하고 있습니다. 흠, LOCAL (0) 서버도 있습니다"- -10.130.33.201 "을 통해 동일한 정보를 얻는 대신 직접 사용하겠습니다."

그 경우입니까? LOCAL (0)이 아닌 "소스로 직접 이동"하려고합니까? LOCAL (0)에서 시간을 얻으려면 서버가 필요하며 서버에서 시간을 얻으려면 클라이언트가 필요합니다. 현재 클라이언트 구성 파일에서 "로컬"서버를 제거하는 것이 유일한 옵션이지만, 왜 이런 일이 발생하는지 이해하고 가능하면 구성을 변경하지 마십시오 (구성 변경은 우리 주변 환경...).

또한 이것은 좋은 대답이없는 다른 복제본처럼 보입니다.


또한 10.130.33.201에 항상 네트워크 액세스가 가능한 경우 로컬 클럭 소스를 제거하십시오.
Aaron Copley

답변:


9

하나의 NTP 서버 만 구성하면 알고리즘은 누가 신뢰할 수 있는지 완전히 확신하지 못합니다. 비록 원격 호스트의 계층이 낮을지라도 알고리즘은 현지 시간이 더 신뢰할 만하다고 생각합니다.

prefer키워드를 설명과 함께 사용하여 server우선 시간 소스로 설정하십시오.


편집하다 -

그래서 이것은 이것이이 질문과 중복되는 것처럼 보이지만 포스터에 충분한 대답이 있다고 생각하지 않으므로 서버보다 현지 시간이 왜 선호되는지 알고 싶습니다.

진정으로 충분한 답을 얻으려면 매우 복잡한 알고리즘의 창을 파고들 것입니다. 설명서가 너무 구체적이지는 않지만 백서 또는 사양이 있다고 확신합니다.

다른 질문에 대한 답변에서 알 수 있듯이 구성에서 "로컬"라인을 모두 제거하면 서버에 연결할 수 없으면 어떻게됩니까? NTP가 죽거나 계속 시도합니까?

NTP 데몬은 종료되거나 중지되지 않지만 원격 서버에 도달하지 못한 후 동기화 시간을 종료합니다. 이것이 모범 사례에서 최소 3 개의 원격 서버를 제안하고 네트워크와의 연결이 끊어지지 않는 한 LCL을 사용하지 않는 이유입니다. 서버가 두 대 밖에 없을 때 세 대의 서버가 제안되었는데 동의하지 않기 때문에 어떤 서버를 선택합니까? 세 번째 서버는 알고리즘이 가짜 서버를 제거하는 데 도움이됩니다.

마지막으로 방금 정의하지 않은 것으로 나타났습니다 driftfile. 도움이 될까요?


두 지층의 차이를 만드는 것이 이것에 전혀 영향을 줍니까? 서버의 도움이 9보다 낮을까요?
JPhi1618

그것은 수도. 분명히 알고리즘 자체의 내부에 대해 많이 알지 못합니다. 그러나 지층을 퍼지해야하는 유일한 경우는 현지 시계입니다. 원격 서버를 수정으로 퍼지하지 않는 것이 좋습니다. 최소한의 간섭으로 최상의 소스를 결정하려면 NTP를 신뢰해야합니다. 당신은 약간의 압박을 주어야 할 경우가 생겼습니다.
Aaron Copley

제안 해 주셔서 감사합니다. 드리프트 파일이 있었지만 생성되지 않았으므로 어떻게되는지 확인하기 위해 제거했습니다. 로컬 회선을 제거하면 서버와 동기화되므로 무언가입니다. ntpd는 "원격 서버에 도달하지 못한 후 동기화 시간을 종료 할 것"이라고 말하지만 서버에 도달 한 후 다시 시작됩니까? 일시적인 네트워크 중단의 경우에 안전하고 싶습니다.
JPhi1618

아니요, 다시 시작되지 않습니다. 그냥 포기합니다. 이것은 성가 시며 나에게도 도움이되었습니다. 네트워크 연결이 끊어진 경우 NTP를 다시 시작해야합니다. ntp에 경로에 대한 권한이 없으므로 드리프트 파일이 작성되지 않았을 수 있습니다. 다시 확인하십시오.
Aaron Copley

7

NTP가 올바르게 설정하기에 오프셋 간격 (시스템 시간과 NTP 호스트 시간의 차이)이 너무 다른 것처럼 보입니다.

나의 제안,

 1. Stop the NTP service
 2. As root ntpdate -bs 10.130.33.201 to reset your time to something close
 3. Start the NTP service

그 후에는 아무런 문제가 없어야합니다.


2
머신이 VM이거나 다른 조건으로 인해 심각한 시간이 걸리는 경우 tinker panic 0NTP가 오프셋을 받도록 ntp 옵션을 설정할 수 있습니다 . 그러나 NTP 서버에서만 이것을 사용하십시오.
Zoredache

좋아, 나는 그것이 문제가되기 전에 1000 대 이상 떨어져 있어야한다고 생각한 다음 서버가 # 기호로 나열 될 것이라고 생각 했습니까? 그렇지 않습니까? "오프셋"은 몇 초 또는 밀리 초입니까?
JPhi1618

오프셋이 너무 높기 때문에 현재 10.130.33.201과 동기화되지 않지만 LCL이 더 바람직해지기 때문에 처음에는 충분히 표류한다는 사실을 수정하지는 않습니다. 나는 이것이 작동하는 드리프트 파일이라고 생각 prefer하고 트릭을 할 것입니다.
Aaron Copley

오프셋이 너무 높은 이유를 설명해 주시겠습니까? 1000보다 적으며 (way less) # 부호가 없습니다. 또한 두 시스템에서 실제 시간을 확인했으며 약 4 초 간격입니다.
JPhi1618

+/- 1000 ms ... +/- 1000 s 아님 . -3742 ms 입니다.
Aaron Copley

2

LOCAL 서버가 10.130.33.201 인 지층은 9이므로이 값으로 계산 된 로컬 지층 (9 + 1 = 10)은 지층 10의 로컬 LOCAL 서버와 경쟁합니다. 로컬 LOCAL 지층에는 네트워크 지연이나 지터가 없으므로 원격 서버보다 ntpd보다 약간 나아 보일 수 있습니다.

이 구성이 작동하려면 '마스터'LOCAL 서버를 9보다 낮은 계층으로 설정하십시오. 계층 1 서버로 추적 가능한 시간을 선호하려면 너무 낮지 않습니다.


감사. 최대한 빨리 확인하겠습니다. 유망 해 보인다.
JPhi1618

글쎄, 이전에 10.130.33.201 LOCAL 서버의 지층을 낮추려고했던 것 같습니다. 현재는 5로 설정되어 있으며 클라이언트는 6으로 표시하지만 계층이 10 인 자체 LOCAL을 선호합니다.이 구성은 며칠 동안 유지되었습니다.
JPhi1618

2

나는 이것이 오래되었다는 것을 알고 있지만, 당신이 옳다고 생각합니다. 아무도 ntpd 문제를 디버깅하는 방법을 보여주지 않습니다. 그것이 가능하다는 것이 밝혀졌습니다.

로컬 및 업스트림 서버에서 LOCAL (0)을 사용하는 것이 문제가 될 수 있다고 의심했을 때 올바른 방향으로 가고 있다고 생각합니다.

그것은 내가 비슷한 문제를 겪고있는 4 대의 서버로 이루어진 타임 아일랜드에 있었을 것입니다. 이들은 모두 서로의 동료로 설정되었으므로 귀하와 다른 문제 일 수 있습니다.

우선, 지난 몇 년 동안 ntpd 버전에서 지원되는 고아 모드라는 타임 아일랜드를 처리하는 더 좋은 방법이 있습니다.

doc.ntp.org의 고아 모드

처음에는 4 대의 서버 모두 동일한 계층이 10이고 로컬 시계를 선호했습니다. 나는 그것을 고쳤지만 여전히 현지 시계를 선호했습니다 (층은 중요합니다).

ntpq 명령 pe (피어)를 사용하여 rv가 발생하는 상황을 처리했습니다. 서버가 정보를 덤프하려면 연관 번호에 rv (readvar)를 사용해야합니다. pe와 같은 색인으로 정렬 된 것처럼 보이므로 같은 방식으로 숫자를 얻을 수 있습니다. 서버가 마음에 들지 않으면 거부 값을 표시 할 수있는 condition이라는 필드가 있습니다.

rv 출력에는 flash라는 필드가 있습니다. 모든 것이 잘되면 이것은 0이 될 것입니다. 그렇지 않은 경우 문제의 비트 마스크 (16 진수로 표시)입니다. 여기에서 찾을 수 있습니다.

ntpd 내부 디코드

내가 가진 문제는 0800 peer_loop였습니다. 시계의 신념이 중요하다는 것이 밝혀졌습니다. 로컬 시계와 원격 서버에서 LOCAL (0)을 보면 루프가 있다고 생각하는 ntpd가 있습니다. David Mills는 comp.protocols.time의 게시물에서 'NTP에서 루프를 피하는 방법'을 확인합니다 (2 링크 제한에 도달했습니다. 죄송합니다)

고유 한 refid를 설정하기 위해 refid 인수를 사용하여 퍼지 할 수 없었습니다. 수신자에서 여전히 LOCAL (0)으로 표시됩니다.

작동하는 것처럼 로컬 드라이버에 고유 한 인스턴스 번호를 사용하고있었습니다. 127.127.1. [0-3]. 서버와 퍼지 라인 모두에서 동일한 ID를 사용하십시오. 이 작업을 수행했을 때 서버는 일반적으로 일반적으로 로컬 시계를 사용하는 가장 낮은 계층 서버와 동기화되었습니다. 그러나 때때로 소스로 사용중인 다른 서버 중 하나를 사용하려고했습니다. 그러나 시간이 동기화되어 그 상태를 유지하고있는 것 같습니다.

아마도 너무 늦어서 도움을 줄 수는 없지만 NTP가 논리 및 문제 해결에 적합하다는 것을 보여주기 위해 제공합니다. 시행 착오로 답변에 도달하는 데 몇 시간이 걸리고 나중에 문서를 찾았습니다.


-1

한 번의 요청이 실패하더라도 서버가 NTP 요청을 원하는 NTS로 보내도록하려면 iburst를 사용하십시오.


더 나은 설명이 필요합니다.
Sven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.