NTP
리눅스 서버에서 시간 동기화
stratum 이란?
NTP 방식은 stratum이라는 계층구조를 가지고 있다. stratum 0 은 GPS 나 세슘 원자 시계등 시간을 구하는 장비를 의미한다. stratum 1 은 GPS 위성으로 부터 표준 시각정보를 받는 타임 서버를 말한다. ( NTP Primary Time Server 혹은 stratum 1 이라고 부름 ) stratum 0에서 직접 시간을 동기화 하는 서버 stratum 2 은 stratum 1에 시간을 동기화 하는 서버를 말한다. ( NTP Secondary Time Server 혹은 stratum 2 이라고 부름 ) stratum 2 부터는 아래로 트리형식으로 내려간다. * stratum 계층 구조를 사용하는 이유 -> 모든 서버가 stratum 1 서버에 접근해서 시간을 동기화 할 경우 부하가 발생하여서 재대로 서비스를 할 수 없기 때문에 stratum 1에 시간을 참조하는 stratum 2 서버를 참조하여서 부하를 분산하기 위해서 계층 구조를 사용한다. -> stratum 1 ~ 15 까지의 편차가 m/s(micro seconds, 1/1000초) 이므로, 굳이 stratum 1 이나 2를 사용할 필요가 없다. -> 내부 NTP 서버를 구축 할 경우 stratum 1 ~ 15 계층에서 표준 시간을 동기화하여 내부 Client 서버들에게 시간을 동기화 시켜준다. * stratum 2 list (국내 NTP 서버 리스트) 최신 목록은 http://time.ewha.net/domestic.shtml 에서 확인을 하도록 한다 |
UTC 이란?
UTC (Universal Time Coordinated)은 원자시계로(stratum 0) 부터 측정한 공식적인 표준 시간을 말한다. |
NTP protocol 포트 번호
NTP protocol은 UDP 123 포트를 사용한다 ntpdate -u 옵션으로 포트 번호 변경 가능 방화벽이 있을 경우 UDP 123포트를 해제하거나 다른 포트 변경해서 사용. |
1. ntp.conf 설정
# Permit time synchronization with our time source, but do not -> 기본으로 모든 권한을 주지는 않음을 의미한다. (IPV4) -> 기본으로 모든 권한을 주지는 않음을 의미한다. (IPV6)
# Permit all access over the loopback interface. This could -> 서버 자신에 대해서는 모든 권한을 가진다. (IPV4) restrict -6 ::1 -> 서버 자신에 대해서는 모든 권한을 가진다. (IPV6) # Hosts on local network are less restricted. # Use public servers from the pool.ntp.org project. #server 2.rhel.pool.ntp.org -> 주석 처리 ( default NTP서버 주소 ) server 105.102.50.81 -> 설정할 NTP 주소 ( NTP 서버 주소가 domain일 경우 /etc/resolv.conf 에 DNS를 등록해야한다 )
# Undisciplined Local Clock. This is a fake driver intended for backup #fudge 127.127.1.0 stratum 10 -> 주석 처리 ( 자신의 서버를 다른 Client에게 동기화를 허용 )
# Drift file. Put this in a directory which the daemon can write to. -> 시간을 더욱 정확하게 유지하는 파일로, 시간 오차의 평균값을 저장하고 있는 파일 위치 지정. # Key file containing the keys and key identifiers used when operating # Specify the key identifiers which are trusted. # Specify the key identifier to use with the ntpdc utility. # Specify the key identifier to use with the ntpq utility. |
2. ntpd 데몬 재시작
# service ntpd stop # service ntpd start # chkconfig ntpd on |
3. ntpd 상태 확인
# ntpq -p remote refid st t when poll reach delay offset jitter
remote : /etc/ntp.conf에 설정된 ntp서버 HOST/IP 주소이다 (stratum 2 이상 계층) refid : /etc/ntp.conf에 설정된 ntp서버가 표준 NTP서버를 바라보는 주소(stratum 1 계층) st : stratum 계층 표시 (16 계층이 넘어가면 ntp 설정이 잘안된다고 볼 수 있다) t : 단층(Layer)의 타입 (l:Local, u:unicast, m:multicast, b:broadcast when : 마지막으로 packet을 수신한 이후 경과한 시간 (단위 : 초) poll : polling 간격 (단위 : 초) reach : 도달가능한 register 를 8진수로 표현한 값 delay : Polling insterval 지연예상시간 (단위 : 밀리초) offset : 시간 차이, 단층(Layer)의 offset (단위 : 밀리초) jitter : 단층(Layer)의 분산 (단위 : 밀리초)
'X' : falseticker 검사결과 사용되지 않는 서버 '.' (excess, 초과) : 참조서버가 많아서 사용되지 않는 서버 '-' : clustering 검사결과 사용되지 않는 서버 '+' : 접속 테스트를 합격하여 언제든지 참조가 가능한 서버 '#' : 동기 거리가 멀지만 참조가 가능한 서버 '*' : 동기중인 서버 'o' : 동기중인 서버(동기는 PPS 신호로부터 간접적으로 행해짐)
|
4. ntpd 상태 확인
< poll에 대한 설명 > 각 서버마다 network이나 기타 이유로 인하여 poll은 달라지게 된다. 기본적으로 minpoll은 64s(26)이고. maxpoll은 1,024s(210)이다. 이 옵션의 경우에는 ntp.conf에 삽입하여 사용도 가능하다.
minpoll 64 ; 16s(24)보다 작을 수 없다. maxpoll 1024 ; 36.4h(217) 보다 클 수 없다. < NTP packet 발송 주기 > - Broadcast Type : 64초 마다 1개의 Transaction ( Packet 1개 )을 보냄 -> 지속 - unicast Type : 64초 마다 1개의 Transaction ( Packet 2개 )을 보냄 -> 8 번 64초 마다 5개의 Transaction 연속 성공 시 -> 128초 주기로 변경 128초 마다 5개의 Transaction 연속 성공 시 -> 256초 주기로 변경 256초 마다 5개의 Transaction 연속 성공 시 -> 512초 주기로 변경 512초 마다 5개의 Transaction 연속 성공 시 -> 1024초 주기로 변경 실패시 64초로 poll 주기 변경 < reach에 대한 설명 > reach : 도달가능한 register 를 8진수로 표현한 값 reach 값은 타임서버에 완전히 접속하기 위한 8진수로 377이여야 합니다. deleay 값은 작은 값이어야 합니다. offset 값은 양수면 NTP서버 시간보다 로컬서버의 시간이 느린것, 음수면 로컬서버의 시간이 빨른것, + - 으로 offset값이 500 이상 차이나면 동기화가 재대로 안된것. jitter 값은 서버중 적어도 하나는 1000ms(1초) 미만이어야 한다. |
# cat /etc/ntp.conf ( Default 설정 값 & 옵션 )
restrict restrict default restrict ignore restrict : Deny all packets and queries |
# cat /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default. -> -x 옵션은 SLEW모드 # Set to 'yes' to sync hw clock after successful ntpdate -> # Additional options for ntpdate < NTP 데몬 운용모드 > NTP 데몬의 운용모드에는 STEP 모드와 SLEW모드 2가지가 존재한다. STEP : STEP 모드일 경우는 순간적으로 시각을 동기화 시키므로 시각의 후퇴(과거 시간으로 돌아감)가 발생하여 시스템에 영향이 있음. SLEW : SLEW 모드일 경우는 시각의 차이를 서서히 보정하므로 시각의 후퇴는 발생하지 않음. |
----------------
ntpdate
# date -> 현재 시간 확인 # ntpdate <NTP서버 IP> -> ntpdate으로 ntp 서버시간을 실시간으로 적용한다. -> ntpdate 명령어를 쳤을 경우 the NTP socket is in use, exiting 라는 메세지가 나오면 ntp 데몬이 running 중이여서 나오는것으로 ntpd데몬을 stop해주고 다시 진행해준다. |
58