netstat, pid'siz bir dinleme portu gösteriyor, ancak lsof göstermiyor


21

Bu soru Ağ bağlantı noktası açık olmasına benzer , ancak işlem eklenmedi mi?

Oradan her şeyi denedim, günlükleri inceledim, vb ... ve hiçbir şey bulamadım.

Netstat'ım bir TCP dinleme portunu ve bir ödemesiz UDP portunu gösteriyor. Bu portları aradığımda hiçbir şey çıkmıyor.

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:*                           - 

Aşağıdaki komutlar hiçbir şey göstermez:

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

Yeniden başlattıktan sonra, bu "aynı" iki bağlantı yeni bağlantı noktası numaraları dışında var:

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:*                           - 

Ve bir kez daha, lsof ve fuser komutları hiçbir şey göstermiyor.

Ne oldukları hakkında bir fikrin var mı? Onlar için endişelenmeli miyim?

Yanıtlar:


11

Sağladığınız verilerden bazı NFS bağları veya RPC kullanan bir şeyle ilgili olduğunu söyleyebilirim.

rpcinfo -pRPC ile ilgili bazı servisler tarafından kullanılabilecek portları kontrol edebilirsiniz .

İşte sistemimde nasıl göründüğü

# 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
Bu sorunu yaşıyorsanız ve nlockmgr'yi belirli bağlantı noktalarını kullanmaya zorlamak istiyorsanız, şu çözümü deneyin: fclose.com/39625/fixing-ports-used-by-nfs-server .
Ryan Walls

13

Bazı işlemler / pids sadece kök için kullanılabilir. Deneyin

sudo netstat -antlp

TIME_WAIT durumunda olmayan her açık portun pidini döndürmelidir


2
açık olan her TCP portları sadece bu komutla. UDP portları gösterilmeyecek.
Petrus

8

@ User202173 ve diğerlerinden gelen ipuçlarına dayanarak, netstat'ta listelendiğinde bile bir bağlantı noktasına sahip olan işlemi izlemek için aşağıdakileri kullanabildim -.

İşte benim başlangıç ​​durumum. sudo netstatportu PID / Program ile gösterir -. lsof -ihiçbir şey göstermez.

$ 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
$

Şimdi balığa gidelim. İlk önce ekleyerek düğüm olsun izin -ebizim için netstatçağrı.

$ 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İşlemi bu inode'a eklemek için bir sonraki kullanım .

$ 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)

Şimdi işlem kimliğini biliyoruz, böylece işleme bakabiliriz. Ve ne yazık ki geçersiz bir işlem. Ve PPID'si 1'dir, bu yüzden onun ebeveynini de öldüremeyiz (bkz . Ailesi başlangıçta olan bir süreci nasıl öldürebilirim? ). Teoride, init sonunda temizleyebilirdi, ama beklemekten ve yeniden başlatılmasından bıktım.

$ 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
Bu çözümü aylardır araştırıyorum. bu jem için teşekkür ederim
manish Prasad

Yıllardır böyle bir çözüm arıyordum. Teşekkür ederim! Buradaki dezavantajlardan biri, eğer bir NFS istemcisi veya sunucusu tıkalıysa, o zaman lsof | awk 'NR==1 || /212698803/'( lsof -Nyalnızca NFS göstermek için olsa bile ) yanıt vermeyecek kadar yavaş olabilir ve zaman aşımına uğrayabilir. Başka bir dezavantajı, bu sorunu giderirken inode'un değişebilmesidir.
Stefan Lasiewski

4

Bunların özel olarak ne olduğunu bilmiyorum, ancak çekirdek modülleri (örneğin NFS) bu soketlerle ilişkilendirilecek bir PID'ye sahip değil. Lsmod'da şüpheli bir şey arayın.


İsmod hiçbir şey döndürmez. Bu sunucu bir NFS istemcisidir. Bu şu anda 1 numaralı şüphelim.
mhost

Bu, müşteri portlarının neden çekirdeğin yeni bir örneğinden sonra değiştiğini açıklar.
andyortlieb 13:30

Bu tamamen okunaklı bir cevap olduğu için reddedilmemeliydin. Diğer cevapların (rpcbind veya lsof kullanarak) işe yaramadığı bir dava bulmama yardım etti. (Ve evet, NFS idi.) Teşekkürler!
Peter Hansen

Hmm, neden NFS istemcisine bir PID tahsis etmediğini merak ediyorum, bu yüzden bunun ne olduğunu anlayabiliyorsunuz ... Sanırım bir çalışan iş parçacığı olmasını ister mi?
SamB

3

Bu yararlı olabilir mi bilmiyorum. Aynı problemi yaşadım ve yaptığım şu: İlk önce, netstat'ı -a (tümü) ve -e (uzatılmış) seçenekleriyle çağırdım. İkinci seçenekle, kullanılan bağlantı noktasıyla ilişkili Inode'u görebiliyorum. Daha sonra, elde edilen inode numarası ile lsof | grep'i aradım ve bu inode ile ilişkili işlemin PID'sini aldım. Bu benim durumumda çalıştı.


0

Bu bağlantı noktasından gelen veya giden herhangi bir trafik var mı, tcpdump -vv -x s 1500 port 37398 -w trace.outizlemenizi dosya izlemede kaydeder ile kontrol edin. Bunun ardından daha sonra wireshark ile açabilirsiniz veya tcpdump -vv port 37398doğrudan neler olup bittiğini görebilirsiniz.

Udp soketi için ağ bağlantı noktasını kullanmaya çalışın, belki yardımcı olacak bir pankart edin.

Rkhunter'ı alın ve sisteminizi arka kapı için kontrol edin.

Güncelleme yapılmayan dosyaları varsayarak, lsof / netstat'ın md5 kodunu kurulum medyanızla karşılaştırın.


Her iki bağlantı noktasına da yerel olarak netcat yapmaya çalıştım ve hiçbir şey göstermiyor. Tcp portu için bir şey yazıp kapatabilirsem kapanır. UDP olanı sadece Ctrl + C tuşlarına basarsam kapanır. Yerinde iptables'ım var ve bu bağlantı noktalarına bağlantıya izin vermiyor, bu yüzden iptables'ları atlamazlarsa, bir şeyin kendilerine bağlandığını düşünemiyorum.
mhost

Ne tür bir sunucu DB, APP .. Hangi yazılımı kullanıyorsunuz?
Izac

Bu apache çalışan bir web sunucusudur ve hemen hemen hiçbir şey cron ve syslog gibi şeyler dışında.
mhost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.