특정 포트에 대한 액세스가 불안정한 이유는 무엇입니까?

특정 포트에 대한 액세스가 불안정한 이유는 무엇입니까?

netdata 도구(운영 체제 성능 도구)를 설치합니다.

netdata 설치가 실패한 것으로 확인되었습니다.

curl -sSL --connect-timeout 10 --retry 3 http://localhost:19999/netdata.conf

그리고:

포트 19999가 차단되는 경우도 있고 액세스할 수 있는 경우도 있음을 확인했습니다.

example when we have access

 telnet localhost 19999
Trying ::1...
Connected to localhost.
Escape character is '^]'.
CConnection closed by foreign host.

가끔 포트가 막히는 경우가 있어요

Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

이 매우 이상한 행동의 이유는 무엇일까요?

참고 - iptables와 마찬가지로 방화벽이 비활성화되고 중지됩니다.

답변1

첫 번째 경우

$ telnet localhost 19999
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

특정 포트를 수신 대기하는 프로세스가 있습니다. 해당 포트에 연결하면 결국 원격 측에서 연결을 종료합니다.

두 번째 경우(여기서는 명시적으로 지정하지 않았으므로 동일한 포트를 지정했다고 가정합니다):

$ telnet localhost 19999
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

여기서는 Connection refused지정된 호스트/포트를 수신하는 프로세스가 없음을 의미합니다. 호스트 이름을 사용했고 localhost해당 호스트 이름이 IPv4 및 IPv6 주소 모두에 매핑되므로 telnet두 주소 모두에 연결해 보세요. 마지막으로, 지정된 포트에서 (IPv4 또는 IPv6를 통해) 호스트를 수신하는 프로세스가 없습니다.

ss다음을 사용하여 어떤 프로세스가 어떤 포트에서 수신 대기하는지 나열 할 수 있습니다 .

# ss -nlpt
State    Recv-Q    Send-Q    Local Address:Port         Peer Address:Port
LISTEN   0         0           <address>:<port>                 0.0.0.0:*    users:(("<process-name>",pid=<process-id>,fd=<file-descriptor>))

옵션:

  • -n주소를 호스트 이름으로 변환하지 마세요
  • -l청취 소켓만 나열됩니다.
  • -tTCP 소켓만 나열
  • -p연관된 프로세스 정보를 나열합니다. 이를 위해서는 루트 액세스가 필요합니다.

이렇게 하면 프로세스가 예상한 포트에서 수신 대기하고 있는지 확인할 수 있습니다.

관련 정보