dhcp를 통해 제공되는 ntp 정보를 사용하도록 Linux 클라이언트를 어떻게 설정합니까?

dhcp를 통해 제공되는 ntp 정보를 사용하도록 Linux 클라이언트를 어떻게 설정합니까?

dhcpd서버를 설정하고 dhcp 클라이언트에 ntp 제안을 제공하는 방법을 설명하는 많은 튜토리얼이 있습니다. 저는 항상 ntp구성이 자동화되었다고 생각했습니다. 최근에 로컬 네트워크에서 클럭 드리프트가 보이기 시작했는데 이는 잘못된 가정이라고 생각합니다. 그래서 ntp-server제안된 대로 .net을 통해 설정 되었다는 점을 고려하여 ntp 클라이언트 구성을 최소화하는 방법을 연구하기 시작했습니다 dhcpd.

이 Ubuntu 관련 도움말 튜토리얼 외에는 많은 것을 찾을 수 없습니다.https://help.ubuntu.com/community/UbuntuTime. 여기("문제 해결 -> 어떤 구성 파일을 사용할 것인가?" 아래 단락 참조)에도 정보가 거의 없지만 /etc/ntp.conf.dhcp파일이 발견되면 사용된다고 나와 있습니다. 첫째, 저자가 여기서 언급하는 실제 위치는 /var/lib/ntp/ntp.conf.dhcp에서 관찰 되었지만 /etc/init.d/ntp, 그럼에도 불구하고 파일의 존재가 ntp가 서버에 요청을 한다는 것을 보장하지는 않습니다 dhclient. 따라서 로컬 ntp 서버에 대해 이 server절을 명시적으로 추가해야 합니다. ntp.conf.dhcp그런데 그렇다면 왜 dhcpd서버에서 ntp 설정을 해야 합니까?

ntp 설정을 한 번(예: 서버에서) 설정하고 dhcpd서버가 정보를 클라이언트에 위임하도록 하는 것은 직관적이지 않은 것 같습니다. ntp.conf의 클라이언트 구성을 완전히 피하지는 않더라도 최소화하려면 어떻게 해야 합니까? 아니면 어떻게 ntp통과 하나요 dhclient?

모든 Linux 배포판에 대한 CLI 솔루션이 있습니까?

나는 모든 클라이언트가 실행 파일을 가지고 있어야 한다고 가정 ntpd하지만 거기서부터 진행하는 방법을 모르겠습니다.

감사해요

편집: 수동으로 실행할 때 Ubuntu 클라이언트 자세한 출력 dhclient:

sudo dhclient -1 -d -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/20:cf:30:0e:6c:12
Sending on   LPF/eth0/20:cf:30:0e:6c:12
Sending on   Socket/fallback
DHCPREQUEST of 192.168.112.150 on eth0 to 255.255.255.255 port 67 (xid=0x2e844b8f)
DHCPACK of 192.168.112.150 from 192.168.112.112
reload: Unknown instance: 
invoke-rc.d: initscript smbd, action "reload" failed.
RTNETLINK answers: File exists
 * Stopping NTP server ntpd
   ...done.
 * Starting NTP server ntpd
   ...done.
bound to 192.168.112.150 -- renewal in 41963 seconds.

ntpd 서비스가 다시 시작되었지만 ntpq -cpe -cas실행한 후에도 ntp 서버 목록에 로컬 ntp 서버가 여전히 표시되지 않습니다.

물론 내 dhcpd서버에는option ntp-servers

subnet 192.168.112.0 netmask 255.255.255.0 {
        max-lease-time 604800;
        default-lease-time 86400;
        authoritative;
        ignore client-updates;

        option ntp-servers 192.168.112.112; #self

        ... (many other options)
}

답변1

ntp-servers사용 중인 dhcp 서버가 이 옵션을 ntp-servers제공 하도록 구성된 경우 dhclient.confUbuntu Linux(19.04 기준, 그러나 적어도 12.04부터 존재함):

request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

/etc/ntp.confDHCP의 정보는 를 생성하는 데 사용됩니다 /etc/ntp.conf.dhcp.

ntpd에 /etc/ntp.conf.dhcp가 있는 경우 이를 사용하도록 지시해야 합니다. 내가 사용하고 있는 Ubuntu 버전에서는 이 작업 이 /etc/dhcp/dhclient-exit-hooks.d/ntp./etc/ntp.conf.dhcp/etc/ntp.conf

답변2

실제로 사용 중인 네트워크 설정/dhcp/NTP 구성 요소의 조합과 배포판의 통합 노력에 따라 달라집니다.

2020년 현재, 적어도 일부 배포판은 다음을 고려합니다.친구NTPD에 대한 더 나은 대안 으로 Chrony를 기본적으로 설치한 다음 Chrony에 대해서만 DHCP 클라이언트와 DHCP 클라이언트 통합을 유지합니다.

네트워크 설정의 경우 배포판에서 널리 사용되는 기본값은 다음과 같습니다.네트워크 관리자(NetworkManager는 배포의 기본 구성을 사용하여 DHCP 클라이언트를 자동으로 호출합니다). 따라서 배포 기본값(즉, NetworkManager 및 Chrony)을 사용하는 경우 DHCP 제공(로컬) NTP 서버를 선택해야 합니다.

NetworkManager 및 Chrony

그것을 사용할 때친구다음과 같이 DHCP에서 광고한 NTP 서버가 Chrony와 통신하고 있는지 확인할 수 있습니다.

# chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- fritz.box                     3   6     0  1015   +627us[  -23us] +/-   47ms
^* ntp3.rrze.ipv6.uni-erlan>     1   7   377    47   +997us[+1007us] +/-   26ms
^+ tethys.hot-chilli.net         2   7   377    47   +522us[ +533us] +/-   51ms
^+ mail.jabber-germany.de        3   7   377    46   +352us[ +352us] +/-   61ms
^+ 2a.ncomputers.org             2   7   377    44  -2900us[-2900us] +/-   73ms

(이는 기본 구성을 사용하는 NetworkManager 및 Chrony가 있는 Fedora 31 시스템에서 가져온 것입니다.)

이 예는 내 홈 라우터( )에 포함된 로컬 NTP 서버(DHCP를 통해 공지됨)가 fritz.box실제로 Chrony에 알려져 있지만(일부 NetworkManager 글루 구성/코드를 통해) 현재 Chrony에서 사용되지 않음을 보여줍니다(예 M -> -: 두 번째 열 참조). 마지막 8개의 답변이 유효하지 않습니다( 참조 Reach -> 0).

S
    This column indicates the state of the source.
      ·   * indicates the source to which chronyd is currently
            synchronised.
      ·   + indicates acceptable sources which are combined with the
            selected source.
      ·   - indicates acceptable sources which are excluded by the
            combining algorithm.

[..] Reach 이것은 8진수로 인쇄된 소스의 도달 가능성 레지스터를 표시합니다. 이 레지스터는 8비트를 가지며 소스로부터 패킷을 수신하거나 손실할 때마다 업데이트됩니다. 값 377은 마지막 8번의 전송에서 모든 유효한 응답이 수신되었음을 나타냅니다.

(F32의 chronyc(1))

보시다시피, 이와 같은 배포의 경우 모든 것이 즉시 작동해야 합니다. 2Chrony와 NetworkManager가 설치되어 있는지(그리고 로컬 NTP 서버가 유효한 응답을 보내는지) 확인하기만 하면 됩니다 .

네트워크 및 시간 동기화

네트워킹그리고시간 동기화활성화되면(NetworkdManager 및 Chrony는 제외) 네트워크 설정을 처리하고 NTP 클라이언트 역할을 하는 systemd의 포트입니다.

systemd가 이미 사용 중이라면(아마도 그럴 것입니다) 서버 및 소형 임베디드 장치용 NetworkManager 및 Chrony를 보다 가벼운 대체품으로 간주할 수 있습니다. 그러나 일부 배포판(예: RHEL/CentOS 8)에서는 이러한 구성 요소를 패키징하지 않습니다.

Networkd와 Timesyncd가 모두 활성화되면 Networkd는 기본적으로 DHCP에서 제공하는 NTP를 사용합니다.다른 서버보다 선호하는 Timesyncd에서 사용할 수 있는 서버.


1 참조:

Chrony는 chrony를 지원하지 않는 도구로 관리 또는 모니터링되는 시스템이나 chrony와 함께 사용할 수 없는 하드웨어 참조 클럭이 있는 시스템을 제외한 모든 시스템보다 우선적으로 사용해야 합니다.

(RedHat은RHEL 7 관리 가이드)

보안 관점에서(CII에서는 보안 전문가임) Chrony가 이 세 가지 NTP 구현 중에서 확실한 승자입니다.

(핵심 인프라 이니셔티브에서 의뢰한 2017년 보안 감사에서 다음을 통해저수온망)

Chrony의 NTP 구현 비교

물론 모듈 2는 틀렸습니다. 예를 들어, Fedora의 과거 버그는 다음과 같습니다.

답변3

관련 정보