다른 서버를 참조하지 않고 ntpd 서버 시간을 어떻게 설정할 수 있습니까?

다른 서버를 참조하지 않고 ntpd 서버 시간을 어떻게 설정할 수 있습니까?

NTP를 사용하여 UTC를 로컬로 동기화하는 내장 시스템이 있습니다. 시스템의 클라이언트 중 하나는 다른 클라이언트에 대한 시간 참조 역할을 합니다. 레이어 0이라고 생각하시면 될 것 같아요. 이 "NTP 서버"의 프로그램은 GPS 시스템이나 UI를 통해 새 시간을 설정하는 사람과 같은 여러 잠재적인 시간 소스 중 하나로부터 시간을 설정하라는 메시지를 받을 수 있습니다. 새로운 시간은 NTP 포트 123에서 실제 NTP 메시지로 표시되지 않습니다.

나는 성공하지 못한 채 ntpd 시간을 설정하는 방법을 찾고 있었습니다. 문제를 해결해야 할 일을 해볼 생각인데 popen(), 인터넷에서는 로컬 시스템을 구성하기보다는 외부 서버의 시간을 어떻게 조정하느냐에 초점이 맞춰져 있는 것 같습니다.

외부 NTP 서버를 참조하지 않고 ntpd 서버 시간을 어떻게 설정합니까?


사용 사례의 예로서 시간 원본은 다음 중 하나일 수 있습니다.docs.novatel.com/oem7/Content/Home.htm(GNSS 수신기). 이는 가능한 구성 중 하나일 뿐입니다. 다른 클라이언트는 자신만의 별도 시간 소스를 사용합니다. NTP 서버가 포함되어 있지 않기 때문에 처음부터 하나를 구현해야 했습니다.

답변1

시간은 많은 사람들이 인식하는 것보다 훨씬 더 복잡한 주제입니다. "시간 설정"만 하면 되는 것처럼 보이지만 ntpd실제로는 고려해야 할 사항이 더 많습니다.

귀하의 질문에 대한 정말 맹목적인 (나쁜) 대답은 단순히 다음을 사용하여 시스템 시간을 설정하는 것일 수 있습니다.clock명령줄에서 또는stime프로그램에서. 이는 NTP가 자체 내부 시계를 저장하지 않기 때문에 가능합니다. 하지만 그렇게 하면 원하는 결과가 나오지 않을 수도 있습니다.

NTP는 현재 시스템 시간을 설정하여 클라이언트에 배포할 뿐만 아니라 시계의 오류를 추적하여 다른 시간 소스 폴링 간에 조정할 수 있습니다. 단순히 현재 시간을 설정하는 것만으로는 NTP에 오류를 알리지 않으므로 NTP가 시스템 시계를 조정하는 데 사용하는 "빈도"를 업데이트하지 않습니다.

실시간의 유일한 소스가 시스템 시간을 설정하는 사람이라면 유일한 옵션일 수 있습니다.

GPS를 서버의 시간 소스로 사용하려는 경우 ntpd올바른 용어는 다음 ntpd과 같이 구성하는 것입니다.레이어 1섬기는 사람.


ntpd이 문제에 대한 일부 기사를 읽은 후에 실제로 GPS를 포함한 하드웨어 시계와 통신하는 방법이 내장되어 있는 것 같습니다 .가상 주소 범위를 사용하여 구성됩니다.127.127.0.0/16. 예는 다음과 같습니다.

시간 장치가 실제로 NTP 서버 상자에 연결되어 있지 않기 때문에 이 기능을 사용할 수 없는 경우 자체 커널 모듈을 작성하여 들어오는 패킷을 기반으로 하드웨어 시계를 시뮬레이션할 수 있습니다.

그러나 지금까지 가장 좋은 방법은 이 목적을 위해 다른 사람이 만든 드라이버를 사용하는 것입니다. 가능하다면 실제로 ntpd를 실행하는 상자에 GNSS 수신기를 연결하여 필요할 때 ntpd가 자동으로 시간을 얻을 수 있도록 해야 합니다.

관련 정보