Port sieci jest otwarty, ale nie podłączono żadnego procesu?

22

Mam dziwną sytuację z otwartym portem sieciowym. Moje główne pytanie brzmi: dlaczego nie byłoby programu powiązanego z otwartym portem 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      -  

W moim konkretnym przypadku powinien istnieć demon nrpe (instalacja opsview) nasłuchujący na porcie 5666, ale nie działa żaden demon nrpe. Jeśli spróbuję go uruchomić, natychmiast się kończy.

lsof -i :5666nie pokazuje również żadnego wyniku. W moim systemie nie ma uruchomionego (x) inetd.

AKTUALIZACJA

Tak, uruchamiałem te polecenia jako root. Telnet mógłby, ale nigdy nie było żadnej odpowiedzi.

Po dalszych badaniach znalazłem błąd jądra w dmesg: była to instancja EC2 (właściwie kilka z nich) z uruchomionym starszym jądrem (2.6.16 jest najwyraźniej niestabilny). Naprawą zatrzymania awarii była aktualizacja jądra .

Wygląda na to, że awaria jądra spowodowała zakończenie procesu i pozostawienie portu otwartego.

Gary Richardson
źródło
2
Jaki jest wynik: lsof -i tcp: 5666? Czy port pozostaje tam po ponownym uruchomieniu?
Dave Drager
Czy to nowa instalacja NRPE?
fpmurphy
Musisz uruchomić netstat jako root, aby zobaczyć szczegóły programu
eckes
Dodaj odpowiedź na swoje własne pytania ...
rogerdpack

Odpowiedzi:

6

Porty otwarte przez jądro nie będą wyświetlane z nazwą programu. Przychodzą mi na myśl niektóre elementy NFS i OCFS. Może to coś takiego?

Lub może to być błąd jądra. Sprawdź dzienniki jądra pod kątem OOPS i BŁĘDÓW.

Tomasz
źródło
24

Czy korzystasz z netstat i lsof jako root lub z sudo? Zwróć uwagę na ostatnią kolumnę:

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

Ze strony man netstat:

Będziesz także potrzebować uprawnień administratora, aby zobaczyć te informacje na gniazdach, których nie posiadasz.

Skąd wiesz, że nie ma jednego uruchomionego? Jeśli port jest w użyciu, ma sens natychmiastowe wyjście z błędu „gniazdo w użyciu”. co się stanie, gdy telnet do portu?

telnet localhost 5666
Kyle Brandt
źródło
4

wykonaj polecenie „netstat --tcp --udp - listening --program” jako użytkownik root . w przeciwnym razie nie poda PID / nazwy programu

następnie użyj komendy kill -9 PID

użytkownik tomcat
źródło
3

Właściwie napisałem mały skrypt powłoki, aby pomóc zidentyfikować te sporadyczne pytania:

#! /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

zapisz jako / usr / local / bin / tracer; wydajność:

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

Do korzystania z niego potrzebne będą uprawnienia roota

Greeblesnort
źródło
Dobrze, ale potrzebuję więcej, muszę wykonać to dla każdego połączenia w netstat. Następnie mogę zidentyfikować, co robi pojedynczy program. Jest to pudełko bez lsof / fstat lub innych dobrych narzędzi, a jako root nie mogę ich zainstalować z powodu innych problemów.
Aki
3

Byłem w stanie wyśledzić ten proces, pobierając jego i-węzeł za pośrednictwem netstat, a następnie używając tego i-węzła z lsof. Zobacz moją bardziej szczegółową odpowiedź w /server//a/847910/94376 .

studgeek
źródło
2

Czasami programy powiązane z nfs nie są widoczne na liście programów.

Ponadto moduły pam LDAP i libnss_ldap otwierają połączenia z serwerami ldap, ale nie ma faktycznego procesu utrzymującego otwarte połączenie, więc netstat -tnp pokazuje aktywne połączenie bez procesu.

Hayalci
źródło