"NTP"는 네트웍으로 연결되어 있는 컴퓨터들끼리 클록 시각을 동기화시키는데 사용되는 프로토콜이다.
시간 동기화가 필요한 거지 보다 더 정확한 시간이 필요한게 아니다. 물론 정확하면 좋지
그럼 시간 동기화가 필요한 이유? 나 MCU 너 모터 나한테 3시랑 너한테 3시가 같아야지 명령에 오류 없음, 고장 안 남
Time server: UDP/port 37 -> 대표적으로 rdate
근데 시간오차(+윤초대응)시 step방식(빠르게 보정)으로만 보정하기 때문에 쓰면 안됨(NTP도 급할 땐 step방식 씀)
slew 방식(천천히 보정)
그래서 시간이 빠른 장비의 시간 보정을 rdate로 하면 (장비 관점에서)시간이 과거로 돌아가는 문제가 있음 -> DB의 경우 과거 시간으로 데이터가 쌓이면 DB 테이블이 깨질 수 있음.
NTP: UDP/port 123 -> 표준 프로토콜, ntpd와 chrony(ntp에서 개선, 보안?)
SNTP(simple): UDP/port 123 -> systemd-timesyncd에서 구현(약간 다름)
시간정확도 떨어짐
PTP: 더 정밀한 프로토콜(과학, 금융 등에서 사용)
NTS(security for the ntp) -> chrony 4.0부터 지원
! ntpd는 데몬
! ntpdate는 ntp 이용하는 시간동기화 패키지 및 명령어
!! 실행권한 주는 거 생각 chmod -x
!! 데몬(__d)은 백그라운드에서 실행되는 프로그램 또는 서비스
시간 동기화 chrony package 이용(-q quiet출력 간결)
systemd-timesyncd 기본적으로 깔린 요 sntp는 클라이언트 역할만 수행 가능
해당 서버(PC)와 클라이언트(pi4) 모두 설치 필요
sudo apt-get install -y chrony
sudo nano /etc/chrony/chrony.conf(서버는 타임서버 설정, 클라이언트는 서버 ip)
------conf 파일 수정(서버용)------
server [Time server ip] iburst(서버용)
(기존 서버 주석 처리 server 대신 pool 써도 됨, iburst는 동기화 시간 단축 옵션, 다양한 옵션 있음 polling 등등)
allow [Client ip]
(server mode 추가 = client 연결 허용)
local stratum 3
(나 계층 3이야 선언)
leapsecmode slew
(slew 모드 추가, 다른 명령어로 분할 보정 가능, site 참고)
------conf 파일 수정(클라이언트용)------
server [server ip] iburst(클라이언트용)
(마찬가지로 기존 서버 주석 처리)
leapsecmode slew
(slew 모드 추가)
sudo systemctl restart chrony(conf파일 바꿀 시 계속 해주기)
sudo systemctl enable chrony(부팅 시 자동 실행)
timedatectl status(동기화 확인)
chronyc sources(서버는 타임서버와 싱크로 확인, 클라이언트는 싱크로 확인)
systemctl status [ntp 쓰고있는거](동작 확인 가능)
foward time jump detected...?
=> 서버 구성 보고 타임서버 늘리기?
방화벽 오류시
=> 방화벽 설정 site 참고
chrony공식 문서 등등 더 깊게 공부해봐야 할 지도
출처
https://joungkyun.gitbook.io/annyung-3-user-guide/chapter6/chapter6-chrony
https://mini.jellypo.pe.kr/wp/?p=11212
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
할 필요 없이 chrony를 깔면 자동으로 비켜준다
mask unmask => 방화벽으로 권한 껐다 키기
sudo ufw allow 123/udp => udp port에 대한 방화벽 해제(우분투용)
chrony 데몬 위치 /usr/sbin/chronyd => 심볼릭 링크 만들기 /etc/systemd/system 에 ln -s /usr/sbin/chronyd chronyd.service
(/usr/sbin 필수적이지 않은 시스템 바이너리, sbin과 bin은 sudo차이 root권한 차이)
/usr/bin/chronyc
enable disable 하는게 심볼릭 링크 지웠다가 만들었다가 하는 건가?(데몬으로 연결) 맞네 시발
enable 데몬, start는 상관없이 돌아감
sudo timedatectl set-ntp on =>껐다 키기
sudo systemctl mask systemd-timesyncd
Unit systemd-timesyncd.service does not exist, proceeding anyway.
Created symlink /etc/systemd/system/systemd-timesyncd.service → /dev/null.
=> 심볼릭 링크 야매로 만들기
apt-get update 오류
source.list에 [arch=amd64,i386] 링크 앞에 다운로드 받을 수 있는 아키텍처(64비트,32비트 다) 넣어주니까 apt-get update 잘됨;;(왠지 모르겠음)