GNU/Linux >> Znalost Linux >  >> Linux

Otevřený síťový port, ale není připojen žádný proces?

Řešení 1:

Spustili jste netstat a lsof jako root nebo pomocí sudo? Všimněte si posledního sloupce:

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

Z manuálové stránky netstat:

K zobrazení těchto informací na soketech, které nevlastníte, budete také potřebovat oprávnění superuživatele.

Jak víte, že neběží ani jeden? Pokud je port používán, dává smysl, že by se okamžitě ukončil s chybou 'socket in use'. co se stane, když k portu připojíte telnet?

telnet localhost 5666

Řešení 2:

Porty otevřené jádrem se nezobrazí s názvem programu. Napadají mě některé věci NFS a OCFS. Možná je to něco takového?

Nebo to může být chyba jádra. Zkontrolujte protokoly jádra pro OOPS a BUG.

Řešení 3:

spusťte 'netstat --tcp --udp --listening --program' jako uživatel root . jinak vám to neposkytne PID/Název programu

pak použijte příkaz kill -9 PID

Řešení 4:

Vlastně jsem napsal malý skript shellu, abych pomohl identifikovat tyto příležitostné otázky:

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

uložit jako /usr/local/bin/tracer; výstup:

[email protected]:/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

K jeho používání budete potřebovat práva root

Řešení 5:

Byl jsem schopen vysledovat proces získáním jeho inodu přes netstat a poté pomocí tohoto inodu s lsof. Viz moje podrobnější odpověď na https://serverfault.com/a/847910/94376.


Linux
  1. 14 běžných síťových portů, které byste měli znát

  2. Telnet k portu pro testování síťové konektivity

  3. Linux – Blokovat síťový přístup procesu?

  1. CentOS / RHEL :Jak zjistit, zda je síťový port otevřený nebo ne?

  2. Efektivně otestovat, zda je port otevřený v Linuxu?

  3. Počítání otevřených souborů na proces

  1. Jak zavřít nebo (odpojit?) port ponechaný otevřený nepoctivou aplikací?

  2. otevřený port 8080 pro poslech

  3. Zkontrolujte, zda je port otevřený nebo uzavřený na serveru Linux?