네트워크 포트가 열려 있지만 프로세스가 연결되어 있지 않습니까?


22

열린 네트워크 포트에서 이상한 상황이 발생합니다. 내 주요 질문은 열린 TCP 포트와 관련된 프로그램이없는 이유입니다.

netstat -ln --program
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      -  

필자의 경우 5666 포트에서 수신 대기하는 nrpe 데몬 (opsview 설치)이 있어야하지만 nrpe 데몬은 실행되고 있지 않습니다. 시작하려고하면 즉시 종료됩니다.

lsof -i :5666출력도 표시하지 않습니다. 내 시스템에서 (x) inetd가 실행되고 있지 않습니다.

최신 정보

예, 해당 명령을 루트로 실행했습니다. 텔넷은 가능했지만 응답이 없었습니다.

추가 조사 후 커널 오류가 발견되었습니다 dmesg. 이것은 이전 커널을 실행하는 EC2 인스턴스 (실제로는 그중 몇 개)였습니다 (2.6.16은 불안정합니다). 충돌을 막기위한 해결책은 커널업그레이드하는 것이 었습니다 .

커널 충돌로 인해 프로세스가 중단되고 포트가 열린 상태 인 것처럼 보입니다.


2
lsof -i tcp : 5666의 결과는 무엇입니까? 재부팅 할 때 포트가 그대로 있습니까?
Dave Drager

NRPE의 새로운 설치입니까?
fpmurphy

프로그램 세부 정보를 보려면 netstat를 루트로 실행해야합니다
eckes

자신의 질문에 대한 답변을 자유롭게 추가하십시오 ...
rogerdpack

답변:


6

커널에 의해 열린 포트는 프로그램 이름과 함께 나타나지 않습니다. 일부 NFS 및 OCFS 항목이 떠 오릅니다. 어쩌면 그런 식일까요?

아니면 커널 버그 일 수 있습니다. 커널 로그에서 OOPS 및 BUG를 확인하십시오.


24

netstat 및 lsof를 루트 또는 sudo로 실행 했습니까? 마지막 열에 주목하십시오 :

netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

sudo netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3125/sshd

netstat 맨 페이지에서 :

소유하지 않은 소켓에서이 정보를 보려면 수퍼 유저 권한이 필요합니다.

달리고 있지 않다는 것을 어떻게 알 수 있습니까? 포트가 사용 중이면 '사용중인 소켓'오류와 함께 즉시 종료됩니다. 포트에 텔넷 연결하면 어떻게됩니까?

telnet localhost 5666

4

'netstat --tcp --udp --listening --program'을 루트 사용자로 실행하십시오 . 그렇지 않으면 PID / 프로그램 이름을 제공하지 않습니다

그런 다음 kill -9 PID 명령을 사용하십시오.


3

나는 실제로 다음과 같은 질문에 답할 수 있도록 작은 쉘 스크립트를 작성했습니다.

#! /bin/bash
([ "$1" = "" ] || [ "$2" = "" ]) && echo "Usage: tracer <space> <port>" && exit 0
for i in `fuser -n $1 $2`
 do
  ps aux | grep $i | grep -v 'grep'
 done

/ usr / local / bin / tracer로 저장하십시오. 산출:

root@mo-log:/usr/flows# tracer tcp 80
80/tcp:             
root     27904  0.0  0.0 111668  3292 ?        Ss   Aug04   0:03 /usr/sbin/apache2 -k start
www-data 32324  0.0  0.0 335332  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start
www-data 32327  0.0  0.0 335324  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start

사용하려면 루트 권한이 필요합니다


좋지만 netstat의 각 연결마다 실행해야합니다. 그런 다음 단일 프로그램이 수행하는 작업을 식별 할 수 있습니다. lsof / fstat 또는 다른 멋진 유틸리티가없는 상자이며 루트로 다른 문제로 인해 설치할 수 없습니다.
Aki


2

때때로 nfs 관련 프로그램이 프로그램 목록에 표시되지 않을 수 있습니다.

또한 LDAP pam 모듈 및 libnss_ldap는 ldap 서버에 대한 연결을 열지 만 연결을 연 상태로 유지하는 실제 프로세스는 없으므로 netstat -tnp는 프로세스없이 활성 연결을 표시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.