ntpq -pn이 "연결 거부됨"을 보고하는 이유는 무엇입니까?

ntpq -pn이 "연결 거부됨"을 보고하는 이유는 무엇입니까?

최근 NTPD를 실행하는 CentOS 6.x 시스템을 설정했는데 다음을 실행할 때 이 오류가 발생했습니다 ntpq -pn.

$ ntpq -pn
ntpq: read: Connection refused

나는 그것이 ntpd다음 명령으로 실행되고 있다는 것을 알고 있습니다 ntpstat.

$ ntpstat
synchronised to NTP server (204.11.201.12) at stratum 3
   time correct to within 71 ms
   polling server every 256 s

ntpq -pn작동하지 않나요?

답변1

strace다음과 같이 출력을 보면 이를 분류할 수 있습니다.

$ strace ntpq -pn ::1|& grep -i conn
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET6, sin6_port=htons(123), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
recvfrom(3, 0x7fffc3365a10, 516, 0, 0, 0) = -1 ECONNREFUSED (Connection refused)
write(2, "Connection refused\n", 19Connection refused

연결에는 ipv6을 사용합니다. 기본적으로 다음 줄은 다음과 같습니다.

connect(3, {sa_family=AF_INET6, sin6_port=htons(123), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0

NTPD가 ipv6 포트에서 수신 대기하고 있습니까?

$ netstat -taupn|grep udp|grep ntp
udp        0      0 10.22.7.237:123             0.0.0.0:*                               24213/ntpd
udp        0      0 127.0.0.1:123               0.0.0.0:*                               24213/ntpd
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               24213/ntpd

따라서 ipv6에서 수신 대기하지 않는 것 같으므로 오류가 발생합니다. ntpq -pn다음과 같이 연결이 ipv4가 되도록 명시적으로 지정하여 이 문제를 해결할 수 있습니다 .

$ ntpq -pn 127.0.0.1
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+69.89.207.199   212.215.1.157    2 u  209  256  377   43.582    2.768   0.076
-72.5.72.15      10.3.255.0       3 u  217  256  377   68.627   -1.833   4.388
*204.11.201.12   66.220.9.122     2 u  244  256  377   61.928   -0.712   0.234
+108.59.2.24     130.133.1.10     2 u  178  256  377    1.824    3.256   0.111

훨씬 낫다. strace다음 명령을 다시 사용하여 논리를 확인할 수 있습니다 .

$ strace ntpq -pn 127.0.0.1|& grep -i conn
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET, sin_port=htons(123), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)

클라이언트가 포트 123에서 UDP를 통해 서버에 연결하려고 하면 ipv4가 사용되고 sa_family=AF_INETipv6이 사용됩니다.sa_family=AF_INET6ntpqntpd

또한 -4-6스위치를 사용하여 다음을 수행 할 수도 있습니다 ntpq -pn.

$ ntpq -pn -4
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+69.89.207.199   212.215.1.157    2 u  235  256  377   43.582    2.768   0.047
-72.5.72.15      10.3.255.0       3 u  248  256  377   68.627   -1.833   4.417
*204.11.201.12   66.220.9.122     2 u  265  256  377   61.802   -0.765   0.198
+108.59.2.24     130.133.1.10     2 u  212  256  377    1.824    3.256   0.097

인용하다

답변2

최근 CentOS7을 사용하면서 동일한 문제가 발생했습니다. ntpq -p는 "clocklist"와 같은 ntp 디버깅의 다른 많은 명령과 함께 "read: 연결 거부됨"을 표시합니다. ntp.conf에 설정한 NTP 서버는 무시됩니다. 기타 주목할만한 결과는 다음과 같습니다.

[root@server ~]# ntpstat
synchronised to NTP server (69.164.198.192) at stratum 3
   time correct to within 56 ms
   polling server every 1024 s

[root@server ~]# ntpdate
14 Oct 00:02:14 ntpdate[21443]: no servers can be used, exiting

[root@server ~]# systemctl status ntp
Unit ntp.service could not be found.

[root@server ~]# systemctl status ntpd
 ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

ntpq> version
ntpq [email protected] Thu Aug  8 11:48:03 UTC 2019 (1)

ntpq> clocklist
ntpq: read: Connection refused

ntpq> cooked
Output set to cooked

ntpq> readlist
ntpq: read: Connection refused

사용하는 NTP 서버의 IP를 확인해 보면 항상 ARIN(?)이나 Level3 같은 대형 공급자의 IP입니다. 서버를 선택할 수는 없지만 사용하는 서버는 좋아 보입니다. 하지만 내가 무엇을 하든 여전히 내 서버를 선택할 수는 없습니다 /etc/ntp.conf.

나는 내 프로그램에 뭔가 문제가 있다고 의심하기 시작했고, 거기에서 다른 프로그램을 로드해야 하기 때문에 내가 로드하고 있던 epel 저장소를 의심하기 시작했습니다.

물론, 나는 다음을 수행했고 문제가 해결되었습니다.

yum remove ntp
yum install ntp --disablerepo=epel

다시 설치되었으며 이제 ntpq -p작동하고 systemctl status ntpd표시됩니다.

[root@server ntpstats]# systemctl status ntpd
● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-14 22:14:44 CDT; 3s ago

드디어 제가 설정한 서버가 /etc/ntp.conf사용되었습니다.

CentOS7 ntp가 어떻게든 손상되었음을 epel에 알리는 방법을 모르겠습니다. 누군가가 이것을 보고 보고할 수도 있습니다.

epel과 CentOS 저장소 모두 동일한 버전을 표시합니다 ntp-4.2.6p5-29.el7.centos.x86_64.

답변3

허용되는 답변이 나에게 적합하지 않습니다. 다음은 연결 문제를 해결합니다.

/etc/ntp.conf 파일을 편집합니다:

sudo nano /etc/ntp.conf

서버를 나열하는 줄을 찾아 다음으로 변경합니다.

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst

ntp 서비스를 다시 시작하고 다시 로드합니다.

#force-reload the service
sudo systemctl force-reload ntp.service

관련 정보