관리 메뉴

IT창고

리눅스 NTP 본문

서버운영/Linux

리눅스 NTP

방구석여포 2017. 9. 14. 23:38

NTP(Network Time Protocol)는 네트워크상에 분산된 NTP서버들로 부터 각종 컴퓨터, 서버, 네트워크 장비들의 시간을 동기화 시켜주는프로토콜/프로그램 입니다. NTP는 Staratum이라는 계층구조를 가지는데 NTP서비스는 UDP/123 포트를 사용합니다. 


Stratum 계층은 기본적으로 0~2까지가 기본인데 Stratum 0는 세슘원자시계, GPS, 표준 주파수 등을 이용하여 시간을 측정해주는 장비(Primary Referance Clock)이고 Stratum 1는 0계층 장비와 직접 연결되어 시간을 동기화 시킨 서버(Primary Time Server)이고 Stratum 2는 트리구조로 구성되어 1계층의 서버와 시간을 동기화 시킵니다. 2계층의 우리나라 NTP 서버로 time.bora.net(LG U+), time.kornet.net(KT), time.kriss.re.kr(한국표준과학연구원KRISS) 등 이 있습니다. 여기서 3계층으로 사용될 것이 직접 서버를 구성해서 2계층의 서버에서 시간을 동기화 시키면 3계층이되고 이런 방식으로 4계층 5계층을 만들수 있습니다.


CentOS 6.x 버전 리눅스로 NTP서버를 만들수있습니다. 

NTP서버 구성을 위해 먼저 yum -y install ntp 를 입력해 ntp 패키지를 설치하고 vi /etc/ntp.conf 에서 ntp를 설정합니다.

vi편집기에서 999dd로 모든 글을 지우고 맨아래에 server time.bora.net를 입력하고 저장합니다. 4계층을 만들려면 다른 리눅스에 3계층 리눅스의 ip주소를 4계층 리눅스의 ntp.conf파일에 server ip주소를 입력하면 됩니다.

파일 설정이 끝났다면 service ntpd start를 입력해서 ntp데몬을 활성화 시킵니다. chkconfig ntpd on 를 추가로 입력해서 부팅시 ntp데몬이 자동으로 활성화되도록 설정합니다.

모든 준비가 끝나고 ntpq -p를 입력하면 연결이 되는지 확인할수있습니다. 만약 너무 연결이 안되거나 시간차가 너무 난다면 설정 파일에 도메인주소 뒤에 iburst를 입력해줍니다. ex) server [도메인/ip주소] iburst

위의 사진에 나온 필드를 알아보면 remote는 해당 서버와 동기화하는 상위 NTP서버의 ip나 도메인을 나타내고 refid는 다다음 NTP서버의 ip나 도메인을 뜻합니다. remote 필드 첫 부분에 나오는 문자가 중요한데 아무것도 없는 공백은 접속불가, +는 연결가능, *은 동기화중 임을 나타냅니다. 동기화는 언제 될지 모릅니다 동기화가 되는것은 무작위입니다.


rdate라는 명령어가 있습니다 ntp서버의 시간을 확인하는 명령어인데 사용법은 rdate [NTP서버] 이고 옵션으로 -p는 지정한 ntp서버의 시간을 확인하고 -s는 지정한 ntp서버의 시간으로 현재 시스템 시간을 동기화 시킵니다. rdate는 yum -y install rdate로 설치해줍니다. ex)rdate -p time.bora.net

clock이라는 명령어가 있습니다. CMOS시간 관리 명령어로 하드웨어가 측정하는 시간을 보는 명령어인데 옵션으로 -w는 리눅스 시스템시간으로 CMOS시간을 변경하고 -s는 CMOS시간으로 리눅스 시스템 시간을 변경합니다.

crontab을 이용해서 매일 정각에 실행되도록 설정할수있는데 crontab -e로 crontab를 편집해서 0 0 * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w 와 같이 입력해줍니다. 위와 같은 방법으로 윈도우의 시간을 리눅스의 NTP서버 시간으로 맞춰줄수도 있습니다.

NTP서버를 구성할때 주의할점은 보안이 취약하기 때문에 하나의 NTP서버를 구성하고 다른 서버는구성한 NTP서버를 바라보는 4계층으로만들어주어야합니다 해킹공격을 받을때 피해를 최소화하기 위해서입니다. 또한 서버에서 정확한 시간이 중요한 이유는 아래와 같습니다.

1. 로그에 대한 신뢰도

시스템 장애나 침해가 발생했을때 확인 해야할 파일이 로그파일입니다 이떄 로그에 작성되어 있는 시간이 틀리다면 해당 로그는 신뢰할수없어 로그분석에 문제가 생깁니다. 그렇기 때문에 date -s 명령어는 root계정에서만사용이 가능합니다.

2. 예약 작업의 실행 불가능한 상황 방지합니다.

유기적으로 연결된 시스템 환경에서 시스템이 적은 업무시간에 백업, 스크립트 등의 예약작업을 위해서입니다.

3. 인증, 백업시점 불일치를 방지합니다.

암호화 인증 프로토콜로 통신할때 현재 시스템의 시간정보가 상대방에게 전달되는데 이때 상대방의 시간과 전송된 데이터의 시간이 다를 경우 상대방 컴퓨터가 해당 데이터는 오래되거나 잘못된 데이터로 판단해서 폐기 시킬수있습니다.

'서버운영 > Linux' 카테고리의 다른 글

리눅스 본딩(Bonding)  (0) 2017.09.16
리눅스 DHCP  (0) 2017.09.15
리눅스 원격 접속 프로그램  (0) 2017.09.13
리눅스 VMware Network  (0) 2017.09.12
리눅스 네트워크  (0) 2017.09.12
Comments