Simulation is ...

Virtual = Real

Flight Sim 자세히보기

ㆍ Linux

[Linux, CentOS] ntp 상태 확인, ntpdate, ntpstat, ntpq, chrony

FlightSim 2020. 9. 22. 13:57
320x100

0. 확인 순서 (ntp 혹은 chrony)
1. OS 버젼 확인 (cat /etc/*-release)
2. 설치 여부 확인 ( rpm -qa ntp 혹은 chrony) : chrony 권장
3. 데몬 실행 여부 확인 (ps -ef | grep ntp 혹은 chrony)
4. 설정 파일 수정 (/etc/ntp.conf 혹은 /etc/chrony.conf)
5. 데몬 종료/실행 (systemctl stop/start/restart chronyd 혹은 service ntpd stop/start/restart)
6. 동기화 여부 확인 (ntpq -p , ntpdate, ntptime, ntpstat 혹은 chronyc sources, chronyc trackning, timedatectl status)
7, 부팅시 자동 실행 선택 (systemctl enable/disable chronyd 혹은 chkconfig ntpd on/off)

ntp 서버와의 상태 확인 : ntpq -p, ntpstat, ntptime

ntpstat와 ntptime 명령을 통해 실제 ntp 서버와의 통신에 문제가 있는지 확인

(서버 호스트(ip) 앞에 기호가 없는 경우가 있을 수 있음, - 기호가 없다가도 곧 나타날 수 있으며, 유동적)

ntp 상태 확인 :

1) 비정상 상태 :

[root@ ~]# ntpstat

unsynchronised

polling server every 64 s

[root@ ~]#ntptime | grep returns

ntp_gettime() returns code 5 (ERROR)

ntp_adjtime() returns code 5 (ERROR)

2) 정상 상태 :

[root@ ~]#ntpstat

synchronised to NTP server (203.248.240.140) at stratum 3

time correct to within 108 ms

polling server every 64 s

-> 여기서 설정한 NTP IP는 time.bora.net 으로 203.248.240.140 임.

[root@ ~]# ntptime | grep returns

ntp_gettime() returns code 0 (OK)

ntp_adjtime() returns code 0 (OK)

 

ntp 서버와 즉시 시간 동기화 하기

ntpd 데몬 정지 :

[root@ ~]# /etc/init.d/ntpd stop

ntp 서버와 즉시 시간 동기화 하기 :

[root@ ~]# /etc/init.d/ntpdate start

-> ntpdate는 ntpd 데몬이 실행중이면 수행되지 않는다.

ntpd 데몬 시작 :

[root@ ~]# /etc/init.d/ntpd start

리눅스 버젼에 따라 (ver 7.x)

[root@ ~]# systemctl enable ntpd.service

권장 사항 :

ntp.conf 파일의 서버 선언 부분에 iburst 옵션 추가

[root@ ~]# cat /etc/ntp.conf | grep iburst

server 0.rhel.pool.ntp.org iburst

server 1.rhel.pool.ntp.org iburst

server 2.rhel.pool.ntp.org iburst

server 3.rhel.pool.ntp.org iburst

–> 만약 iburst 옵션이 없으면 ntpd 데몬이 시작하는 시점에 시스템 시각이 약 10분 이상 틀어져 있을 경우에 동기화하는데 너무 오랜 시간이 걸린다.

 

ntpdate 는 서버 시작시 실행

[root@ ~]# chkconfig ntpd on

[root@ ~]# chkconfig --list | grep ntpdate

-> 시스템이 부팅될 때 메인보드 CMOS Clock (하드웨어 시계)에 의해 OS 시각이 결정

–> 이 때 CMOS Clock 이 맞지 않을 경우 ntpd 에 의해 ntp 서버와 동기화 될때 까지 시간이 틀리게 된다.

–> ntpdate는 시스템 부팅때 ntpd 보다 먼저 실행이 되어 ntp 서버와 그 즉시 동기화를 하므로 어플리케이션 서비스가 구동되기 전에 정확한 시간을 보장

 

기타 ntp 관련 명령 :

[root@ ~]# ntpq -c rl

[root@ ~]# ntpq -c rl | grep delay

–> leap 관련된 상태도 확인 가능

시스템 시간 1초 증가 시키기:

[root@ ~]# echo `date '+%H:%M:%S'` | awk -F\: '{printf "%02d:%02d:%02d" ,$1 ,$2 ,($3+61)%60}' | date '+%H:%M:%S' --set "`xargs`"

시스템 시간 1초 감소 시키기 :

[root@ ~]# echo `date '+%H:%M:%S'` | awk -F\: '{printf "%02d:%02d:%02d" ,$1 ,$2 ,($3+59)%60}' | date '+%H:%M:%S' --set "`xargs`"

특정 시간으로 시스템 시간 변경 :

[root@ ~]# date -s "2015-08-06 20:49:20"

ntptime 상태 확인 :

[root@ ~]# watch -d -n1 'ntptime | grep returns'

혹은

[root@ ~]# for num in `seq 0 300`; do /usr/sbin/ntptime | grep return; sleep 1; done

ntp 상태 확인 :

[root@ ~]# watch -d -n1 ntpstat

–> 1초 이상 차이가 나는 즉시 ntptime | grep returns (for문 이용)으로 확인하면 ERROR로 표시된다.

–> 시간에 민감한 시스템에서는 임의로 시간 변경을 하면 장애로 이어질 수 있으므로 주의한다.

tcpdump를 사용하여 ntp 통신 상태 확인

[root@ ~]# tcpdump -nvvv -i eth0 udp port 123 | grep Timestamp

ntp 관련 명령어 실행시의 파라미터 값에 대한 설명 안내 :

https://mapoo.net/os/oslinux/ntp-q-output/

 

BBG의 시간 동기화

http://only1life.egloos.com/7086849

[root@ ~]# ntpdate time2.kriss.re.kr   //ntpdate [서버] 명령어를 실행하여 서버로부터 시간을 동기화
26 Dec 10:59:57 ntpdate[5441]: the NTP socket is in use, exiting    // NTP socket이 사용 중

[root@ ~]# service ntp stop   // NTP 서비스를 일시 중지
[ ok ] Stopping ntp (via systemctl): ntp.service. 

[root@ ~]# ntpdate time2.kriss.re.kr   // 다시 ntpdate로 시간 동기화
26 Dec 11:01:24 ntpdate[5788]: adjust time server 210.98.16.101 offset -0.010024 sec   // 시간 동기화

[root@ ~]# # date 
Sat Dec 26 11:01:35 UTC 2015   // 시간이 한국시간으로 설정되지 않음
[root@ ~]# export env TZ=GMT-09:00:00       // 한국 시간에 맞추기 위해 GMT에 9시간을 더해줌

[root@ ~]# ntpdate       // nptdate를 해보니 9시간 더해짐
26 Dec 22:52:32 ntpdate[15485]: no servers can be used, exiting

[root@ ~]# hwclock       // 시스템 시간은 설정했는데 BBG 의 시간을 확인해 보니 정확하지 않음
Mon Mar  2 19:58:50 2015  -0.638308 seconds

[root@ ~]# hwclock -w    // BBG 시간 설정

[root@ ~]# hwclock     // BBG 시간 확인
Sat Dec 26 22:53:23 2015  -0.055188 seconds

//다른 방법으로 ntp.conf를 설정할 수도 있음
[root@ ~]# date vi /etc/ntp.conf     // ntp.conf 파일에 한국 ntp 서버를 입력함
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
server kr.pool.ntp.org
server time.bora.net
server time.kornet.net

// timezone을 이용하여 설정할 수도 있음
[root@ ~]# ls /usr/share/zoneinfo  
Africa        Canada   Factory    Iceland    MST7MDT   ROC    WET
America     Chile    GB        Indian       Mexico    ROK    Zulu
Antarctica  Cuba     GB-Eire    Iran       NZ         Singapore    iso3166.tab
Arctic        EET      GMT    Israel       NZ-CHAT   SystemV    localtime
Asia        EST      GMT+0    Jamaica    Navajo    Turkey    posix
Atlantic    EST5EDT  GMT-0    Japan       PRC         UCT    posixrules
Australia   Egypt    GMT0    Kwajalein  PST8PDT   US        right
Brazil        Eire     Greenwich    Libya       Pacific   UTC    zone.tab
CET        Etc      HST    MET       Poland    Universal
CST6CDT     Europe   Hongkong    MST       Portugal  W-SU

// 위 방법들은 명령어를 실행하는 순간에만 동기화가 이루어짐
// 자동으로 동기화가 이루어지게 하는 방법이 있음 (서버처럼 계속 켜져 있어야 함, 새벽 4시마다 동기화 진행)
[root@ ~]# chkconfig ntpd on      // debian에서 ntpd 명령어가 실행되지 않음

[root@ ~]# ntpq -p  //ntp 서비스 상태 조회
     remote           refid      st t when poll reach   delay   offset  jitter
=======================================================
+106.247.248.106 211.115.194.22   3 u   23  128  271   12.038    3.084   2.521
*send.mx.cdnetwo 131.107.13.100   2 u  292  128  374   11.215    5.101  12.579
+dadns.cdnetwork 131.107.13.100   2 u  165  128  246   11.031    1.688   6.279
-114.207.245.166 220.73.142.74    2 u   37  256  377   12.649  -11.168  24.189

* 표시가 있다면 시간서버로부터 시간을 가져왔다는 것을 의미

CentOS systemctl과 service 명령어 차이점이 궁금해서 조사
[root@ ~]# service iptables start
[root@ ~]# systemctl start iptables
두가지 구문 중 어떤걸 수행하여도 구동된다는 결과는 똑같은 것 같은데, 차이점이 궁금해서 시작

일단 결론은
CentOS 6이전 버전은 service ~구문으로,
CentOS 7이후 버전은 systemctl ~ 구문으로 제어한다.

7버전에서 service ~ 구문을 수행하면 
Redirecting to /bin/systemctl start xxxx.service 라며
어짜피 systemctl로 redirecting되어 찾는다.

이는 CentOS 6이전 버전은 /etc/rc.d/init.d 에서 서비스들을 관리했으나
7버전 이후로 이 서비스 관리 스트립트들은 서비스 유닛(Unit)으로 변경되었다. 몇몇 서비스는 제외
변경된 서비스 유닛은 .service로 끝나는 파일이며 systemctl로 제어된다.

결론은 CentOS7에서는 systemctl로 서비스들을 제어
systemctl 옵션 서비스명.service ~ (.service는 생략가능)

참고로 
systemctl enable/disable 서비스명
이건 서비스 자동시작 활성화/비활성화 (기존 chkconfig) 기능이다.

CentOS7에서 iptables라는 응용프로그램을 사용해보고자 하여,
iptables --version으로 확인해 보면 설치된 것으로 보이는데
service iptables start 구문이 먹히지 않았다.
뭔가 잘못한건가 해서 
무작정 yum으로 iptables를 재설치 하니 service 구문이 먹혔다.
이제 보면 yum으로 설치되면서 service에 자동으로 등록되어 centos7에서도 service 구문이 사용이 되었던 것 같다.

[참고]
https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

 

<윈도우 서버 NTP 설정>

http://blog.daum.net/jungsangun/7691206

시간 동기화가 잘 안되어 서버(Window Server 2008) 시간이 틀리는 것을 발견했다.
xp, windows 7 은  제어판의 "날짜 및 시간" 항목의 "인터넷 시간" 탭이 있어 동기화를 GUI환경에서 설정할 수 있는데
서버에는 없다.

명령프롬프트에서 다음과 같이 하면 된다.

1. 먼저 시간동기화가 되는지 확인한다.
C:\>w32tm /resync
로컬 컴퓨터에 다시 동기화 명령을 보내는 중
사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다.

2. 현재 설정된 시간 동기화 정보확인
C:\>w32tm /query /configuration

[구성]
EventLogFlags: 2 (로컬)
AnnounceFlags: 10 (로컬)
TimeJumpAuditOffset: 28800 (로컬)
MinPollInterval: 6 (로컬)
MaxPollInterval: 10 (로컬)
MaxNegPhaseCorrection: 172800 (로컬)
MaxPosPhaseCorrection: 172800 (로컬)
MaxAllowedPhaseOffset: 300 (로컬)
FrequencyCorrectRate: 4 (로컬)
PollAdjustFactor: 5 (로컬)
LargePhaseOffset: 50000000 (로컬)
SpikeWatchPeriod: 900 (로컬)
LocalClockDispersion: 10 (로컬)
HoldPeriod: 5 (로컬)
PhaseCorrectRate: 7 (로컬)
UpdateInterval: 100 (로컬)

[시간 공급자]
NtpClient (로컬)
DllName: C:\Windows\system32\w32time.dll (로컬)
Enabled: 1 (로컬)
InputProvider: 1 (로컬)
CrossSiteSyncFlags: 2 (로컬)
AllowNonstandardModeCombinations: 1 (로컬)
ResolvePeerBackoffMinutes: 15 (로컬)
ResolvePeerBackoffMaxTimes: 7 (로컬)
CompatibilityFlags: 2147483648 (로컬)
EventLogFlags: 1 (로컬)
LargeSampleSkew: 3 (로컬)
SpecialPollInterval: 3600 (로컬)         -> 동기화 주기 초단위 3600=1시간
Type: AllSync (로컬)
NtpServer: time-nw.nist.gov,0x9 (로컬) -> 잘못된 시간동기화 서버 정보
NtpServer (로컬)
DllName: C:\Windows\system32\w32time.dll (로컬)
Enabled: 1 (로컬)
InputProvider: 0 (로컬)
AllowNonstandardModeCombinations: 1 (로컬)

3. 시간동기화 서버 변경
C:\>w32tm /config /manualpeerlist:"time.windows.com,0x9" /syncfromflags:MANUAL
명령이 성공적으로 완료되었습니다.

4. 시간동기화 서비스 멈추고
C:\>net stop w32time
Windows Time 서비스를 멈춥니다..
Windows Time 서비스를 잘 멈추었습니다.

5. 시간동기화 서비스 시작
C:\>net start w32time
Windows Time 서비스를 시작합니다..
Windows Time 서비스가 잘 시작되었습니다.

6. 시간동기화 실행
C:\>w32tm /resync

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

[Windows] 윈도우에서 NTP 서버 설정방법 (tistory.com)

 

[Windows] 윈도우에서 NTP 서버 설정방법

[Windows] 윈도우에서 NTP 서버 설정방법 1. NTP서버 설정 확인 먼저 현재의 설정을 확인해봅니다. cmd> w32tm /dumpreg /subkey:parameters   NTP서버가 설정이 따로 되어있지 않음을 알 수 있습니다.  time.wi..

yangnoon.tistory.com

 

에스코어 | 서버 시간 동기화 방법 (s-core.co.kr)

 

<ntp와 chrony 차이>

Q1. 서버의 시간 동기화를 위해서는 어떤 서비스를 사용하나요?
1. chronyd (RHEL7 권장)
2. ntpd
  
Q2. chronyd와 ntpd의 차이는 무엇인가요?
1. ntpd는 다양한 하드웨어 참조 클럭을 위한 많은 수의 드라이버가 포함되어 있으나, chronyd는 SHM 또는 SOCK 인터페이스를 통해 시간을 제공하기 위해 다른 프로그램(gpsd or ntp-refclock)을 필요로 합니다.
2. chronyd는 더 큰 범위의 클럭 속도 조정을 제공하며, 갑작스러운 클럭의 변화에 빠르게 적응하는 반면, ntpd는 다시 안정화 되는 데 오랜 시간이 필요할 수 있습니다.
3. chronyd는 더 적은 메모리를 사용하며, 필요한 경우에만 CPU를 사용하므로 절전에 더 효율적입니다.
  
Q3. chronyd를 권장하는 이유는 무엇인가요?
1. Autokey 프로토콜로 패킷 인증을 수행하여야 하는 시스템은 chronyd가 이 프로토콜을 지원하지 않기 때문에 ntpd를 사용하여야 합니다.
2. 그러나, Autokey 프로토콜에는 심각한 보안 문제가 있으므로 이 프로토콜을 사용하지 않아야 하며, Autokey 프로토콜 대신 대칭 키 인증을 사용하여야 합니다.
3. Chronyd는 SHA256 및 SHA512와 같은 강력한 HASH 기능을 지원하는 반면 ntpd는 MD5 및 SHA1 사용으로 보안에 취약한 단점이 있습니다.
  
Q4. 설치 및 서비스 사용 여부는 어떻게 확인하나요?

1. 패키지 확인
[root@ ~]# rpm -qa | egrep 'chrony|ntp'

2. 서비스 사용 여부 확인
2.1 chronyd
[root@ ~]# systemctl status chronyd

2.2 ntpd
[root@ ~]# systemctl status ntpd

  
Q5. 만약 설치가 안 되어 있다면 어떻게 설치하나요?

1. chronyd
[root@ ~]# yum install -y chrony
2. ntpd
[root@ ~]# yum install -y ntp
  
Q.6 설정 방법은 어떻게 되나요?

1. chronyd
[root@ ~]# vi /etc/chrony.conf

2. ntpd
[root@ ~]# vi /etc/ntp.conf

[root@ ~]# systemctl restart ntpd

3. 옵션 설정
- 사용하시는 NTP server 업체의 권고 설정이 있다면, 해당 설정값으로 설정하는 것을 권장 드립니다.
  
Q7. slew 옵션은 어떻게 설정하나요?

1. slew 옵션 이란?
- 시스템은 윤초가 발생하였을 때 00:00:00 UTC에 시스템 시계를 1초 뒤로 또는 앞으로 조정하여 윤초를 삽입 / 삭제 합니다.
- 시스템 시간 조정에 대해 민감한 어플리케이션의 경우 해당 작업이 문제가 발생할 수 있으므로, 바로 조정하지 않고 천천히 조정하도록 설정할 수 있습니다.

2. chronyd
[root@ ~]# vi /etc/chrony.conf

[root@ ~]# systemctl restart chronyd
  
3. ntpd
[root@ ~]# vi /etc/sysconfig/ntpd

[root@ ~]# systemctl restart ntpd
  
Q8. 서비스 시작 방법 및 동기화 여부는 어떻게 확인하나요?

1. 서비스 시작
1.1 chrony
[root@ ~]# systemctl start chronyd
1.2 ntpd
[root@ ~]# systemctl start ntpd
  
2. 서비스 활성화 (부팅시 자동 시작)
2.1 chronyd
[root@ ~]# systemctl enable chronyd
2.2 ntpd
[root@ ~]# systemctl enable ntpd

3. 동기화 여부 확인
3.1 chronyd
[root@ ~]# chronyc sources

[root@ ~]# chronyc tracking

3.2 ntpd

[root@ ~]# ntpq -p

[root@ ~]# ntpstat


Q9. NTP 서버와의 시간 차이는 어떻게 확인하나요?

1. chronyd
- 아래 명령 실행 시 현재 서버가  NTP 서버와의 시간이 219초 차이 난다는 것을 알 수 있습니다.
[root@ ~]# chronyc sources

 
2. ntpd
- 아래 명령 실행 시 현재 서버가 NTP 서버와의 시간이 208초 차이 난다는 것을 알 수 있습니다.
[root@ ~]# ntpq -p

[root@ ~]# ntpdate -d [NTP server] | tail -1

 
Q10. 시간이 많이 차이 나게 되었을 때 어떻게 조치 하나요?
1. NTP 서버와 시간이 많이 차이 나는 경우 수동 동기화를 통하여 해당 증상을 해소할 수 있습니다.

Q11. 수동 시간 동기화는 어떻게 하나요?
1. chronyd
[root@ ~]# chronyc -a makestep
[root@ ~]# hwclock -w  (현재 설정된 시간으로 하드웨어 시간 설정)
  
2. ntpd
[root@ ~]# systemctl stop ntpd (ntpd가 실행 중일 경우 ntpdate가 실행되지 않습니다.)
[root@ ~]# ntpdate [NTP server] (한번 수행으로 차이가 크게 줄어들지 않으므로, 여러 번 수행하시기 바랍니다.)
[root@ ~]# hwclock -w  (현재 설정된 시간으로 하드웨어 시간 설정)
[root@ ~]# systemctl start ntpd

참조 문서
1. NTP 와 chrony 비교
- https://chrony.tuxfamily.org/comparison.html

 

centOS 8 NTP 설정 (chronyd)
1. 서버 설정

1) chronyd 설치 확인
[root@ ~]# rpm -qa | grep chrony
<나오면 다음 단계, 안나오면 설치>

2) vi /etc/chrony.conf
 - pool or server 부분 모두 주석 처리
- 아래 내용 추가
server 1.kr.pool.ntp.org
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org
- allow 허용 처리
   <수정 전>
#allow 192.168.0.0/16
   <수정 후>
allow 192.168.0.0/16  ==> 192.168번대 대역은 모두 허용

3) chrony 서비스 시작 및 부팅시 구동 등록
[root@ ~]# systemctl start chronyd
[root@ ~]# systemctl enable chronyd

4) 포트 개방 :
- DNS 조회를 위해 UDP 53
- NTP 동기화를 위해 UDP 123

5) 서버 시간 확인
[root@ ~]# chronyc sources : 시간을 받아오는 서버 리스트 / chrony.conf 파일에 등록한 server 리스트
[root@ ~]# chronyc tracking : 시간을 받아오는 서버 정보
[root@ ~]# timedatectl status : 시간 상태 및 동기화 등 정보 확인

2. 클라이언트 설정

1) vi /etc/chrony.conf
- server는 위해 설정한 IP 등록
ex) server 192.168.0.1

2. chrony 서비스 시작 및 부팅시 구동 등록
[root@ ~]# systemctl start chronyd
[root@ ~]# systemctl enable chronyd

3. 서버 시간 확인
- chronyc sources : 시간을 받아오는 서버 리스트 / chrony.conf 파일에 등록한 server 리스트
- chronyc tracking : 시간을 받아오는 서버 정보
- timedatectl status : 시간 상태 및 동기화 등 정보 확인

 

320x100
반응형