GNU/Linux >> Znalost Linux >  >> Linux

10 základních příkladů příkazu Netstat pro Linux

Netstat

Netstat je nástroj příkazového řádku, který lze použít k vypsání všech síťových (zásuvkových) připojení v systému. Uvádí všechna připojení tcp, udp soketů a unixových soketů.

Kromě připojených zásuvek může také vypsat naslouchací zásuvky, které čekají na příchozí spojení. Takže ověřením otevřeného portu 80 můžete potvrdit, zda v systému běží webový server nebo ne.

Díky tomu je velmi užitečným nástrojem pro správce sítě a systému.

V tomto tutoriálu se podíváme na několik příkladů, jak používat netstat k nalezení informací o síťových připojeních a otevřených portech v systému.

Zde je rychlý úvod do netstatu z manuálových stránek

netstat – Tisk síťových připojení, směrovacích tabulek, statistik rozhraní, maskovaných připojení a členství ve vícesměrovém vysílání

1. Vypsat všechna připojení

První a nejjednodušší příkaz je vypsat všechna aktuální připojení. Jednoduše spusťte příkaz netstat s volbou a.

$ netstat -aAktivní připojení k internetu (servery a navázáno)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Statetcp 0 0 enlightened:doména *:* LISTENtcp 0 0 localhost:ipp *:* LISTENtcp 0 0 enlightened.local:54750 li240-5.members.li:http ESTABLISHEDtcp 0 0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHEDtcp6 0 0 ip6-localhost:ipp [::]:* LISTEN00mainened:* LISTEN:*enlightened udp 0 0 *:bootpc *:*udp 0 0 enlightened.local:ntp *:*udp 0 0 localhost:ntp *:*udp 0 0 *:ntp *:*udp 0 0 *:58570 *:*udp 0 0 *:mdns *:*udp 0 0 *:49459 *:*udp6 0 0 fe80::216:36ff:fef8:ntp [::]:*udp6 0 0 ip6-localhost:ntp [::]:*u dp6 0 0 [::]:ntp [::]:*udp6 0 0 [::]:mdns [::]:*udp6 0 0 [::]:63811 [::]:*udp6 0 0 [::]:54952 [::]:*Aktivní sokety domény UNIX (servery a zavedené) Příznaky RefCnt Typ Stav I-Uzel Pathunix 2 [ ACC ] STREAM LISTENING 12403 @/tmp/dbus-IDgfj3UGXXunix 2 [ ACC ] STREAM LISTENING /dbus-vfs-daemon/socket-6nUC6CCx

Výše uvedený příkaz zobrazuje všechna připojení z různých protokolů, jako jsou sokety tcp, udp a unix. To však není příliš užitečné. Správci často chtějí vybrat konkrétní připojení například na základě protokolů nebo čísel portů.

2. Uveďte pouze připojení TCP nebo UDP

Chcete-li vypsat pouze tcp připojení, použijte ● možnosti.

$ netstat -atAktivní připojení k internetu (servery a navázáno)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Statetcp 0 0 enlightened:doména *:* LISTENtcp 0 0 localhost:ipp *:* LISTENtcp 0 0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHEDtcp 0 0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHEDtcp 0 0 enlightened.local:37892 ABTS-SHED-North .

Podobně k vypsání pouze připojení udp použijte volbu u.

$ netstat -auAktivní připojení k internetu (servery a navázáno)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Stateudp 0 0 *:34660 *:*udp 0 0 osvícený:doména *:*udp 0 0 *:bootpc * :*udp 0 0 enlightened.local:ntp *:*udp 0 0 localhost:ntp *:*udp 0 0 *:ntp *:*udp6 0 0 fe80::216:36ff:fef8:ntp [::]:* udp6 0 0 ip6-localhost:ntp [::]:*udp6 0 0 [::]:ntp [::]:*

Výše uvedený výstup zobrazuje připojení ipv4 i ipv6.

3. Zakažte zpětné vyhledávání DNS pro rychlejší výstup

Ve výchozím nastavení se příkaz netstat pokouší zjistit název hostitele každé IP adresy v připojení pomocí zpětného vyhledávání dns. Tím se zpomalí výstup. Pokud nepotřebujete znát název hostitele a stačí pouze ip adresa, potlačte vyhledávání názvu hostitele volbou n.

$ netstat -antActive Internetová připojení (servery a zavedená)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Statetcp 0 0 127.0.1.1:53 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:631 0.0.0.0:* LISTENtcp 0 0 192.168.1.2:49058 173.255.230.5:80 ESTABLISHEDtcp 0 0 192.168.1.2:33324 173.194.36.117:617:ENc:0 SHED:SHEN:406 0 0 0 192.168.1.2:33324 

Výše uvedený příkaz zobrazuje VŠECHNA připojení TCP bez rozlišení DNS. Mám to ? Dobře.

4. Zkontrolujte naslouchající připojení – Otevřít porty

Jakýkoli síťový démon/služba udržuje otevřený port pro naslouchání příchozím připojením. I tato připojení jsou jako soketová připojení a jsou uvedena v seznamu netstat. Chcete-li zobrazit pouze naslouchající porty, použijte volbu "-l".

$ netstat -tnlAktivní připojení k internetu (pouze servery)Proto Recv-Q Send-Q Místní adresa Zahraniční adresa Statetcp 0 0 127.0.1.1:53 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:631 0.0.0.0 LISTENtcp6 0 0 ::1:631 :::* POSLECHNOUT

Nyní vidíme pouze naslouchající tcp porty/připojení. Pokud chcete vidět všechny naslouchající porty, odeberte možnost ●. Pokud chcete vidět pouze naslouchající udp porty, použijte možnost "-u" místo "-t".

Ujistěte se, že jste odstranili možnost "-a", jinak by se vypsala všechna připojení a nejen naslouchající připojení.

Pokud na svém linuxovém serveru provozujete službu jako http nebo smtp, můžete pomocí výše uvedeného příkazu zkontrolovat, zda služba naslouchá příchozím připojením nebo ne.

5. Získejte název/pid procesu a ID uživatele

Při prohlížení otevřených/naslouchacích portů a připojení je často užitečné znát název/pid procesu, který daný port nebo připojení otevřel.

Například server Apache httpd otevírá port 80. Pokud tedy chcete zkontrolovat, zda některý http server běží nebo ne, nebo který http server běží, apache nebo nginx, vyhledejte název procesu.

Podrobnosti procesu jsou dostupné pomocí možnosti 'p'.

~$ sudo netstat -nlptAktivní připojení k internetu (pouze servery)Proto Recv-Q Send-Q Místní adresa Cizí adresa Stát PID/Název programutcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1144/dnsmasqtcp 7.0 0 12 .0.1:631 0.0.0.0:* LISTEN 661/cupsdtcp6 0 0 ::1:631 :::* LISTEN 661/cupsd

Při použití možnosti p musí být netstat spuštěn s právy root, jinak nemůže detekovat pid procesů běžících s právy root a většina služeb jako http a ftp často běží s právy root.

Spolu s názvem procesu/pid je ještě užitečnější získat uživatelské jméno/uid vlastnící tento konkrétní proces. Pomocí možnosti e spolu s možností p získáte také uživatelské jméno.

$ sudo netstat -ltpeActive Internetová připojení (pouze servery)Proto Recv-Q Send-Q Místní adresa Cizí adresa Stav Uživatel Inode PID/Program nametcp 0 0 osvícený:doména *:* LISTEN root 11090 1144/dnsmasqtcp 0 0 localhost:ipp *:* LISTEN root 9755 661/cupsdtcp6 0 0 ip6-localhost:ipp [::]:* LISTEN root 9754 661/cupsd

Výše uvedený příklad uvádí naslouchací spojení typu Tcp s informacemi o procesu a rozšířenými informacemi.
Rozšířené informace obsahují uživatelské jméno a inode procesu. Toto je užitečný příkaz pro správce sítě.

Poznámka – Pokud použijete možnost n s možností e, bude uvedeno uid a nikoli uživatelské jméno.

6. Tisk statistik

Příkaz netstat může také vytisknout síťové statistiky, jako je celkový počet přijatých a odeslaných paketů podle typu protokolu a tak dále.

Pro výpis statistik všech typů paketů

$ netstat -sIp:32797 celkem přijatých paketů 0 přeposláno 0 příchozích paketů zahozeno 32795 doručených příchozích paketů 29115 odeslaných požadavků 60 odchozích paketů zahozenýchIcmp:125 přijatých ICMP zpráv 0 vstupní ICMP zpráva selhala. Histogram vstupu ICMP:cíl nedosažitelný:125 125 odeslaných zpráv ICMP 0 zpráv ICMP selhalo Histogram výstupu ICMP:cíl nedostupný:125... OUTPUT TRUNCATED ...

Chcete-li vytisknout statistiky pouze vybraných protokolů, jako je TCP nebo UDP, použijte odpovídající možnosti jako t a u spolu s možností s. Jednoduché!

7. Zobrazit informace o směrování jádra

Informace o směrování jádra lze vytisknout pomocí volby r. Je to stejný výstup, jaký je dán příkazem route. Také používáme volbu n k zakázání vyhledávání názvu hostitele.

$ netstat -rnKernel IP směrovací tabulka Cílová brána Genmask Příznaky MSS Window irtt Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0192.168.1.0 0.0.0.0 5255.0.> 

8. Tisk síťových rozhraní

Příkaz netstat může také vytisknout informace o síťových rozhraních. Volba "-i" provede tento úkol.

$ netstat -iKernel Interface tableIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500 0 31611 0 0 0 27503 0 0 3 0 BRU960 BRU160 0 0 0 2913 0 0 0 LRU

Výše uvedený výstup obsahuje informace ve velmi surovém formátu. Chcete-li získat verzi výstupu vstřícnější k lidem, použijte volbu e spolu s i.

$ netstat -ieKernel Interface tableeth0 Link encap:Ethernet HWaddr 00:16:36:f8:b2:64 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.2535.0 feferond:6806 inet:6 :fef8:b264/64 Rozsah:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metrika:1 RX pakety:31682 chyby:0 zahozené:0 přetečení:0 rámec:0 TX pakety:27573 chyby:0 zahozené:0 přetečení:0 dopravce:0 kolizí:0 txqueuelen:1000 RX bajtů:29637117 (29,6 MB) TX bajtů:4590583 (4,5 MB) Přerušení:18 Paměť:da000000-da020000lo Link encap:Local Loopback inet addr.6k adr.0150:127 ::1/128 Rozsah:Hostitel UP LOOPBACK RUNNING MTU:65536 Metrika:1 RX pakety:2921 chyby:0 zahozené:0 přetečení:0 rámec:0 TX pakety:2921 chyby:0 zahozené:0 přetečení:0 přenašeč:0 kolize :0 txqueuelen:0 RX bytes:305297 (305,2 KB) TX bytes:305297 (305,2 KB)

Výše uvedený výstup je podobný výstupu zobrazenému příkazem ifconfig.

9. Získejte výstup netstat nepřetržitě

Netstat může nepřetržitě vydávat informace o připojení pomocí volby c.

$ netstat -ct

Výše uvedený příkaz bude nepřetržitě vydávat připojení tcp.

10. Zobrazit informace o skupině vícesměrového vysílání

Možnost g zobrazí informace o skupině vícesměrového vysílání pro protokoly IPv4 a IPv6.

$ netstat -gIPv6/IPv4 Group MembershipsInterface RefCnt Group--------------- ------ ----------------- -----lo 1 all-systems.mcast.neteth0 1 224.0.0.251eth0 1 all-systems.mcast.netlo 1 ip6-allnodeslo 1 ff01::1eth0 1 ff02::fbeth0 1 ff02::1:ffeth8:b 1 ip6-allnodeseth0 1 ff01::1wlan0 1 ip6-allnodeswlan0 1 ff01::1

Další příklady příkazu netstat

Dobře, probrali jsme základní příklady příkazu netstat výše. Nyní je čas udělat nějaké geekovské věci se stylem.

Tisk aktivních připojení

Aktivní soketová připojení jsou ve stavu "ESTABLISHED". Chcete-li získat všechna aktuální aktivní připojení, použijte netstat s grep následovně

$ netstat -atnp | grep ESTA(Nelze identifikovat všechny procesy, informace o procesech, které nevlastní, se nezobrazí, museli byste být root, abyste je viděli všechny.)tcp 0 0 192.168.1.2:49156 173.255.230.5:80 ESTABLISHED 1691/chrometcp 0 0 192.168.1.2:33324 173.194.36.117:443 ZALOŽENO 1691/chrome

Chcete-li sledovat nepřetržitý seznam aktivních připojení, použijte příkaz watch spolu s příkazy netstat a grep

$ watch -d -n0 "netstat -atnp | grep ESTA"

Zkontrolujte, zda je služba spuštěna

Pokud chcete zkontrolovat, zda server jako http, smtp nebo ntp běží nebo ne, použijte znovu grep.

$ sudo netstat -aple | grep ntpudp 0 0 enlightened.local:ntp *:* root 17430 1789/ntpdudp 0 0 localhost:ntp *:* root 17429 1789/ntpdudp 0 0 *:ntp *:* root 17422 17289/ntp:dudp 80:ntp 36ff:fef8:ntp [::]:* kořenový adresář 17432 1789/ntpdudp6 0 0 ip6-localhost:ntp [::]:* kořenový adresář 17431 1789/ntpdudp6 0 0 [::]:ntp [::]:23 kořenový adresář 174 1789/ntpdunix 2 [ ] DGRAM 17418 1789/ntpd

Takže jsme zjistili, že ntp server běží. Grep pro http nebo smtp nebo cokoli, co hledáte.

Závěr

No, to byla většina toho, k čemu se netstat používá. Pokud hledáte pokročilejší informace nebo se chcete ponořit hlouběji, přečtěte si příručku netstat (man netstat).

A zanechte svůj názor a návrhy v poli komentářů níže.

Zdroje

Podívejte se na linuxovou manuálovou stránku pro netstat, kde se dozvíte více.

https://linux.die.net/man/8/netstat
https://man7.org/linux/man-pages/man8/netstat.8.html


Linux
  1. Základní příklady příkazů „ls“ v Linuxu

  2. Základní příklady příkazů „chmod“ v Linuxu

  3. Příklady příkazů rm v Linuxu

  1. Příklady příkazů ps v Linuxu

  2. Příklady příkazů netstat v Linuxu

  3. w Příklady příkazů v Linuxu

  1. Linuxový příkaz netstat

  2. UNIX / Linux:10 příkladů příkazů Netstat

  3. 7 Příklady příkazů Linux df