NTP와 Bind 사이의 닭이냐 달걀이냐의 문제

NTP와 Bind 사이의 닭이냐 달걀이냐의 문제

이것은 제가 해결한 문제에 대한 보고서입니다. 하지만 이 솔루션이 다른 사람들에게도 유용할 것이라고 생각합니다.

이 문제는 Raspbian 9.13에서 발생합니다. 아직 발견되지 않은 일부(아마도 하드웨어) 이유로 인해 내 Raspberry Pi 기반 라우터가 충돌하여 재부팅되지 않았습니다. 라즈베리 파이가 처음 전원을 켰을 때 표시되는 무지개 같은 이미지에 멈춰 있는 것을 발견했습니다.

어쨌든, Pi를 다시 시작했고 모든 것이 평소대로 작동했습니다.

작동하지 않는 유일한 것은 Bind 9입니다. 데몬이 실행 중이지만 이름 확인이 작동하지 않습니다.

다음 도움말을 살펴보았습니다.https://dnsinstitute.com/documentation/dnssec-guide/ch05s04.html/var/log/named/dnssec.log에서 이상한 로그를 발견했기 때문입니다.

validating ./NS: verify failed due to bad signature (keyid=60955): RRSIG validity period has not begun

내가 찾은 한 가지 가능한 해결책은 실제로 시간이 잘못되었다는 것입니다. Pi가 표시한 시간은 과거 5시간 전입니다. 이것이 미래에 RRSIG가 효과적인 이유를 설명합니다.

문제는 NTP 서버 이름을 확인할 수 없기 때문에 시간을 올바르게 설정할 수 없다는 것입니다. 타이밍이 잘못되어 이름 확인이 전혀 작동하지 않기 때문입니다.

답변1

Raspberry Pi에는 (배터리로 작동되는) 실시간 시계가 없으므로 전원이 꺼지면 현재 시간을 추적할 수 없습니다. 이를 기존 방식으로 처리하고 시작 후 시간을 수동으로 입력할 수 있지만 다른 옵션도 있습니다.

  • 여기서 문제는 DNS이므로 간단한 해결책은 IP 주소만 사용하여 시작 시 사용할 시간 서버를 지정하는 것입니다. 적어도 다른 주소로 이동할 가능성이 없는 로컬 시간 서버가 있는 한 상대적으로 안전합니다. 그러나 네트워크가 다운된 상태에서 시스템이 부팅되는 경우에는 도움이 되지 않습니다.

  • 정말 저렴한 솔루션은 종료 시 파일 시스템의 현재 시간을 저장하고 시작 시 다시 읽는 것입니다. 그 동안 얼마나 많은 시간이 흘렀는지 알 수 없지만 적어도 빠른 재부팅을 할 수 있는 시간은 그리 멀지 않습니다. 그러나 모든 종료 작업을 실행하지 않고 시스템이 충돌하면 시간이 절약되지 않습니다. 재부팅 후 소요되는 시간과 스토리지의 쓰기 내구성을 고려하여 가끔씩 명시적으로 시간을 절약하여 이 문제를 해결할 수 있습니다.

  • 또는 Pi용 RTC 모듈을 구입하세요. 찾기가 어렵지도 않고 비용도 많이 들지 않습니다. (예를 들어thepihut.com,adafruit.com)

답변2

이러한 상황을 피하기 위해 하드코딩된 IP 주소를 사용하여 chrony/ntpd에 NTP 소스를 포함시켰습니다. 이는 다음과 같을 수 있습니다:

  • LAN에 배터리 전원을 사용하는 RTC가 있는 NTP 서버가 이미 있습니다.
  • Google/Cloudflare와 같은 NTP 서버

답변3

그래서 date 명령을 사용하여 시간을 올바르게 설정합니다.

sudo date -s '2023-06-23 10:39:20'

모든 것이 정상으로 돌아왔습니다.

이상한 질문이라 여기에 글을 올립니다.

이것이 언젠가 누군가에게 도움이 되기를 바랍니다.

건배!

답변4

전통적인 UNIX 접근 방식은 ntpdateDHCP 푸시 서버를 사용하여 부팅 프로세스 초기에 날짜를 설정한 다음 ntpd시스템이 완전히 부팅된 후에 프로세스를 시작하는 것입니다.

관련 정보