1. Ubuntu에서 NTP의 중요성
NTP란 무엇인가?
NTP(Network Time Protocol)는 네트워크를 통해 컴퓨터 시스템의 시간을 정확하게 동기화하도록 설계된 프로토콜입니다. 정확한 시스템 시간을 유지하는 것은 로그 일관성, 트랜잭션 처리 및 네트워크 통신의 신뢰성을 위해 필수적입니다. 시스템 시계가 흐르면 네트워크 오류나 데이터 불일치가 발생할 수 있어, 특히 서버 환경에서는 정확한 시간 동기화가 매우 중요합니다.
Ubuntu에서는 불안정한 네트워크 환경에서도 정확한 시간 동기화를 제공하는 chrony가 권장됩니다. Chrony는 낮은 지연 시간과 빠른 동기화를 제공하여 서버와 클라이언트 환경 모두에 적합합니다.
2. NTP 설정 방법
Chrony 설치 및 구성
Chrony는 Ubuntu 18.04 이후 기본 NTP 클라이언트입니다. 다음 단계에 따라 Chrony를 설치하고 NTP 서버를 사용해 시간 동기화를 구성합니다.
설치 단계
sudo apt update
sudo apt install chrony
다음으로 Chrony 서비스를 시작하고 자동 시작을 위해 활성화합니다.
sudo systemctl start chrony
sudo systemctl enable chrony
구성 파일은 /etc/chrony/chrony.conf에 위치합니다. 일본에 위치한 NTP 서버를 사용하려면 다음과 같이 설정합니다.
server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
iburst 옵션은 NTP 서버에 연결할 때 초기 동기화를 가속화합니다.
3. NTP 서버 최적화 및 선택
NTP Pool Project 활용
NTP Pool Project는 전 세계에서 수집된 지역 최적화 NTP 서버를 제공합니다. 여러 NTP 서버를 구성하면 신뢰성이 향상되어 하나의 서버가 사용 불가능해도 다른 서버가 원활히 시간 동기화를 계속할 수 있습니다.
아래 예시는 일본에 위치한 서버를 사용하는 구성입니다.
server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
4. 시간대 설정
timedatectl 명령 사용
기본적으로 Ubuntu는 시스템 시간대를 UTC로 사용합니다. 다음 명령을 사용해 일본 표준시(JST)로 변경할 수 있습니다.
sudo timedatectl set-timezone Asia/Tokyo
변경 후 현재 시간대 설정을 확인하려면 다음을 실행합니다.
timedatectl
5. 문제 해결
NTP가 동기화되지 않을 때
방화벽 확인
NTP는 UDP 포트 123을 사용하며, 방화벽이 이 포트를 차단하면 동기화가 실패할 수 있습니다. 다음 명령으로 포트 123을 열어 주세요.
sudo ufw allow 123/udp
잘못된 타이머 확인
ntpq -p 명령을 사용해 NTP 서버가 정상적으로 동작하는지 확인합니다. 부정확한 시간을 제공하는 서버는 x 기호로 표시됩니다. 발견되면 해당 서버를 구성에서 제거하거나 교체합니다.
Stratum 16 오류
NTP 서버가 상위 서버와 동기화되지 못하면 Stratum 16 오류가 발생합니다. 이는 연결 문제 또는 구성 오류를 의미합니다. 네트워크 설정을 확인하고 신뢰할 수 있는 상위 소스와 동기화되도록 NTP 서버를 재구성하세요.
수동 시간 동기화
Chrony를 사용해 수동으로 시간을 동기화하려면 다음 명령을 실행합니다.
sudo ntpdate ntp.nict.jp
동기화 문제를 진단하려면 Chrony 로그도 확인할 수 있습니다.
sudo journalctl -u chrony
6. 고부하 환경에서의 NTP 최적화
minpoll 및 maxpoll 조정
고정밀 시간 동기화가 필요한 환경에서는 NTP 폴링 간격을 조정해 더 자주 업데이트하고 시간 드리프트를 최소화할 수 있습니다. 아래 구성 예시는 동기화 빈도를 높이는 방법을 보여줍니다.
server ntp.nict.jp iburst minpoll 4 maxpoll 10
Juju로 NTP 관리
대규모 클라우드 환경에서는 Juju를 사용하여 NTP 서비스 배포를 자동화할 수 있습니다. Juju는 호스트 부하를 모니터링하고 최적의 호스트를 자동으로 NTP 서버로 선택합니다. Juju를 통해 NTP를 배포하려면 다음과 같이 진행하십시오:
juju deploy cs:ntp ntp
juju config ntp auto_peers=true
이를 통해 자동화된 NTP 관리가 가능해지며, 부하를 효율적으로 분산하고 시간 동기화를 효율적으로 보장합니다.
7. 보안 강화
NTP 서버에 대한 접근 제어
보안을 향상시키기 위해 NTP 서버 접근을 특정 IP 주소로 제한할 수 있습니다. 승인된 네트워크에서만 요청을 허용하도록 /etc/chrony/chrony.conf에 접근 제어 규칙을 아래와 같이 추가하십시오:
allow 192.168.1.0/24
이렇게 하면 외부 호스트로부터의 무단 NTP 요청을 차단하고 내부 네트워크 보안을 강화할 수 있습니다.

