안녕하세요. 이번 포스트에서는 Rocky Linux 서버에서 NTP 동기화 문제를 해결하고 JWT 토큰 오류를 해결한 과정을 공유하려고 합니다. 시간 동기화 문제는 JWT 토큰 생성 및 사용 시 중요한 요소이기 때문에, NTP 동기화 설정이 제대로 되어 있지 않으면 다양한 문제가 발생할 수 있습니다.
* NTP(Network Time Protocol) 서버는 네트워크 상에서 시간을 정확히 맞춰주는 서버입니다. 시스템 시간의 정확한 동기화는 보안, 로그 기록, 일정한 작업 수행을 위해 중요합니다. 정확한 시간 동기화가 없으면 인증 오류, 로그 불일치 등 문제가 발생할 수 있습니다.
문제 발생
서버 로그에서 JWT 토큰 생성 시 다음과 같은 오류가 발생했습니다:
Error: "invalid_grant", Description: "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe"
timedatectl status 명령어를 통해 시간 동기화 상태를 확인한 결과, System clock synchronized: no로 표시되었고, NTP 서버와 동기화되지 않는 문제가 발견되었습니다.
문제 해결 과정
1. chrony 설치 및 설정
Rocky Linux에서는 chrony를 사용하여 NTP 동기화를 설정합니다.
chrony 설치
sudo yum install chrony
chrony.conf 파일 설정
/etc/chrony.conf 파일을 열어 NTP 서버 설정을 추가합니다.
sudo vi /etc/chrony.conf
다음과 같은 설정을 추가합니다:
# Use public servers from the pool.ntp.org project.
pool pool.ntp.org iburst
server time.google.com iburst
server time.cloudflare.com iburst
server ntp.ubuntu.com iburst
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Specify directory for log files.
logdir /var/log/chrony
2. chrony 서비스 재시작 및 동기화 강제 업데이트
chrony 서비스를 재시작하고 시간 동기화를 강제 업데이트합니다.
sudo systemctl restart chronyd
sudo chronyc -a makestep
3. timedatectl 상태 확인
시간 동기화 상태를 확인합니다.
timedatectl status
출력 예시:
Local time: Mon 2024-07-29 10:32:29 KST
Universal time: Mon 2024-07-29 01:32:29 UTC
RTC time: Mon 2024-07-29 01:32:29
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
4. 방화벽 설정 확인
서버의 방화벽 설정을 확인하여 NTP 트래픽이 차단되지 않도록 설정합니다.
sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
sudo service iptables save
5. 수동 NTP 동기화
ntpdate를 사용하여 수동으로 NTP 서버와 동기화를 시도합니다.
sudo yum install ntpdate
sudo ntpdate pool.ntp.org
6. 시스템 재부팅
모든 설정을 완료한 후, 시스템을 재부팅하여 설정이 제대로 적용되도록 합니다.
sudo reboot
7. 최종 확인
시스템 재부팅 후, timedatectl status 명령어를 실행하여 시스템 시간 동기화 상태를 다시 확인합니다.
결론
이 단계를 통해 시스템 시간이 NTP 서버와 올바르게 동기화되었으며, JWT 토큰 생성 및 사용 시 발생하는 시간 관련 오류가 해결되었습니다. 시스템 시간이 정확하게 동기화됨으로써 시간에 민감한 작업이 정상적으로 수행될 수 있게 되었습니다.
이와 같은 문제를 해결할 때는 NTP 서버와의 시간 동기화 상태를 항상 확인하고, 필요한 경우 방화벽 설정 및 네트워크 설정을 점검하여 원활한 동기화가 이루어지도록 해야 합니다.
'Server > Linux' 카테고리의 다른 글
[Ubuntu linux] MongoDB AWS S3 백업하기 (0) | 2024.01.17 |
---|---|
[Aws Ubuntu] Mariadb 백업하기 (mariabackup) (0) | 2024.01.16 |
[Aws Ubuntu] MongoDB 유저 생성 및 권한 부여 (0) | 2023.12.13 |
[Ubuntu] Linux Aws CloudWatch Memory 및 용량 확인 (0) | 2023.10.31 |
[Ubuntu] Linux EC2 서버 시간 설정하기 (0) | 2023.10.31 |