SharedIT | 묻고 답하기(AMP)

CentOS 에서 NTP동기화문제

안녕하세요. 공공기관 유지보수로 일하고 있는 사람입니다. 

현재 기관내에 가상화솔루션을 사용하고 있고, 해당 솔루션의 대시보드에서 NTP 서버를 선언해주면 나머지 클러스터(?)는 그 대시보드로 설정한 매니저서버를 통해 NTP동기화가 되게 설정되어있습니다. 

문제는 폐쇄망이기때문에 별도의 NTP서버를 구성하고 해당 서버를 통해서 NTP 동기화를 시도합니다. 


각 클러스터(?)는 CentOS기반의 EmbeddedOS이고, 동기화 설정은 ntpd 서비스를 통해서 하고 있습니다.


문제는 ntpq에서 해당 NTP서버IP 정보는 등록되어있는데, 정작 NTP서버로 동기화를 시도하지는 않습니다. 

방화벽 문제인가 싶어서 방화벽을 확인했으나 방화벽상 정책으론 차단되진 않으며 오히려 로그 정보도 없습니다. 


별도로 NTPDATE를 통해 동기화를 시도하면 동기화는 잘됩니다. 

매니저의 대시보드를 통해 모든 클러스터(?)를 한번에 관리해야하기때문에 어쨌든 ntpd 서비스를 사용해야겠는데 혹시 방법을 아시는 고수분들이 계실까요...?

Tags : 태그가 없습니다.

6개의 답변이 있습니다.

전탈지
  0 추천 | 일 년 이상 전

이것저것 보다가 흘러들어왔는데... 시일이 많이 지난 글이네요...  지금와서 답을 달아 무슨 의미가 있겠냐만은 다른 고민인 분들이 계실까 싶어 답글을 남깁니다.

 Windows <-> linux 이기종간 NTP 동기화는 추가 옵션이 필요합니다. 

아래 링크를 참고하세요

https://hagi-it.tistory.com/3



topkslee
  0 추천 | 2년 이하 전

/etc/ntp.conf 설정 문제가 아닐까요?

위에서 말씀하신 로컬IP(127.127.1.0)는 무슨 IP인가요?

저 로컬ip가 들어간 이유가 있는지요?

기본적으로 ntp.conf에 설정에

restrict 127.0.0.1

...

server xxx.xxx.xxx.xxx iburst

ntp 서버IP 설정 정보만 하시면 정상적으로 되는데...

Genghis Khan
  0 추천 | 2년 이하 전

https://xellos-space.tistory.com/entry/NTP-%EC%83%81%ED%83%9C-%ED%99%95%EC%9D%B8-%EC%8B%9C-%EC%B6%9C%EB%A0%A5%EB%90%9C-%EA%B0%92%EC%9D%98-%ED%95%AD%EB%AA%A9%EB%B3%84-%EC%9D%98%EB%AF%B8

위 내용은 NTP 동기화시 상태 확인 출력값에 대한 내용이니 참고하시구요

ntpq -p를 했을때  ntp서버와 동기화되는 ip 항목이 출력되어야 하고 * , ++ 형태로 되어야

정상적으로 동기화가 되는데요

만약 동기화가 안된다면 확인할 사항이  # /etc/ntp.conf 하단에   동기화할 ntp ip를 설정이 제대로

되어 있는지 체크해야 합니다. ex) server  xxx.xxx.xxx.xxx 등록 

그리고 리눅스 방화벽 open 되어야 하니 체크 ,  리눅스 6,7 명령어가 다릅니다.

리눅스6 service ntpd restart , 리눅스7 systemctl start ntpd

# ntpq -pn으로 정확한 상태 확인을 할 수 있습니다.



Genghis Khan | 2년 이하 전

= 비정상 상태 =

[root@node01 ~]# ntpstat

unsynchronised

polling server every 64 s


[root@node01 ~]# ntptime | grep returns

ntp_gettime() returns code 5 (ERROR)

ntp_adjtime() returns code 5 (ERROR)



= 정상 상태 =

[root@node02 ~]# ntpstat

synchronised to NTP server (211.233.40.78) at stratum 3

time correct to within 108 ms

polling server every 64 s


[root@node02 ~]# ntptime | grep returns

ntp_gettime() returns code 0 (OK)

ntp_adjtime() returns code 0 (OK)

weetlies4u | 2년 이하 전

의견 감사합니다.!

일단 말씀 주신대로 했을 때 현재 상황을 알려드리자면, 현재 ntpq -pn시 로컬IP(127.127.1.0)와 NTP서버 2개가 보여지고 활성화는 로컬IP로 되어있습니다. vi /etc/ntp.conf 에서 로컬IP부분을 주석처리해서 서비스 재기동하면 해당 로컬서버는 리스트에서 사라지지만 NTP서버로 활성화가 변경되지는 않습니다. 

ntpstat와 ntptime|grep returns 했을 경우에도 로컬IP를 통해서 정상적이라고만 뜹니다

Genghis Khan | 2년 이하 전

vi /etc/sysyconfig/ntpd

#Drop root to id ‘ntp:ntp’ by default.

OPTIONS=“ -x -u ntp:ntp -p /var/run/ntpd.pid -g”


#systemctl disable cronyd.service

위 부분을 해줘야 하구요

내부 방화벽과 ntp 서버쪽 방화벽도 다시 한번 체크 해보세요

모바일로 작성하니 힘드네요 ㅋ

Simon.Park
  0 추천 | 2년 이하 전

수동으로 된다고 하면 NTP 서버와의 통신 및 방화벽은 문제가 없다고 생각되어지는데요,

자동으로 동기화가 안된다는거는 client 단에서 자동으로 동기화 시도가 되지 않고 있다고 봐야하지 않을까요?

정 안되면 cron 이나 윈도우 정책에 넣어서 하루에 한두번식 주기적으로 동기화 하게끔 하면 어떨까요?

weetlies4u | 2년 이하 전

의견주셔서 감사합니다. 

말씀하신대로 일단 수동으로 되기 때문에 NTP서버와의 통신은 이상없고, 수동으로 요청했을 때 방화벽에서도 정상으로 통과한 이력은 있습니다. 

또한, ntpq에서 확인해보면 LOCAL(127.127.1.0) 로만 바라보고 있고, 실제 NTP서버로 동기화를 할 수 없습니다.

Crontab을 이용해서 ntpdate로 동기화 시키고 ntpq를 서비스 재실행 해서 확인했더니, 다른 클러스터와의 차이로 인해 대시보드에서 크리티컬 알람을 발생해 문제가 발생합니다 ㅠㅠ

topkslee
  0 추천 | 2년 이하 전

수작업 ntpdate로는 동기화가 된다는 말씀하셨는데요.

ntpd 데몬이 잘 구동중인지 상태를 체크해보세요.

# ntpq -p 했을때 정상적인 내용이 나오는지?

# ntpstat 했을때 syncronised 라고 나오는지?

# ntptime | grep return 했을때 return code가 OK로 나오는지?


위와 같이 체크해보시고 정상인지 아닌지 먼저 체크해보세요.

이게 정상이 아니라면 셋팅을 (/etc/ntp.conf 또는 /etc/chrony.conf) 다시 한번 체크해보세요. 

또, 자동으로 데몬 구동되게 설정이 안되어 있으면 리부팅했을때

데몬이 실행되지 않을 수도 있습니다.

 

weetlies4u | 2년 이하 전

답변감사합니다. 일단 정리해보자면

  • 1.ntpq -p에서 ntp설정한 서버명은 나옵니다만, 해당 ntp서버 앞에 활성화 되었다는 *표시는 없습니다..

  • 2.ntpstat 부분은 내일 확인해봐야할꺼같네요

  • 3.해당명령어는 아니였지만 ntpq 동기화여부확인시 Reject로 떨어졌습니다. 내일 이 명령어도 확인해봐야겠네요

  • 4.데몬은 정상적으로 기동 되는건 확인했습니다


명동쓰레빠 | 2년 이하 전

명쾌한 설명 참조 하겠습니다.


wansoo
  0 추천 | 2년 이하 전

폐쇄망안에서 CentOS 리눅스들의 시간을 자동 동기화해서 맞추고 싶다는 내용으로 보이는데요.

rdate 명령으로 시간을 맞추면 되겠고요.

rdate 명령으로는 OS의 시간은 맞출 수 있지만 CMOS 시간까지는 맞춰주지 않기 때문에 rdate로 동기화 시킨 시간을 재부팅시에도 유지되게 하려면 clock 명령을 이용해서 CMOS 시간까지 동기화 시켜 주는 것이 좋겠고요.

crontab 에 rdate 명령과 clock 명령을 정기적으로 수행해서 시간이 동기화 될 수 있게 해 두면 해결 되겠는데요.

문제는 폐쇄망이라 rdate로 외부 시간 서버와 동기화를 시킬 수 없기 때문에...

내부에 NTP 시간 서버를 구성해둬서 rdate 명령 요청에 대한 시간 정보를 제공할 수 있게 해 주어야 하겠고요.

NTP 서버는 CentOS를 사용하건, Ubuntu를 사용하건 OS에 관계없이 구성해서 구동해 주면 되겠고요.

NTP 서버만 외부 인터넷에 연결할 수 있게 열어둬서 NTP 서버가 자동으로 시간이 동기화되게 해 두어도 되겠고... 안된다면 GPS 등의 서비스에 접속할 수 있게 해서 NTP 서버가 자동으로 시간이 동기화 될 수 있게 해 두거나...

자동 동기화가 어렵다면... NTP 서버만이라도 수동으로 시간을 맞춰주는 작업을 해 주면 되겠고요.


CentOS에서 NTP 서버 설치는 yum install ntp 명령을 이용하면 설치할 수 있겠고...

serice ntpd start 명령 등을 이용해서 서비스를 시작해 주면 되겠고요.

환경 파일인 /etc/ntp.conf 등의 설정 파일에서 추가적인 설정을 해 줄 수도 있겠고요.

ubuntu에서는 NTP 서비스가 기본적으로 올라가 있는 경우도 많은걸로 알고 있고요.


NTP 서비스를 내부 컴퓨터에 구동해 두고, 나머지 다른 컴퓨터들은 rdate 명령을 이용해서 내부에 구동해둔 NTP 서비스 컴퓨터로 부터 시간 정보를 제공받아 자동 동기화 되게 해 주면 되겠고요.


예를 들어 내부에 NTP 서비스를 구동하고 있는 서버의 ip 주소가 192.168.0.10 이라면...

crontab에 하루에 한번씩 구동될 수 있게 아래와 같이 등록해 두고사 사용하면 되겠네요.


59 23 * * * /usr/bin/rdate -s 192.168.0.10 && /sbin/clock -w


weetlies4u | 2년 이하 전

의견 감사합니다.

일단 현재 사용하는 가상화 장비가 클러스터를 묶어 매니저대시보드를 통해 관리할수 있습니다. 그렇기에 기본 옵션으로 ntpq를 통한 동기화가 될수밖에 없고, 해당 서비스를 쓰고 ntpdate를 사용시 대시보드에서 ntp 관련 크리티컬 알람을 띄워 해당 방법을 쓸수가 없습니다.


현재 ntp서버로 운용중인건 windows 서버로 구성된 상태입니다.