주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ BaroSolution/가이드

NTP(Network Time Protocol) 설정 가이드

누리아이티 2023. 7. 29. 13:11

최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 관리자 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.

 

 

1. Windows 환경

 

1.1 NTP?

 

Network Time Protocol(네트워크 시간 프로토콜)의 약자로 네트워크 환경으로 구성된 장비(서버, PC, 통신장비, 방화벽 장비 등)의 시스템 시간을 동기화 하기 위한 규약이다.

 

윈도우에는

- 모든 윈도우서버는 NTP 서버가 될 수 있다.

- 모든 서버의 방화벽에서 UDP 123 번이 열려있어야 한다.

- NTP 서버와의 시간차이가 많이 날 경우(기본값: 15 시간) 동기화 되지 않는다.

  실제 시간과 근접한 시간으로 변경 후 동기화 할 수 있도록 한다.

- 데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라, 조금씩 맞춰 간다.

  (: Server#2 서버가 Server#1 서버 보다 시간이 빠를 경우, Server#1 번의 시간으로 Server#2 의 시스템시간을 동기화 할 경우, 동일한 시간대의 데이터가 생성되므로, 데이터 정합성에 오류가 발생한다. 이에 시간 동기화는 즉시 반영되는 것이 아니라, 조금씩 그 차이를 줄여나가는 방식이다. - 12 참조)

 

1.2 시스템 환경

 

NTP 시간을 제공해주는 서버를 "NTP 서버", NTP 서버로 시간 동기화를 요청하는 서버를 "Slave 서버"로 명명한다.

 

서버명 및 IP 주소

 

 

1.3 내부 NTP 서버

 

1) 외부 NTP 서버와 시간 동기화

 

내부 NTP 서버 시스템 시간을 인터넷 표준시(:time.bora.net)으로 설정한다.

 

① 실행서버

Server#1(IP:10.10.10.1)

 

② 시나리오

내부 NTP 서버 역할로 운용할 서버의 시간 동기화 대상을 외부 NTP(:time.bora.net, time.kornet.net)으로 설정하고, 설정(레지스트리)값을 확인 후 동기화 작업을 수행한다.

 

③ 작업

첫번째, 외부 NTP 서버를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd -> w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

 

1: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update
명령이 성공적으로 완료되었습니다

 

두번째, Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

 

2: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters
값 이름        값 종류           값 데이터
-----------------------------------------------------------------------------
ServiceMain    REG_SZ            SvchostEntry_W32Time
ServiceDll     REG_EXPAND_SZ    C:\WINDOWS\system32\w32time.dll
NtpServer      REG_SZ            time.bora.net,0x9 <- 외부 NTP 서버주소
Type            REG_SZ            NTP                   <- 외부 NTP 서버 사용

 

세번째, Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

               -> net start w32tm

 

3: 예상결과

C:\>net stop w32time
Windows Time 서비스를 멈춥니다..
Windows Time 서비스를 잘 멈추었습니다.
 
C:\>net start w32time
Windows Time 서비스를 시작합니다..
Windows Time 서비스가 잘 시작되었습니다.

 

네번째, 시간 동기화

* 시작 -> cmd -> w32tm /resync

 

4: 예상결과

[정상]
C:\>w32tm /resync
로컬 컴퓨터에 다시 동기화 명령을 보내는 중
명령이 성공적으로 완료되었습니다.
 
[오류] : 방화벽에서 외부 UDP 123 포트가 막혀 있을 경우 발생할 수 있다.
C:\>w32tm /resync
동기화 명령 전송 - local computer...
사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다.

 

2) NTP 서비스 제공을 위한 구성 확인

 

내부 NTP 서버가 외부 NTP 서버를 참조하는지 확인한다.

 

① 실행서버

Server#1(IP:10.10.10.1)

 

시나리오

내부 NTP 서버 역할로 운용할 서버의 서비스를 확인하여 Slave 서버에서 연결 할 수 있도록 구성 값을 확인한다.

 

작업

첫번째, Windows Time 서비스 구동 확인

* 시작 -> cmd -> sc query w32time

 

5: 예상 결과

C:\>sc query w32time
       SERVICE_NAME      : w32time
       TYPE              : 20 WIN32_SHARE_PROCESS
       STATE             : 4 RUNNING
                             (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
       WIN32_EXIT_CODE   : 0 (0x0)
       SERVICE_EXIT_CODE : 0 (0x0)
       CHECKPOINT        : 0x0
       WAIT_HINT         : 0x0

 

두번째, NTP 서비스 구동 확인

* 시작 -> cmd -> netstat -ano | findstr 123

 

6: 예상 결과

C:\>netstat -ano | findstr 123
 UDP    0.0.0.0:123      *:*    1128
 UDP    0.0.0.0:62123    *:*    1428
 UDP    [::]:123         *:*    1128

 

1.4 Slave 서버

 

1) Slave 서버 환경 구성

 

내부 NTP 서버(IP:10.10.10.1)를 기준으로 Slave 서버의 시스템 시간을 설정한다. 시간 차이가 너무 많을 경우 동기화가 되지 않으니, 수동으로 근접한 시간을 맞추고 동기화 할 수 있도록 한다.

 

① 실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

(각 서버별로 수행)

 

시나리오

시간 동기화 대상을 내부 NTP 서버(IP:10.10.10.1)로 설정하고, 동기화 작업을 수행한다.

 

작업

첫번째, 내부 NTP 서버(IP:10.10.10.1)를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd -> w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

 

7: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update
명령이 성공적으로 완료되었습니다.

 

두번째, Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

 

8: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters
값 이름        값 종류           값 데이터
-----------------------------------------------------------------------------
ServiceMain    REG_SZ           SvchostEntry_W32Time
ServiceDll     REG_EXPAND_SZ    C:\WINDOWS\system32\w32time.dll
NtpServer      REG_SZ           10.10.10.1 <- 외부 NTP 서버주소
Type            REG_SZ           NTP        <- 외부 NTP 서버 사용

 

세번째, Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

               -> net start w32tm

 

9: 예상결과

C:\>net stop w32time
Windows Time 서비스를 멈춥니다..
Windows Time 서비스를 잘 멈추었습니다.
 
C:\>net start w32time
Windows Time 서비스를 시작합니다..
Windows Time 서비스가 잘 시작되었습니다.

 

세번째, 시간 동기화

* 시작 -> cmd -> w32tm /resync

 

10: 예상결과

C:\>w32tm /resync
로컬 컴퓨터에 다시 동기화 명령을 보내는 중
명령이 성공적으로 완료되었습니다.

 

2) NTP 서버와 시간차 확인

 

특정 서버(ex.NTP 서버)와 실행한 서버와의 시간차이를 확인한다.

 

① 실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

(각 서버별로 수행하여 확인 할 수 있다.)

 

시나리오

특정서버(Master Server:10.10.10.1) Slave Server(10.10.10.2)시간 동기화 대상을 Master Server 설정하고, 동기화 작업을 수행한다.

 

작업

첫번째, Master Server 를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd -> w32tm /stripchart /dataonly /computer:10.10.10.1

  비교대상 서버와 시간이 일치한다면, 하기와 유사한 결과값을 볼 수 있다.

 

11: 예상결과

C:\> w32tm /stripchart /dataonly /computer:10.10.10.1
Tracking 10.10.10.1 [10.10.10.1].
The current time is 2012-04-18 오후 19:17:13 (local time).
19:17:13, +00.2676328s     -> 비교 대상 서버와 +00.2676328 초만큼 차이가 난다.
19:17:15, +00.2593851s
19:17:17, +00.2589499s
19:17:19, +00.2428931s
^C                         -> 중지하기 위해서는 “Ctrl + c”를 누르면 된다.
      +00.xxxxxxx(또는 -00.xxxxxxx)로 대상 NTP 서버와 차이나는 시간만큼 표기된다.
      ) +120.2428931s -> +120 초 차이가 남

 

1.5 NTP 설정 후 동기화 요청 및 동기화 확인

 

12: Slave 서버 동기화 설정

NTP 서버(IP:10.10.10.1) 서버를 시스템 시간으로 설정한다.
C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1/update
명령이 성공적으로 완료되었습니다.
 
Windows Time 서비스를 재기동한다.
C:\>net stop w32time
Windows Time 서비스를 멈춥니다..
Windows Time 서비스를 잘 멈추었습니다.
 
C:\>net start w32time
Windows Time 서비스를 시작합니다..
Windows Time 서비스가 잘 시작되었습니다.
 
NTP 서버(IP:10.10.10.1)로 지정한 서버와 동기화를 요청한다.
C:\>w32tm /resync
로컬 컴퓨터에 다시 동기화 명령을 보내는 중
명령이 성공적으로 완료되었습니다.
 
NTP 서버(IP:10.10.10.1)와 실행 중인 서버와의 시간차이를 확인한다.
C:\>w32tm /stripchart /dataonly /computer:10.10.10.1
10.10.10.1[10.10.10.1:123] 추적 중
현재 시간은 2012-04-19 오후 22:47:25 입니다.
22:47:25, +23.2364090s
22:47:27, +22.7004942s    -> 조금씩이지만 차이가 줄어드는 것을 볼 수 있다.
22:47:30, +22.1639462s
22:47:32, +21.6430236s
^C                        -> 중지하기 위해서는 “Ctrl + c”를 누르면 된다.

 

1.6 주기적인 시간 동기화

 

주기적으로 시간을 자동으로 동기화 하게 만드는데, 방법은 다음과 같다.

 

1) 시작 – 실행 – regedit (혹은 Winkey+R regedit)

 

2) HKEY_LOCAL_MACHINE\

   SYSTEM\

   CurrentControlSet\

   services\

   W32Time\

   TimeProviders\

   NtpClient

 

3) SpecialPollInterval 이름을 더블 클릭

 

4) 10진수로 바꿔서 본인이 원하는 숫자를 입력.

   60 = 60, 600 = 10, 3600 = 1시간, 86400 = 1

   초로 계산한다.

 

5) 시작 – 실행 – cmd (혹은 Winkey+R cmd)

 

6) Windows Time 서비스 재기동

net stop w32time 엔터

  net start w32time 엔터

 

7) Windows Time 서비스 재부팅 시 자동 실행

   sc config w32time start= auto

   sc triggerinfo w32time start/networkon stop/networkoff

 

1.7 참고 사항

 

1) NTP Client 활성화

 

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v Enabled /t REG_DWORD /d 1 /f

 

2) 동기화 요청주기 설정(60)

 

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 60 /f

 

3) 동기화 조건 설정

 

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxPosPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxNegPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f

 

기본 값은 54000(15시간)인데, 현재 시간과 NTP 서버의 시간이 15시간 이상 차이가 나면 동기화 하지 않는다. 이 값을 0xFFFFFFFF로 변경하면 시간 차이에 상관없이 무조건 동기화 하겠다는 뜻이다.

 

4) NTP 서버 설정

 

w32tm /config /syncfromflags:manual /manualpeerlist:"kr.pool.ntp.org"

 

NTP 서버는 기본적으로 "time.windows.com"을 우리나라 pool time server "kr.pool.ntp.org"로 지정함.

 

5) Windows Time 서비스가 자동으로 시작되도록 설정

 

sc config w32time start=auto
sc triggerinfo w32time start/networkon stop/networkoff

 

Windows Time 서비스는 기본적으로 Domain에 가입된 상태에서만 자동으로 시작되게 트리거 설정되어 있다. 따라서 이 트리거를 네트워크 시작/중지로 변경해 주는 것이다. 이렇게 하지 않으면 Workgroup 환경에서는 "sc config w32time start=auto" 해두어도 실제로는 리부팅 후 자동으로 서비스가 올라오지 않는다. 따라서 반드시 필요한 설정이라 할 수 있다.

 

6) Windows Time 서비스 재시작

 

net stop w32time
net start w32time

 

7) NTP 동기화 즉시 실행

 

w32tm /resync /nowait

 

8) 현재 NTP 동기화 상태를 확인

 

w32tm /query /status

 

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 60 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxPosPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxNegPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
w32tm /config /syncfromflags:manual /manualpeerlist:"kr.pool.ntp.org"
sc config w32time start=auto
sc triggerinfo w32time start/networkon stop/networkoff
net stop w32time
net start w32time
w32tm /resync /nowait
w32tm /query /status

 

9) Windows 현재 날짜 및 시간 확인 및 자동 설정

 

 

Windows 우측 하단의 날짜와 시간에 커서를 대고 "마우스 오른쪽 버튼"을 클릭하면 다음과 같은 팝업 화면이 나타난다.

 

 

위의 팝업 화면의 메뉴에서 "날짜/시간 조정(A)"을 클릭하면 다음과 같은 "날짜 및 시간"을 설정하는 화면이 나타난다.

 

 

위 화면의 항목 중 "자동으로 시간 설정" "자동으로 표준 시간대 설정" 항목을 "On"해야 한다.

 

 

2. Linux 환경

 

최근에는 Windows/서버/데이터베이스/네트워크 장비/저장장치에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 루트 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.

 

NTP를 사용하기 위해서는 기본적으로 NTP 패키지가 반드시 설치되어 있어야 한다. 설치 확인은 다음의 명령어를 실행하여 확인한다. 만약, 설치되어 있지 않으면 Redhat, CentOS 8 이하 버젼은 "yum install ntp" 그외는 "sudo apt-get install ntp" 명령어로 설치하면 된다.

 

[root]# rpm -qa | grep ntp
ntp-4.2.2p1-18.el5.centos
chkfontpath-1.10.1-1.1

 

ntpd 서비스를 서버 부팅 시 시작프로그램에 등록 및 ntp 활성화 여부 확인은 다음과 같은 명령어로 확인 할 수 있다.

 

[root]# chkconfig ntpd on
[root]# chkconfig --list | grep ntp
ntpd            0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

 

chkconfig 이용하여 서버 부팅시 ntpd 데몬 활성화 여부 확인 3, 5 level off(해제) 가 되어 있으면 자동 활성화 되지 않는다. 자동 활성화 하기 위해서는 3, 5 on(활성)으로 다음과 같은 명령어로 변경해야 한다.

 

[root]# chkconfig --level 3 ntpd on
[root]# chkconfig --level 5 ntpd on

 

우리나라에서 운영되고 있는 NTP 서버는 다음과 같다.

 

server kr.pool.ntp.org
server time.bora.net
server time.kornet.net

 

우리나라에서 운영되고 있는 NTP 서버를 ntpd 데몬 설정을 위한 설정 파일인 "/etc/ntp.conf"에 다음과 같이 설정한다.

 

[root]# vi /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
#server 3.centos.pool.ntp.org
server kr.pool.ntp.org iburst
server time.bora.net   iburst
server time.kornet.net iburst

 

iburst 옵션은 일종의 옵션 설정으로써 동기화 하는데 걸리는 시간을 짧게 줄여주는 옵션임.

 

ntpd 데몬 설정을 위한 설정이 끝나면 반드시 NTP 설정이 제대로 추가되었는지 확인한 후 NTP 데몬의 Restart 작업이 반드시 필요하다.

 

[root]# /etc/init.d/ntpd restart
ntpd를 종료 중: [  OK  ]
ntpd ()를 시작 중: [  OK  ]

 

ntpd 시간 확인은 다음과 같은 명령어로 확인할 수 있다.

 

[root]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 static.betaidc. 106.247.248.106  3 u    7   64    1    2.884  287.718   0.001
 time.bora.net   .INIT.          16 u    -   64    0    0.000    0.000   0.000
 183.110.225.61  .INIT.          16 u    -   64    0    0.000    0.000   0.000
 LOCAL(0)        .LOCL.          10 l    4   64    1    0.000    0.000   0.001

* 표시된 ip 가 현재 시간을 가져오고 있는 ntp 서버임

 

NTP를 사용하기 위해서는 기본적으로 NTP 패키지가 반드시 설치되어 있어야 한다. 설치 확인은 다음의 명령어를 실행하여 확인한다. 만약, 설치되어 있지 않으면 Redhat, CentOS 8 이상 버젼은 "yum install chrony" 명령어로 설치하면 된다.

 

[root@baropam ~]# rpm -qa | grep chrony
chrony-3.5-1.el8.x86_64

 

우리나라에서 운영되고 있는 NTP 서버는 다음과 같다.

 

server kr.pool.ntp.org
server time.bora.net
server time.kornet.net

 

우리나라에서 운영되고 있는 NTP 서버를 ntpd 데몬 설정을 위한 설정 파일인 "/etc/chrony.conf"에 다음과 같이 설정한다.

 

[root@baropam ~]# vi /etc/chrony.conf
 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.centos.pool.ntp.org iburst
server kr.pool.ntp.org iburst
server time.bora.net   iburst
server time.kornet.net iburst
 
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
 
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
 
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
 
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
 
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
 
# Allow NTP client access from local network.
allow 192.168.0.0/16
 
# Serve time even if not synchronized to a time source.
#local stratum 10
 
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
 
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
 
# Specify directory for log files.
logdir /var/log/chrony
 
# Select which information is logged.
#log measurements statistics tracking

 

ntpd 데몬 설정을 위한 설정이 끝나면 반드시 NTP 설정이 제대로 추가되었는지 확인한 후 NTP 데몬의 Restart 작업이 반드시 필요하다. (chrony 서비스 시작 및 부팅시 구동 등록)

 

[root@baropam ~]# systemctl start chronyd
[root@baropam ~]# systemctl enable chronyd

 

ntpd 시간 확인은 다음과 같은 명령어로 확인할 수 있다.

 

시간을 받아오는 서버 리스트 / chrony.conf 파일에 등록한 server 리스트)

 

[root@baropam ~]# chronyc sources
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ec2-54-180-134-81.ap-nor>     2   6   377    43   -349us[-1059us] +/-   24ms
^- time.bora.net                 2   6   377    42  +1398us[+1398us] +/-   90ms

 

시간을 받아 오는 서버 정보)

 

[root@baropam ~]# chronyc tracking
Reference ID    : 36B48651 (ec2-54-180-134-81.ap-northeast-2.compute.amazonaw)
Stratum         : 3
Ref time (UTC)  : Sun Mar 22 07:07:43 2020
System time     : 0.000130027 seconds slow of NTP time
Last offset     : -0.000710122 seconds
RMS offset      : 0.000583203 seconds
Frequency       : 19.980 ppm fast
Residual freq   : +0.142 ppm
Skew            : 3.235 ppm
Root delay      : 0.013462566 seconds
Root dispersion : 0.017946836 seconds
Update interval : 65.0 seconds
Leap status     : Normal

 

시간 상태 및 동기화 등 정보 확인)

 

[root@baropam ~]# timedatectl status
               Local time: Sun 2020-03-22 16:08:45 KST
           Universal time: Sun 2020-03-22 07:08:45 UTC
                 RTC time: Sun 2020-03-22 07:08:44
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

 

 

3. Solaris 환경

 

NTP(Network Time Protocol)는 컴퓨터 클라이언트나 서버의 시간을 다른 서버나 라디오 또는 위성 수신기와 같은 참조할 수 있는 타임 소스 또는 모뎀에 동기화하는데 사용된다.

 

1) 세 가지 유형의 시간 서버(Time Server)

 

peer host_address [key #] [version #] [prefer]

- 로컬 서버가 호스트 주소로서 지정된 원격 서버와 함께 symmetric active 모드로 운영.

- 로컬 서버는 원격 서버에 맞추어 동기화 할수 있음.

 

server host_address [kery #] [version #] [prefer] [mode #] server

- 로컬 서버가 command에서 이름이 지정된 원격 서버와 함께 client 모드로 운영.

- 이 모드에서 로컬 서버는 원격 서버에 맞추어 동기화될 수 있지만 원격 서버는 로컬 서버에 동기화  

  할 수 없음.

 

broadcast host_address [key#] [version #] [ttl #]

로컬 서버가 broadcast 모드로 운영된다는 것을 지정한다. 이 모드에서 로컬 서버는 명령어에서 지정된 broadcast/multicast 주소의 클라이언트 무리에게 정기 적인 broadcast 메시지를 전송한다.

- key 주소에 전송된 모든 패킷이 지정된 키 번호를 사용하여 암호화된 인증 필드를 포함

- version outgoing NTP 패킷에 사용되는 버전 번호를 지정 Version , , 선택 기본 버전 .

- prefer 호스트를 선택된 호스트로 표시, 동기화를 위해 다른 비교 가능한 호스트보다 이 호스트가 선택.

 

2) NTP SERVER 설정. (server 모드) 방법

 

(sun>root)/etc/inet# cp ntp.server ntp.conf
(sun>root)/etc/inet# vi ntp.conf
# Either a peer or server.  Replace "XType" with a value from the
# table above.
#server 127.127.XType.0 prefer
#fudge 127.127.XType.0 stratum 0
server 127.127.1.0 ---> 언제나 로컬로 돌아갈수 있음.
server time.kriss.re.kr prefer
server 127.127.1.0
server gps.bora.net
server ntp.ewha.net
server time.bora.net
server time.nuri.net
server ntp2.gngidc.net
server time.kriss.re.kr
 
#broadcast 224.0.1.1 ttl 4 -->기본 설정 (네트웍내 여러개의 ntp 서버가 존재할 경우 변경)
broadcast 192.168.0.222 ttl 4
wq!

 

3) NTP SERVER 설정. (피어(peer) 모드) 방법

 

peer  gps.bora.net key 0 version 3 prefer --> server 모드와 동일 server 설정대신 peer 설정.

 

(sun>root)/etc/inet# /etc/init.d/xntpd start
(sun>root)/etc/inet# ps -ef | grep ntp
    root  479  400  0 08:40:55 pts/2    0:00 grep ntp
    root  456    1  0 08:23:07 ?        0:01 /usr/lib/inet/xntpd
(sun>root)/etc/inet# ntpq -p (NTP 서버에게 피어 리스트에 관해 질의)
    remote          refid      st t when poll reach  delay  offset    disp
==============================================================================
 sun            0.0.0.0        16 -    -  64    0    0.00    0.000 16000.0
 gps.bora.net    0.0.0.0        16 u  48  64    0    0.00    0.000 16000.0
(e220>root)/# snoop -d hme0 port 123
Using device /dev/hme (promiscuous mode)
192.168.0.222 -> gps.bora.net NTP  symmetric active (Fri Feb 24 08:35:26 2006)
gps.bora.net -> 192.168.0.222 NTP  server (Sat Jan 19 03:58:31 2002)
        e220 -> 192.168.0.222 NTP  client (Fri Feb 24 08:35:46 2006)
192.168.0.222 -> e220        NTP  server (Fri Feb 24 08:35:47 2006)

 

4) NTP Client 설정

 

(sun>root)/etc/inet# cp ntp.client ntp.conf

 

기본 ntp.client 파일은 multicast를 사용하여 ntp 업데이트를 수신한다. NTP 클라이언트가 이러한 업데이트를 수신할 수 있는 장소를 제한하려는 경우 이것을 broadcast로 변경한다. (broadcast 패킷은 다른 서브넥에 전달되지 않는 반면 multicast 패킷은 전달 된다.)

 

(sun>root)/etc/inet# /etc/init.d/xntpd start
#multicastclient 224.0.1.1 --> 기본설정
server 192.168.0.222
wq!
 
(sun>root)/etc/inet# ps -ef | grep ntp
    root  479  400  0 08:40:55 pts/2    0:00 grep ntp
    root  456    1  0 08:23:07 ?        0:01 /usr/lib/inet/xntpd
(sun>root)/etc/inet#
(sun>root)/etc/inet# ntpq -p
    remote          refid      st t when poll reach  delay  offset    disp
==============================================================================
 sun            0.0.0.0        16 -    -  64    0    0.00    0.000 16000.0
 gps.bora.net    0.0.0.0        16 u  48  64    0    0.00    0.000 16000.0
 

 

remote-원격 피어, refid-피어가 동기화되는 호스트, st-stratum 번호, t-유형 즉 unicast, multcst, local(- = 알수 없음), poll-초 단위 폴링 간격, reach-도달 가능성 레지스터

* 원격에서 현재 선택된 피어를 나타낸다.

+ 호스트가 동기화에 대한 수락 가능한 피어이지만 수락되지 않았음을 나타냄.

_ 수락 불가능

 

 

4. HP-UX 환경

 

최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 루트 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.

 

1) SERVER 설정 (Time Server)

 

/etc/ntp.conf 구성

 

$ vi /etc/ntp.conf
server 0.0.0.0(맨 마지막 줄 서버IP)

 

 

Start xntpdDeamon

 

$ vi /etc/rc.config.d/netdaemons
export NTPDATE_SERVER=0.0.0.0   (ntp server IP Address or hostname)
export XNTPD=1 <------- 0 1로 변경

 

XNTP Deamon시작

 

$ /sbin/init.d/xntpd start    <------- Deamon시작

 

XNTP 확인

 

$ ntpq -crv
status=c011 sync_alarm, sync_unspec, 1 event, event_restart
system="UNIX/HPUX", leap=11, stratum=16, rootdelay=0.00, rootdispersion=0.00, peer=0, refid=0.0.0.0, reftime=00000000.00000000  Thu, Feb  7 2036 15:28:16.000, poll=4, clock=c7bba289.c8740000  Fri, Mar 10 2006 16:00:25.783, phase=0.000, freq=0.00, error=0.00

* 여기서 'reftime=' 부분이 0이면 아직 server에서 sync 받지 못한 것임. 이 부분이 16진수로 표시되면 time informationclient에게 줄 준비완료.

 

$ ntpq -crv
status=0544 leap_none, sync_local_proto, 4 events, event_peer/strat_chg
system="UNIX/HPUX", leap=00, stratum=4, rootdelay=0.00, rootdispersion=885.01, peer=2116, refid=LOCAL(1), reftime=c7bba37a.1c2c2000  Fri, Mar 10 2006 16:04:26.110, poll=6, clock=c7bba3b1.8ecdb000  Fri, Mar 10 2006 16:05:21.557, phase=0.000, freq=0.00, error=885.01

 

$ ntpq -p
  remote           refidst t when poll reach   delay   offset    disp
=====================================================
*LOCAL(1)        LOCAL(1)         3 l   21   64  377     0.00    0.000   10.01

* 5분 정도 기다려 이 명령어로 remote부분에 * 표시가 생기면 정상적으로 동작하는 것임.

 

2) CLIENT 설정

 

  /etc/ntp.conf time server IP 설정

 

$ vi /etc/ntp.conf
server 0.0.0.0   {Time Server IP Address 또는 Hostname(/etc/hosts 등록되어 있어야 함)}

 

② 여기에서 주의를 요하는데, clock syncronization 초기화 하는데 있어 ntpdate를 사용하는데 반드시 xntpd daemon이 떠 있으면 않된다.

 

$ ps -ef | grep xntpd
$ /sbin/init.d/xntpd stop

* Daemon 떠 있으면 종료한다. 또한 종료되지 않을 경우 Kill 죽인다. (kill -9 사용)

 

$ ntpdate <ip address>

 

xntpd시작

 

$ vi /etc/rc.config.d/netdaemons
--------- 생략 ---------
export NTPDATE_SERVER=0.0.0.0   (ntp server IP or hostname)
export XNTPD=1 (0 1로변경)
$ /sbin/init.d/xntpd start (Deamon 시작)

 

xntpd 확인

 

$ ntpq -p

* 5분 정도 기다려 이 command remote부분에 * 표시가 생기면 정상적으로 동작하는 것임.

 

$ ntpq -crv
status=0644 leap_none, sync_ntp, 4 events, event_peer/strat_chg
system="UNIX/HPUX", leap=00, stratum=5, rootdelay=0.18, rootdispersion=10.70, peer=46996, refid=192.168.1.177, reftime=c7bbba2d.7bee7000  Fri, Mar 10 2006 17:41:17.484, poll=6, clock=c7bbba3b.9a39b000  Fri, Mar 10 2006 17:41:31.602, phase=-0.234, freq=-28.50, error=0.26

**server database server 인 경우 시간을 되돌리기는 큰문제를 일으킬 수 있습니다. 따라서 ntp 사용시 time backward disable 하는 기능이 있다. -x option을 사용하여 이 기능을 사용할 수 있다.

 

$ vi /etc/rc.config.d/netdaemons
export NTPDATE_SERVER=ntp server IP or hostname
export XNTPD=1
export XNTPD_ARGS=-x  =>-x option 추가
 
$ /sbin/init.d/xntpd stop
 
$ /sbin/init.d/xntpd start

* -x option 기능을 사용하면 시간이 되돌려지지는 않고 서서히 clinet쪽 시간을 느리게 하여 시간을 fix 하게 한다.

 

3) 장애유형

 

sbin/init.d/xntpd start 명령을 실행하면 xntpd 데몬이 시작되지 않고 다음과 같은 오류가 발생된다.

"socket(AF_INET, SOCK_DGRAM, 0) failed: Too many open files

 

[해결]

xntpd에 필요한 파일 설명자수는 시스템의 인터페이스 수와 열려 있는 몇 개의 일반 파일에 따라 결정

maxfiles:

=========

xntpd -d -d -d를 실행하면 열려있는 인터페이스 수가 표시된다.

일반 작업의 경우 fd 10을 더 추가 해야 한다.

 

기본규칙

maxfiles   60 -> 120  (double it)

나중에 lan 인터페이스를 추가 하는 경우 maxfiles를 늘려야 한다.

nfiles:

=======

sar -o temp -v 1 120을 실행하여 nfile이 최대 값에 도달 했는지 확인한다. 그럴 경우 커널 nfile의 크기를 늘린다.

16:54:03 text-szovproc-szovinod-szov  file-szov

16:54:04   N/A   N/A 103/276   0    0/476   0  355/920   0

                                               ^^^^^^^

추가 maxfiles 또는 nfile을 사용하여 새 커널을 만드는 경우 /sbin/init.d/xntpd start를 실행하여 xntpd 데몬을 시작해야 한다.

 

 

5. AIX 환경

 

최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 루트 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.

 

1) NTP 설명

 

NTP(Network Time Protocol) UDP 포트 123번을 사용

② 이 포트가 Open되어 잇지 않으면 NTP 서버와 동기화할 수 없음.

8~10분 정도가 지난 후 서버와 클라이언트 간에 시간이 동기화 됨.

 

 

2) NTP 서버 구성

 

현재 Timezone / 시간 확인

 

현재 Timezone이 어떻게 설정 되었는지 확인한다. 하기 결과창에는 CDT , 북아메리카 Timezone으로 설정되어 있다.

 

$ date
Sat Mar 14 01:01:43 CDT 2015

 

한국에서 일반적으로 "KORST-9" Timezone을 사용하기 때문에 AIX 설치 시 기본적으로 설정되는 "CDT" Timezone "KORST-9"로 변경해준 후에 서버 재기동을 해야 한다.

 

Timezone을 변경하고, 다시 로그인을 하게 되면 Timezone KORST로 변경된 것을 확인할 수 있으나, 이는 실제 AIX에 적용된 값이 아닌 변경된 값을 보여 주는 것일 뿐이다. Timezone 변경 후, 반드시 재기동이 필요하다.

 

$ chtz "KORST-9"

 

NTP Server 설정

 

/etc/ntp.conf 파일을 하기와 같이 수정한다.

-첫번째로 참조한 Timeserver는 뒤에 prefer를 붙여줌.

-아래 ntp.conf 파일 상에서는 참조한 NTP_Server_IP 뒤에 prefer를 붙여 줬음.

-아래 설정파일을 해석해 보면, NTP_Server_IP를 첫번째로 참조하고, 두번째로 자기 자신의 Local clock을 참조하겠다고 설정한 것이다.

$ vi /etc/ntp.conf
#broadcast client
server NTP_server_IP prefer  #NTP Server IP as reference
server 127.127.1.0           #local clock as reference
fudge 127.127.1.0 stratum 0  #values for local clock
driftfile /etc/ntp.drift         #where to keep drift data
tracefile /etc/ntp.trace

 

xntpd daemon 확인

 

$ lssrc -a | grep -i xntpd
Xntpd    tcpip    inoperative

 

ntp 활성화 정보 확인

 

$ ntpq -nq
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.0.0.1         0.0.0.0      3 u    7   64    1    2.884  287.718   0.001
 127.127.1.0  127.127.0.1     16 u    -   64    0    0.000    0.000   0.000
 

 

NTP daemon 시작

 

동기화 과정에서 NTP Client 측에서 시간이 뒤로 돌아가는 것을 방지하기 위해서, Daemon 시작시, -X option을 준다. (Time backward 방지, 클라이언트 시간 흐름을 조절하여 동기화)

 

$ startsrc -s xntpd -a "-x"
0513-059 The xntpd Subsystem has been started. Subsystem PID is 6946978.

 

NTP daemon 확인

 

xntpd daemon 확인

 

$ lssrc -a | grep -i xntpd
Xntpd    tcpip    inoperative

 

ntp 활성화 정보 확인

 

$ ntpq -nq
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.0.0.1         0.0.0.0      3 u    7   64    1    2.884  287.718   0.001
 127.127.1.0  127.127.0.1     16 u    -   64    0    0.000    0.000   0.000
 

 

 

3) NTP 클라이언트 구성

 

현재 Timezone / 시간 확인

 

Timezone NTP Server와 동일하게 맞춰 줌.

xntpd Server / Client 1000(16) 이상 차이가 나면 더 이상 동기화 하지 않는다.

NTP Server / Client간 시간을 맞추기 위해, Client단에서 #smitty date 명령어를 통해 16분 이상 차이가 나지 않게 설정해 준다. (권장사항은 NTP Server와 가장 근소한 시간으로 맞추는 것)

 

NTP Client 설정

 

$ vi /etc/ntp.conf
#broadcast client
server NTP_server_IP prefer  #NTP Server IP as reference
 
driftfile /etc/ntp.drift         #where to keep drift data
tracefile /etc/ntp.trace

참조하고자 하는 NTP Server IP Server 항목에 입력

 

NTP daemon 시작

 

동기화 과정에서 NTP Client 측에서 시간이 뒤로 돌아가는 것을 방지하기 위해서, Daemon 시작시, -X option을 준다. (Time backward 방지, 클라이언트 시간 흐름을 조절하여 동기화)

 

$ startsrc -s xntpd -a "-x"
0513-059 The xntpd Subsystem has been started. Subsystem PID is 6946978.

 

NTP daemon 확인

 

대부분의 경우 Reach 값이 377에 다다르면 동기화가 완료된다.

보통 6~10분 사이에 동기화되며, 바로 시간을 맞추려면 NTP 서버가 active인 상태에서 클라이언트 단에서 "$ ntpdate <ip_of_NTP_Server>" 또는 "setclock <NTP_Server_Hostname>" 명령어를 수행해 주면 된다.

ntpupdate 명령어 수행 후 xntpd daemon을 재기동해 준다.

 

 

4) 재기동시에도 NTP 자동실행 설정

 

/etc/rc.tcpip 파일 수정

 

start /usr/sbin/xntpd "$src_running" "-x"

 

AIX default 설정 상에는 xntpd이 자동 실행으로 설정이 되어 있지 않음.

/etc/rc.tcpip 파일에서 xntpd와 관련된 라인의 주석을 해제하고 위의 명령어 형태로 수정.

 

 

5) 참고사항

 

xntpd를 이용하여 시간을 동기화 한 후 Time 서버의 시간을 바꾸면 전체 클라이언트의 시간이 바뀐다. Time 서버의 시간을 임시로 바꾸려면 Time 서버 단에서 xntpd를 정지 시킨 후($ stopsrc -s xntpd) 작업한다.

 

 

6. FreeBSD 환경

 

최근에는 서버/네트워크 장비에 대한 시간 동기화(타임서버 시간 동기화)하는 방법으로 NTP(Network Time Protocol)을 이용하여 루트 계정에서 시스템의 시각을 현재 시각으로 설정할 수 있다.

 

NTP를 사용하기 위해서는 기본적으로 NTP 패키지가 반드시 설치되어 있어야 한다. 설치 확인은 다음의 명령어를 실행하여 확인한다. 만약, 설치되어 있지 않으면 "pkg install ntp" 명령어로 설치하면 된다.

 

[root]# pkg install ntp

 

ntpd 서비스를 활성화 하기 위해서는 다음 같은 명령어를 사용하여 "/etc/rc.conf"에 등록 해야 한다.

 

[root]# /etc/rc.d/ntpd enabled
 

 

우리나라에서 운영되고 있는 NTP 서버는 다음과 같다.

 

server kr.pool.ntp.org
server time.bora.net
server time.kornet.net

 

우리나라에서 운영되고 있는 NTP 서버를 ntpd 데몬 설정을 위한 설정 파일인 "/etc/ntp.conf"에 다음과 같이 설정한다.

 

[root]# vi /etc/ntp.conf
#
# NTP
#
server kr.pool.ntp.org iburst
server time.bora.net   iburst
server time.kornet.net iburst

 

ntpd 데몬 설정을 위한 설정이 끝나면 반드시 NTP 설정이 제대로 추가되었는지 확인한 후 NTP 데몬의 Restart 작업이 반드시 필요하다.

 

[root]# /etc/rc.d/ntpd restart
ntpd not running? (check /var/run/ntpd.pid).
Starting ntpd.

 

ntpd 시간 확인은 다음과 같은 명령어로 확인할 수 있다.

 

[root]# ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.freebsd.pool. .POOL.          16 p    -   64    0    0.000    0.000   0.000
 106.247.248.106 141.223.182.106  2 u    7   64    1    4.412    0.544   0.000
 time.bora.net   204.123.2.5      2 u    7   64    1    5.206    7.741   0.000
*send.mx.cdnetwo 204.123.2.5      2 u    1   64    1    3.968    3.807   0.446
 211.52.209.148  216.239.35.12    2 u    1   64    1   11.862    2.838   0.259
 dadns.cdnetwork 204.123.2.5      2 u    2   64    1    4.833    0.005   0.408
 92.223.73.5 (st 106.247.248.106  3 u    -   64    1    5.015    1.397   0.482

* 표시된 ip 가 현재 시간을 가져오고 있는 ntp 서버임