Tuesday, April 17, 2018

CentOS 7.3 리눅스 네트워크 ] 7.1 NTP - 서버/클라이언트 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스 기반에 NTP 서버/클라이언트 구성에 대해 간단하게 알아보도록 하겠습니다.

컴퓨터 또는 서버에 있는 시간 정보는 어떻게 기록 또는 갱신되는 것일까요? 컴퓨터 메인보드를 자세히 보면 수은(또는 리튬 이온) 전지 모양의 배터리가 있는 것을 확인할 수 있습니다. 이 배터리는 어디에 전원을 공급하는 것일까요?

이 배터리는 Low-level 시스템 기능을 위해 사용되는데 RTC(Real-Time Clock)이나 BIOS 세팅 값을 메모리(주 메모리 아님)에 지속적으로 유지하기 위해 사용됩니다. 그래서 컴퓨터가 꺼져 있을 때에도 시간 정보가 계속 유지되는 것입니다.


■ Time Server가 필요한 이유

전산실에는 수많은 장비가 있습니다. 그리고 각 시스템들은 시스템 시간을 가지는데 시간이 모두 일치해야 각 시스템에 생성되는 데이터, 로그, 보안 등에 관련된 것들이 시간에 대해 일관성을 가지게 됩니다. 하지만 시간이 지남에 따라 운영되는 시스템들의 시스템 시간(^^)이 불일치하게 됩니다. 그래서 동일한 시간을 가지게 시간 동기화를 할 필요가 있는데 이때 사용되는 시스템이 NTP 서버입니다.

■ NTP 

이전에는 rdate라는 명령을 사용하여 시간 서버(Time Server)로 사용되는 서버와 개별적으로 시간 동기화를 하였으나 요즘은 NTP (Network Time Protocol) 프로토콜을 사용하는 서비스를 통해 시간 동기화를 시킵니다. 다시 말해 NTP는 네트워크를 통해 시스템 시간을 동기화시키는 통신프로토콜 또는 서비스입니다. NTP는 1985년 이전부터 운영되어 오고 있는 매우 오래된 인터넷 프로토콜 중 하나입니다.

NTP는 시간만을 처리하는 원자 서버가 있으며 이를 Stratum 0이라 부릅니다. 그리고  NTP 서버와 직접 연결된 NTP 서버를 Stratum1이라 부릅니다. stratum 1, stratum 2, stratum 3 이런 형식으로 NTP는 계층적인 시스템을 사용합니다.

전산실에 NTP 서버로 사용할 시스템을 두고 Stratum 서버와 시간 동기화 설정을 합니다. 그리고 전산실 내에 있는 모든 시스템에 NTP 서비스를 통해 시간 동기화를 시키는 것입니다. 이렇게 하기 위해서 NTP 서버/클라이언트 구성이 필요합니다.

여러분들이 사용하는 윈도우 운영체제는 기본적으로 time.windows.com 서버와 시간 동기화를 구성되어 있죠.

국내 NTP 서버에 대한 정보는 아래와 같습니다.

▶ Stratum 1

도메인 이름
IP 주소
비고
time.kriss.re.kr
210.98.16.100
 -
ntp.postech.ac.kr
141.223.182.106
 -
gps.bora.net
210.120.246.46
 -
ntp.kornet.net
168.126.63.6
 -

▶ Stratum 2

도메인 이름
IP 주소
비고
time.kriss.re.kr
210.98.16.100
 -
maths.kaist.ac.kr
143.248.25.208
 -
time.bora.net
203.248.240.103
 -
clock.iptime.ac.kr
61.100.12.187
 -

▶ Stratum 3

도메인 이름
IP 주소
비고
time1.daum.net
211.233.78.116
 -

자 그럼 CentOS 7.3 리눅스에서 NTP 서버/클라이언트를 구성하는 방법에 대해 알아보도록 하겠습니다.

앞에서 전산 환경에서 왜? 시간 동기화가 필요한지에 대해 간략하게 설명드렸습니다. 그리고 요즘 전산실에는 NTP 서버 하나씩 다 구성을 해두고 있습니다. 보통 라이선스 비용이 안 나가는 CentOS나 Ubuntu 가지고 구성하는 곳도 많습니다. 통신 프로토콜을 사용하여 네트워크를 통해 시간을 뿌리기 때문에 간단하게 시간을 전파시킬 수 있습니다.





■ CentOS 7.3 리눅스에 NTP 서버 구성

NTP 서버로 구성하기 위해서는 관련된 패키지 설치가 필요하다. CentOS 7.3 리눅스 설치 시 Server with GUI로 설치하면 NTP 서버/클라이언트에 관련된 패키지가 자동으로 설치되지 않는다. 아래와 같은 명령을 실행하여 NTP 관련 패키지를 확인한다.


[root@centos701 ~]# rpm -qa | grep "^ntp"

ntpdate-4.2.6p5-25.el7.centos.x86_64

[root@centos701 ~]#

CentOS 7.3 DVD ISO를 CDROM에 연결하여 rpm 명령으로 관련된 패키지를 설치한다.


[root@centos701 ~]# df -h | grep sr0

/dev/sr0             7.8G  7.8G     0 100% /run/media/root/CentOS 7 x86_64

[root@centos701 ~]#
[root@centos701 ~]# cd /run/media/root/CentOS\ 7\ x86_64/Packages/
[root@centos701 Packages]#
[root@centos701 Packages]# ls | grep "^ntp"

ntp-4.2.6p5-25.el7.centos.x86_64.rpm
ntp-doc-4.2.6p5-25.el7.centos.noarch.rpm
ntp-perl-4.2.6p5-25.el7.centos.noarch.rpm
ntpdate-4.2.6p5-25.el7.centos.x86_64.rpm

[root@centos701 Packages]#
[root@centos701 Packages]# rpm -ivh ntp-4.2.6p5-25.el7.centos.x86_64.rpm

경고: ntp-4.2.6p5-25.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:ntp-4.2.6p5-25.el7.centos        ################################# [100%]

[root@centos701 Packages]#

1). NTP 서버 간단 설정

NTP 서버 구성을 위해 /etc/ntp.conf 파일을 수정한다.

[root@centos701 Packages]# cat /dev/null > /etc/ntp.conf
[root@centos701 Packages]# vi /etc/ntp.conf

server 92.86.106.228 iburst        #server 0.centos.pool.ntp.org iburst # 기존 /etc/ntp.conf 파일에 있던
server 82.78.227.6 iburst           #server 1.centos.pool.ntp.org iburst # ntp.org 도메인에 관련된 IP 주소 정보
server 93.114.42.129 iburst        #server 2.centos.pool.ntp.org iburst # 이다.
server 86.122.158.76 iburst        #server 3.centos.pool.ntp.org iburst
server 80.96.120.252 iburst
server 93.190.144.3 iburst
server 89.36.93.9 iburst
server 188.241.220.3 iburst

server 127.127.1.0
fudge 127.127.1.0 stratum 5
restrict 192.168.80.0 netmask 255.255.255.0 nomodify notrap
broadcast 224.0.1.1

driftfile /var/lib/ntp/drift
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

[root@dhcpntp ~]#

2). NTP 서버 시작/종료

[root@centos701 Packages]# systemctl [ start | stop ] ntpd

3). 부팅 시 NTP 서버 자동 시작

[root@centos701 Packages]# systemctl [ enable | disable ] ntpd

4). NTP 서버 테스트 (테스트를 위해 방화벽을 내리거나 방화벽 정책에 추가해줘야 함)

[root@centos701 Packages]# systemctl enable ntpd

Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

[root@centos701 Packages]# systemctl start ntpd
[root@centos701 Packages]#
[root@centos701 Packages]# firewall-cmd --permanent --add-service=ntp

success

[root@centos701 Packages]# firewall-cmd --reload

success

[root@centos701 Packages]# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcp dhcpv6-client ntp ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

[root@centos701 Packages]# 




■ CentOS 7.3 리눅스에 NTP 클라이언트 구성 

NTP 클라이언트로 구성하기 위해서는 관련된 패키지 설치가 필요하다. 아래와 같이 NTP 관련 패키지를 설치한다.

[root@centos702 ~]# rpm -qa | grep "^ntp"

ntpdate-4.2.6p5-25.el7.centos.x86_64

[root@centos702 ~]#
[root@centos702 ~]# cd /run/media/root/CentOS\ 7\ x86_64/Packages/
[root@centos702 Packages]#
[root@centos702 Packages]# ls | grep "^ntp"

ntp-4.2.6p5-25.el7.centos.x86_64.rpm
ntp-doc-4.2.6p5-25.el7.centos.noarch.rpm
ntp-perl-4.2.6p5-25.el7.centos.noarch.rpm
ntpdate-4.2.6p5-25.el7.centos.x86_64.rpm

[root@centos702 Packages]#
[root@centos702 Packages]# rpm -ivh ntp-4.2.6p5-25.el7.centos.x86_64.rpm

경고: ntp-4.2.6p5-25.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
준비 중...                         ################################# [100%]
Updating / installing...
   1:ntp-4.2.6p5-25.el7.centos        ################################# [100%]

[root@centos702 Packages]#

1). NTP 클라이언트 간단 설정

NTP 클라이언트 구성을 위해 /etc/ntp.conf 파일을 수정한다.

[root@centos702 ~]# ls /etc/ntp.conf

/etc/ntp.conf

[root@centos702 ~]# cat /dev/null > /etc/ntp.conf
[root@centos702 ~]# echo "server 192.168.80.10" > /etc/ntp.conf

server 192.168.80.10 iburst
multicastclient 224.0.0.1

[root@dhcpntp ~]#

2). NTP 서버 시작/종료

[root@centos701 Packages]# systemctl [ start | stop ] ntpd

3). 부팅 시 NTP 서버 자동 시작

[root@centos701 Packages]# systemctl [ enable | disable ] ntpd

4). NTP 클라이언트 테스트

▶ 서비스 시작

[root@centos702 sbin]# systemctl enable ntpd

Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

[root@centos702 sbin]# systemctl start ntpd
[root@centos702 sbin]#
[root@centos702 sbin]# systemctl status ntpd

● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 금 2017-02-03 17:19:36 KST; 6s ago
  Process: 2554 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2555 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─2555 /usr/sbin/ntpd -u ntp:ntp -g

[root@centos702 sbin]#

▶ ntpq 명령을 사용한 시간 동기화 확인

[root@centos702 sbin]# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.80.10   80.96.120.252    2 u   16   64    1    0.381   -2.277   0.055

[root@centos702 sbin]# 

▶ NTP 시간 동기화 테스트

NTP 클라이언트 호스트의 시스템 시간을 data 명령으로 변경한 후 자동으로 NTP 서버와 시간 동기화가 되는지 확인한다. 동기화를 위해 시간이 수 분 정도 걸리니 조금 기다려야 한다.

[root@centos702 sbin]# date

2017. 02. 03. (금) 17:25:31 KST

[root@centos702 sbin]#
[root@centos702 sbin]# date 02031724 [시간 변경]

2017. 02. 03. (금) 17:24:00 KST

[root@centos702 sbin]#
[root@centos702 sbin]# date

2017. 02. 03. (금) 17:24:03 KST

[root@centos702 sbin]#
[root@centos702 sbin]# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.80.10   80.96.120.252    2 u 4971   64    7    0.381   -2.277   0.512

[root@centos702 sbin]# date

2017. 02. 03. (금) 17:28:37 KST

[root@centos702 sbin]# ntpq -p [시간 오차 감지]

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 192.168.80.10   80.96.120.252    2 u   24   64  377    0.389  105412. 39843.5

[root@centos702 sbin]# date

2017. 02. 03. (금) 17:35:36 KST

[root@centos702 sbin]#
[root@centos702 sbin]# ntpq -p [시간 동기화]

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.80.10   80.96.120.252    2 u   24   64  377    0.331  105410.   2.935

[root@centos702 sbin]# 

전산실 내부에 구축된 NTP 서버와 시간을 동기화하기 위해 ntpdate 명령을 cron에 등록하거나 위와 같이 NTP 클라이언트를 구성할 수도 있습니다. 여기까지 NTP 서버/클라이언트 간단 구성에 대해 알아보았습니다.

다음 게시물에서는 NFS 서비스에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment