로컬 계층 2 NTP 서버 설정


9

인터넷에 연결되지 않은 로컬 네트워크에서 NTP를 설정하려고합니다. 가장 중요한 우선 순위는 동기화 시간이 100 % 정확하지 않더라도 네트워크의 컴퓨터가 서로 동기화되는 것입니다.

또한 배포 된 시스템의 설정을 복제하기 위해 NTP 계층 구조를 사용해야합니다. 내가하고 싶은 것은 다음과 같은 기계 계층 구조입니다.

Moon  (Main Server running Windows) (10.1.3.10)
|____Earth   (Linux x64 client) (10.1.3.1)
|____Mars    (Linux x64 client) (10.1.3.2)
|____Saturn  (Linux x64 client) (10.1.3.3)
|____RackCard23   (Linux x64 client and server to the two machines below)  (10.1.3.23)
     |___RackCard21   (Linux x64 client) (10.1.4.21)
     |___RackCard22   (Linux x64 client) (10.1.4.22)

랙 카드에는 2 개의 이더넷 포트가 있으며, 하나는 10.1.3.x 네트워크에 연결되고 다른 하나는 10.1.4.x 네트워크에 연결됩니다. 마스터 서버와 동기화되는 RackCard23 Moon은 10.1.3.x 네트워크에서 그렇게하고 RackCard22 / 23은 10.1.4.x 네트워크에서 RackCard23에 연결됩니다. 이는 RackCards22 / 23이 네트워크를 떠나 시간을 동기화하지 않기를 원하고 최종 배포 된 시스템을 복제하기 때문입니다.

지금까지 Moon과 동기화하여 필요한 모든 정보를 얻을 수있었습니다 (RackCard23 포함).

그러나 RackCard22와 23을 RackCard23과 동기화하는 데 어려움이 있습니다.

[root@RackCard23]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.3.10 iburst minpoll 4 maxpoll 4 prefer #This is what we want to happen
fudge   127.127.1.0 stratum 2   #Not sure about these two lines, was trying to force it to be a stratum 2 server
fudge   127.127.0.1 stratum 2

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
restrict 10.1.3.10 mask 255.255.255.255 nomodify notrap noquery

#Attempt to get to act as an NTP Server
broadcast 10.1.4.255

restrict 10.1.3.21 mask 255.255.255.255 nomodify notrap
restrict 10.1.4.21 mask 255.255.255.255 nomodify notrap

이것은 ntptrace의 출력입니다.

[rootRackCard23]# /usr/sbin/ntptrace
localhost.localdomain: stratum 16, offset 0.000000, synch distance 0.000030

보시다시피 머신은 "stratum 1"서버 (달)에 동기화되었지만 스트라타 16 서버로보고됩니다.

[root@RackCard23 awd]# /usr/sbin/ntpdate -d 10.1.3.10
21 Jun 13:55:09 ntpdate[19410]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.3.10 and service ntp
host found : 10.1.3.10
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
receive(10.1.3.10)
transmit(10.1.3.10)
server 10.1.3.10, port 123
stratum 1, precision -6, leap 00, trust 000
refid [LOCL], delay 0.04135, dispersion 0.00383
transmitted 4, in filter 4
reference time:    cfc99402.e010624d  Mon, Jun 21 2010  8:32:18.875
originate timestamp: cfc9dfad.48000000  Mon, Jun 21 2010 13:55:09.281
transmit timestamp:  cfc9dfad.47e27179  Mon, Jun 21 2010 13:55:09.280
filter delay:  0.04155  0.04155  0.04137  0.04135
         0.00000  0.00000  0.00000  0.00000
filter offset: -0.01448 0.000781 0.000537 0.000394
         0.000000 0.000000 0.000000 0.000000
delay 0.04135, dispersion 0.00383
offset 0.000394

21 Jun 13:55:09 ntpdate[19410]: adjust time server 10.1.3.10 offset 0.000394 sec

클라이언트 구성 (RackCard21 / 22)은 다음과 같습니다.

[root@RackCard21]# cat /etc/ntp.conf
# NTP Deamon Configuration File "ntp.conf"
# Created on 27/04/2010
# Original backed-up as "ntp.conf.backup"

server 10.1.4.23 iburst minpoll 4 maxpoll 4 prefer

server 127.127.1.0
fudge   127.127.1.0 stratum 10

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# restrict 127.0.0.1

restrict None mask 255.255.255.255 nomodify notrap noquery

그리고 ntptrace는 이것을 제공합니다.

[root@RackCard21]# /usr/sbin/ntpdate -d 10.1.4.23
21 Jun 14:04:34 ntpdate[14381]: ntpdate 4.2.2p1@1.1570-o Tue May 19 13:57:56 UTC 2009 (1)
Looking for host 10.1.4.23 and service ntp
host found : 10.1.4.23
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
receive(10.1.4.23)
transmit(10.1.4.23)
10.1.4.23: Server dropped: strata too high
server 10.1.4.23, port 123
stratum 16, precision -20, leap 11, trust 000
refid [10.1.4.23], delay 0.02568, dispersion 0.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: cfc9dfef.12b79516  Mon, Jun 21 2010 13:56:15.073
transmit timestamp:  cfc9e1e2.aeae7d56  Mon, Jun 21 2010 14:04:34.682
filter delay:  0.02573  0.02571  0.02568  0.02568
         0.00000  0.00000  0.00000  0.00000
filter offset: -499.609 -499.609 -499.609 -499.609
         0.000000 0.000000 0.000000 0.000000
delay 0.02568, dispersion 0.00000
offset -499.609286

21 Jun 14:04:34 ntpdate[14381]: no server suitable for synchronization found

따라서 사용하려는 서버가 stratum 16 서버 (동기화되지 않음을 의미)라고보고 있기 때문에 적합한 서버를 찾을 수 없습니다. 이것은 동기화되어 있다는 사실에도 불구하고 있습니다.

그래서 어떻게 든 RackCard23을 더 높은 지층 (이상적으로 지층 2)으로 만들어야합니다. 어떻게하면 되나요?

내가 이것을 며칠 동안 작동 시키려고 노력해 왔으므로 어떤 도움이라도 대단히 감사합니다!

편집하다:

크리스토퍼,

나는 ntpd를 다시 시작했다.

모든 리눅스 박스는 CentOS 5.4를 실행하고 있습니다.

이것은 제안한 명령의 출력입니다. 먼저 서버에서 :

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

[root@RackCard23]# /usr/sbin/ntpdc -c monlist
remote address          port local address      count m ver code avgint  lstint
===============================================================================
localhost.localdomain  34566 127.0.0.1              1 7 2      0      0       0
10.1.4.21                123 10.1.4.23              5 3 4    180      5       1
10.1.4.22                123 10.1.4.23              7 3 4      0      2       2

그리고 클라이언트에서 :

[root@RackCard21]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.4.23       .INIT.          16 u   10   16    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l   44   64    1    0.000    0.000   0.001

인터넷에 연결되어 있지 않은 경우 시간대는 무엇입니까?
dbasnett

시간 소스는 중요하지 않습니다. 100 % 정확한 시간 이후는 아닙니다. 원하는 것은 시간이 실제 시간보다 10 분 이상 떨어져 있어도 모든 컴퓨터가 서로 동기화되어 있다는 것입니다. 그래서 우리는 네트워크상의 랜덤 머신을 마스터 타임 소스, 즉 내부 시계로 사용하고 있습니다. 우리가 알고 받아들이는 것은 신뢰할 수 없지만 일이 동기화되는 한 괜찮습니다. 실제 배포 된 시스템에서는 제어 할 수없는 다른 시스템의 시간 소스와 동기화 될 것이며, 이는 더 정확하거나 정확하지 않을 수 있습니다.
fwgx 2016 년

답변:


5

Chris가 언급했듯이 계층 16은 서버가 실제로 서버와 동기화되지 않았 음을 나타냅니다. 확실하게 ntp 서비스를 다시 시작 했습니까? ( service ntpd restart) 나는 당신이 쉬운 물건을 그리워하지 않도록 노력하고 있지만 항상 그렇습니다!

진단을 돕기 위해 몇 가지 명령의 출력을 게시 할 수 있습니까?

ntpq -p클라이언트 및 서버에서. 구성한 서버와 해당 서버에 대한 통계를 표시해야합니다.
ntpdc -c monlist서버에서. 연결된 클라이언트를 표시해야합니다.

또한 OS를 언급하지 않았으므로 RHEL 스타일 명령으로 실행 중입니다. 다른 점이 있으면 알려주세요.

추가 정보 후에 편집
OK, 출력을 확인하십시오. 여기에 문제가 있습니다. 층 1 서버가 없습니다. 실제로 "달"은 현지 시계를 사용하고 있습니다. 그것은 자신을 계층 16 서버로보고하고 있습니다. 참고로 Stratum1 서버에는 로컬 GPS 또는 원자 시계가 있습니다. 그 중 하나가 있습니까? 그렇지 않으면 Moon은 시계를 다른 ntp 서버와 동기화해야합니다. 네트워크에 액세스 할 수 없으면 지층을 퍼지해야합니다. (이것은 당신이 '진정한'시간에 대해 너무 신경 쓰지 않아도됩니다. 당신은 그렇지 않지만 이것을 읽는 다른 사람은 그것을 주목해야합니다.)

Moon에서 ntp.conf 파일에 다음 행을 추가하십시오 fudge 127.127.1.0 stratum 10. 이렇게하면 로컬 시계가 계층 10으로보고됩니다. 그러면 다른 모든 서버가 로컬 계층 16 시계를 통해이를 사용하게됩니다.

-크리스토퍼 카렐


주요 질문 게시물에 결과를 추가했습니다.
fwgx 2016 년

크리스토퍼와 동의합니다. Strata ntp.org/ntpfaq/NTP-s-algo.htm
dbasnett

3

주제가 아닐 수도 있지만 로컬 Stratum 2 서버는 Stratum 1 서버에 연결해야하며 격리 된 네트워크 내에는 없습니다.

저렴한 GPS 모듈과 최소한의 전력 소비와 충분한 인터페이스 기능을 갖춘 단일 보드 컴퓨터 인 Raspberry Pi를 얻을 수 있습니다. GPS 모듈을 Raspberry Pi에 연결하고 적절한 소프트웨어를 사용하여 Pi를 네트워크에 연결하십시오. Stratum 1 서버가 Stratum 2 서버 인 Stratum 1 NTP 서버 일 수도 있고 모든 컴퓨터에 네트워크에 연결되어 있기 때문에 시간을 동기화 할 수도 있습니다.


2

NTPd는 다음에 따라 자체 지층을 설정합니다.

  1. 로컬 시계의 드리프트가 평가되지 않은 경우 계층을 16으로 설정하십시오.이 프로세스는 일반 서버에서 약 15 분이 소요되며 그 후 다음 단계로 진행됩니다.
  2. 구성된 모든 시간 서버에 연결하여 신뢰할 수있는 서버를 평가하고 선호하는 서버를 평가 한 후 로컬 계층을 가장 신뢰할 수있는 서버의 계층 + 1로 설정하십시오. 따라서 가장 신뢰할 수있는 서버가 1이면 로컬은 2입니다.

(이것은 반드시 이벤트의 순서는 아니지만 로컬 계층을 설정하기 위해 처리되는 순서입니다.)
또한 계층 16은 반드시 동기화되지 않은 것을 의미하지는 않습니다.


1
Moon은 실제로 SNMP (Simple NTP) 인 기본 W32Time NTP 서비스를 사용하는 Windows XP Pro x64 시스템이기 때문에 RackCard23이이를 적절한 NTP 서버로 인식하지 않으므로 지층을 다른 것으로 설정하지 않을 수 있습니다. 16보다?
fwgx 2016 년

D' oh, 게시물을 수정하기 전에 이것을 보지 못했습니다. 이것은 가능성이 높습니다. 계층 구조에서 적절한 ntp 클라이언트를 사용하지 않는 이유는 무엇입니까? (Windows 또는 Unix 기반)
Christopher Karel

2

따로, ntpq 출력에 대한 분석을 포함하겠습니다. 자신과 다른 사람을 위해 앞으로 일반적인 문제 해결을 돕기 위해.

먼저 서버에서 :

[root@RackCard23]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.1.3.10       .INIT.          16 u    -   16    0    0.000    0.000   0.000
 10.1.4.255      .BCST.          16 u    -   64    0    0.000    0.000   0.001

첫 번째 열은이 컴퓨터가 동기화하도록 구성된 두 서버를 나타냅니다. 주목할만한의 부족 *또는 +그 동기화 피어, 또는 보조 후보자를 나타냅니다. 이것은 서버가 여기에서 항목을 사용하지 않지만 최소한 체크인하는 것을 의미합니다.

열 3, "st"는 해당 서버의 계층을 나타냅니다. 이 경우 두 시스템 모두 로컬 시계를 사용하고 있음을 나타냅니다. (기본 지층은 16) 마지막 세 열은 두 시계에서 얼마나 떨어져 있는지 나타냅니다. "클럭의 초 차이"값 또는 두 머신 간의 대기 시간이 해당 대기 시간의 차이입니다. 숫자가 높을수록 나빠집니다.

이와 같이 동기화되지 않은 항목의 이유는 몇 가지 요인에 따라 달라질 수 있습니다. 클럭의 오프셋이 너무 큰 경우 ntp는 로컬 시간에 너무 크게 점프하기 때문에 시도조차하지 않습니다. 지터가 나빠지면 상황이 안정 될 때까지 클라이언트가 비 동기화됩니다. (이것은 일반적으로 일시적이지만 여전히 재발행입니다.) 대안 적으로, 구성된 서버가 동일하거나 더 높은 계층 값을 가지고있어 시간 소스로서 신뢰성이 낮음을 나타내면 클라이언트는이를 사용하지 않습니다.

-크리스토퍼 카렐

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