netstat는 pid가없는 수신 포트를 표시하지만 lsof는 표시하지 않습니다


21

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

거기에서 모든 것을 시도하고 로그 등을 검토했지만 아무것도 찾을 수 없습니다.

내 netstat는 TCP 수신 포트와 pid가없는 UDP 포트를 보여줍니다. 해당 포트를 lsof를 검색하면 아무것도 나타나지 않습니다.

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:44231           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:55234           0.0.0.0:*                           - 

다음 명령은 아무것도 표시하지 않습니다.

lsof | grep 44231
lsof | greo 55234
fuser -n tcp 44231
fuser -n udp 55234

재부팅 후 새 포트 번호를 제외하고는 "동일한"두 개의 연결이 있습니다.

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:45082           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:37398           0.0.0.0:*                           - 

그리고 다시 한 번 lsof 및 fuser 명령은 아무 것도 표시하지 않습니다.

그들이 어떤 아이디어입니까? 그들에 대해 걱정해야합니까?

답변:


11

제공 한 데이터에서 NFS 마운트 또는 RPC를 사용하는 것과 관련이 있다고 말하고 싶습니다.

당신은 확인 할 수 rpcinfo -pRPC 관련 서비스의 일부에 의해 사용될 수있는 포트.

내 시스템에서 어떻게 보이는지

# netstat -nlp | awk '{if ($NF == "-")print $0}'
tcp        0      0 0.0.0.0:55349           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:18049           0.0.0.0:*                           - 

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  10249  status
    100024    1   tcp  10249  status
    100021    1   udp  18049  nlockmgr
    100021    3   udp  18049  nlockmgr
    100021    4   udp  18049  nlockmgr
    100021    1   tcp  55349  nlockmgr
    100021    3   tcp  55349  nlockmgr
    100021    4   tcp  55349  nlockmgr

1
이 문제가 발생하여 nlockmgr이 특정 포트를 사용하도록하려면 fclose.com/39625/fixing-ports-used-by-nfs-server 솔루션을 시도하십시오 .
Ryan Walls

13

일부 프로세스 / pid는 루트에서만 사용할 수 있습니다. 시험

sudo netstat -antlp

TIME_WAIT 상태가 아닌 모든 열린 포트의 pid를 반환해야합니다.


2
이 명령으로 만 열려있는 모든 TCP 포트 UDP 포트는 표시되지 않습니다.
petrus

8

@ user202173 및 기타의 힌트를 기반으로 -netstat에 나열된 경우에도 포트를 소유하는 프로세스를 추적하기 위해 다음을 사용할 수있었습니다 .

여기 내 출발 상황이 있었다. sudo netstatPID / Program of의 포트를 보여줍니다 -. lsof -i아무것도 보여주지 않습니다.

$ sudo netstat -ltpna | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  -
$ sudo lsof -i :8785
$

이제 낚시하러 가자 먼저 호출 에 추가하여 inode를 가져 오 -e겠습니다 netstat.

$ sudo netstat -ltpnae | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      199179     212698803   -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  0          0           -

다음으로 lsof프로세스를 해당 inode에 연결하십시오.

$ sudo lsof | awk 'NR==1 || /212698803/'
COMMAND      PID    TID                USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
envelope_ 145661 145766               drees   15u     IPv6          212698803        0t0        TCP *:8785 (LISTEN)

이제 프로세스 ID를 알고 있으므로 프로세스를 볼 수 있습니다. 불행히도 그것은 소멸 된 과정입니다. 그리고 PPID가 1이므로 부모도 죽일 수 없습니다 ( 부모가 init 인 프로세스를 어떻게 죽일 수 있습니까? 참조 ). 이론적으로 init는 결국 정리할 수 있지만 기다렸다가 재부팅하는 데 지쳤습니다.

$ ps -lf -p 145661
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z drees    145661      1  2  80   0 -     0 exit   May01 ?        00:40:10 [envelope] <defunct>

1
몇 달 동안이 솔루션을 찾고 있습니다. 이 보석에 감사합니다
Manish Prasad

나는 수년 동안 이와 같은 해결책을 찾고 있습니다. 고맙습니다! 여기서 단점 중 하나는 NFS 클라이언트 또는 서버가 다운 된 경우 lsof | awk 'NR==1 || /212698803/'( lsof -NNFS 만 표시 하더라도 ) 응답 속도가 매우 느리고 시간이 초과 될 수 있다는 것입니다. 또 다른 단점은이 문제를 해결하는 동안 inode가 변경 될 수 있다는 것입니다.
Stefan Lasiewski

4

나는 이것이 무엇인지 구체적으로 알지 못하지만 커널 모듈 (예 : NFS)에는 이러한 소켓과 관련된 PID가 없습니다. lsmod에서 의심스러운 것을 찾으십시오.


lsmod는 아무것도 반환하지 않습니다. 이 서버는 NFS 클라이언트입니다. 현재 제 1의 용의자입니다.
mhost

새 커널 인스턴스 이후에 클라이언트 포트가 변경된 이유를 설명합니다.
andyortlieb

이것은 완전히 합법적 인 답변이므로 다운 봇이되어서는 안됩니다. rpcbind 또는 lsof를 사용하여 다른 답변이 도움이되지 않은 사례를 찾는 데 도움이되었습니다. (그렇습니다. NFS였습니다.) 감사합니다!
피터 한센

흠, 왜 그것이 NFS 클라이언트에 PID를 할당하지 않는지 궁금합니다. 따라서 그 결과를 볼 수 있습니다 ... 워커 스레드 또는 무언가가 필요하다고 생각합니까?
SamB

3

이것이 유용 할 수 있는지 모르겠습니다. 나는 같은 문제가 있었고 내가 한 일은 다음과 같습니다. 첫째, -a (all) 및 -e (extended) 옵션을 사용하여 netstat를 호출했습니다. 후자의 옵션을 사용하면 사용 된 포트와 관련된 Inode를 볼 수 있습니다. 그런 다음, 얻은 inode 번호로 lsof | grep을 호출하고 해당 inode와 연관된 프로세스의 PID를 얻었습니다. 그것은 제 경우에 효과가있었습니다.


0

이 포트에서 들어 오거나 나가는 트래픽이 있습니까? tcpdump -vv -x s 1500 port 37398 -w trace.out파일 추적에 캡처 저장을 사용하여 확인한 다음 wireshark로 열거 나 tcpdump -vv port 37398직접 진행되는 작업을 볼 수 있습니다.

해당 포트에 telnet을 시도하면 udp 소켓에 netcat을 사용하여 도움이되는 배너를 얻을 수 있습니다.

rkhunter를 받고 시스템에 백도어가 있는지 확인하십시오.

업데이트되지 않은 파일을 가정하고 lsof / netstat의 md5 해시를 설치 미디어의 md5 해시와 비교하십시오.


두 포트에 로컬로 netcat하려고했지만 아무것도 표시하지 않습니다. tcp 포트의 경우 아무것도 입력 한 다음 입력하면 닫힙니다. Ctrl + C를 누르면 UDP가 닫힙니다. iptables가 제자리에 있고 해당 포트에 대한 연결을 허용하지 않으므로 iptables를 우회하지 않는 한 무언가가 포트에 연결되어 있다고 상상할 수 없습니다.
mhost

그것은 어떤 종류의 서버입니까 DB, APP .. 어떤 소프트웨어를 사용하고 있습니까?
Izac

아파치를 실행하는 웹 서버이며 cron 및 syslog와 같은 것 외에는 아무것도 없습니다.
mhost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.