suggerimenti e trucchi netstat


13

Analogamente alle domande "Riga di comando utile" (per Windows , Linux e Mac ), penso che sarebbe utile disporre di "modi utili per utilizzare le utilità x". Le pagine man ti dicono quali parametri fanno, ma non necessariamente perché li utilizzeresti, cosa significhi il risultato, quali cose utili fa il comando che non avresti mai saputo senza una sperimentazione approfondita o come ottenere la risposta che desideri davvero.

Mi piacerebbe sapere di netstat . Sembrerebbe che dovrei essere in grado di capire quali processi utilizzano la larghezza di banda e, in effetti, quanto velocemente il sistema utilizza la larghezza di banda. Sembra anche utile per rilevare connessioni indesiderate (probabilmente virii) e fornisce tutti i tipi di informazioni di routing (con cui ho dovuto giocare solo quando ho cercato di far utilizzare un Sharp Zaurus PDA a TCP / IP su USB). In altre parole, suona come una miniera d'oro, e speravo che alcuni di voi condividessero pepite di informazioni che avete trovato.

Includi la versione di netstat e il tuo sistema operativo nella tua risposta. Sarebbe bello vedere alcuni output di esempio e sapere cosa significa. Ho contrassegnato questa domanda come wiki della comunità e spero che farai lo stesso nelle tue risposte, in modo che altre persone, conoscendo un sistema operativo diverso, possano emettere un comando quasi equivalente se sanno, nella stessa risposta, e allora possiamo votare quali risposte sono le più utili.

Risposte:


4

Mostra le porte TCP / UDP in ascolto locale e il processo a cui appartengono:

sudo netstat -tulpn

4
Il Mac quasi equivalente sembra essere "sudo lsof -i -n -P | grep LISTEN". (Ommettere i flag -n e -P farà apparire i nomi di host e porta).
Clinton Blackmore,

1
Clinton - questo è un comando fantastico.
SpacemanSpiff

3

Tabelle di routing Netstat

[Questo è stato testato su Mac OS X 10.5.7. Sospetto che il risultato sia quasi lo stesso su tutte le piattaforme, poiché è stato indicato che funziona su Solaris.]

netstat -r 

ti darà una tabella di routing.

netstat -nr

è lo stesso, ma ti darà IP grezzi invece di cercare i nomi delle macchine. Il suo output è simile al seguente (solo più a lungo):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

colonne:

Destinazione e gateway: la destinazione è un indirizzo (o intervallo di indirizzi) a cui potremmo voler inviare informazioni. Tutti i dati inviati a quella destinazione andranno al gateway associato. Il gateway sa dove inviare i dati per il prossimo "hop" nel viaggio. Se desideriamo inviare dati a una destinazione che non ha alcuna voce nella tabella di routing, passerà attraverso il gateway predefinito.

Bandiere: la pagina man / info elenca tutte le bandiere. Ecco cosa significano le impostazioni sul mio gateway predefinito:

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

È curioso che affermi di essere aggiunto manualmente, poiché è arrivato su DHCP.

Refs: "Il campo refcnt fornisce il numero corrente di usi attivi della route. I protocolli orientati alla connessione normalmente tengono su una singola route per la durata di una connessione mentre i protocolli senza connessione ottengono una route durante l'invio alla stessa destinazione." (Pagina man)

Usa: "Il campo d'uso fornisce un conteggio del numero di pacchetti inviati usando quel percorso."

Netif: "La voce dell'interfaccia indica l'interfaccia di rete utilizzata per il percorso."

Sul mio Mac,

  • lo0 è l'interfaccia di loopback.
  • en0 è ethernet.
  • en1 è wireless.
  • en2 ed en3 sono utilizzati da una macchina virtuale.

Scadenza: da una pagina man per una versione diversa di netstat: "Visualizza il tempo (in minuti) rimanente prima della scadenza del percorso".



2

In windows:

c:>netstat -a | find /c "TCP"
68

Mostra il numero di connessioni TCP / IP. Utile se si stanno risolvendo i problemi dei sistemi di rete elevata che stanno esaurendo le porte TCP e devono aumentare MaxUserPorts .


OS X 10.5.7 equiv: netstat -a | grep -c tcp
Clinton Blackmore,

2

Velocità di trasmissione / ricezione

Su Mac [OS X 10.5.7]:

netstat -i -w 10

[Vedi la risposta di Chuck per le note sull'uso su Solaris e Linux.]

L'output è simile al seguente:

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

Questo mostra quanti pacchetti e byte sono stati trasferiti in un determinato intervallo di tempo. (10 secondi in questo esempio). Ero collegato a YouTube e stavo scaricando oltre 1 MB ogni intervallo, fino a quando non ho chiuso la scheda del browser e la tariffa è arrivata al minimo.

Ciò potrebbe rivelarsi utile se stai aspettando che un caricamento o un download finisca. Monitora la frequenza e quando diminuisce drasticamente, sai che è stata eseguita.

Si noti che il comando sopra mostra tutta la velocità effettiva su tutte le interfacce. Per portarlo su una particolare interfaccia (WiFi in questo esempio), usa il -Iflag, così:

netstat -I en1 -w 10

1

Finestre:

Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Mostra le connessioni TCP attive, ma nessuna attività UDP.

Netstat -an
  (Show all connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

Mostra tutte le connessioni TCP attive, nonché le connessioni TCP e UDP in ascolto. Qui non mostra l'attività UDP in uscita.


Per ora aggiungerò un commento, ma quando avrò abbastanza rappresentante, modificherò la risposta. netstat su Mac OS X 10.5.7 equivalente - aggiungi -p tcp in modo che sia limitato al protocoal tcp. vale a dire. netstat -p tcp -noppurenetstat -p tcp -an
Clinton Blackmore,

Un'altra utile coppia di switch su Windows sono -o (mostra il PID proprietario di ciascun socket) e -b (mostra il nome del processo proprietario di ciascun socket). Particolarmente utile quando si studiano macchine che si sospetta siano state compromesse.
Murali Suriar,

netstat -nt fa la stessa cosa (solo numerico e tcp)
Jauder Ho,

1

finestre

netstat -b

Visualizza il processo utilizzando la connessione


1

Windows 7 (probabilmente da prima, però):

netstat -ano

elenca le sessioni attive con i PID associati

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       776
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       1724

o per salvare un passaggio

netstat -anb

(da un prompt CMD elevato) fornisce il nome del processo

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  RpcSs
 [svchost.exe]
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 Can not obtain ownership information
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING
 [wmpnetwk.exe]
  TCP    0.0.0.0:2048           0.0.0.0:0              LISTENING

1

Sono sicuro che sto reinventando la ruota, ma qui è un semplice script Perl per eseguire netstat e ordinare l'output in modo che gli IP attualmente per lo più connessi siano in cima. Questo è usato al meglio con il programma "watch" per gli aggiornamenti a intervalli di 2 secondi.

Aggiornamento: riscrittura significativa dell'11 / 2013/2013 per eliminare molti problemi e visualizzare i nomi host

Uscita campione:

Distant inbound connections: 2
   85.93.216.17:772               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
   80.90.47.155:443               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
Distant outbound connections: 3
   80.90.63.61                    --> 80.90.63.48:25      :    2        smtp.m-plify.net                      2 x TIME_WAIT
   85.93.216.17                   --> 85.93.216.18:772    :    1        maya.m-plify.net                      1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
   127.0.0.1                      --> 127.0.0.1:9355      :   20                                              1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:4713      :   10                                             10 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:9353      :    9                                              4 x TIME_WAIT, 5 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:3306      :    8                                              6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:5445      :    5                                              1 x ESTABLISHED, 4 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:9354      :    2                                              2 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:7998      :    1                                              1 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:3351      :    1                                              1 x ESTABLISHED
   127.0.0.1                      --> 127.0.0.1:32000     :    1                                              1 x ESTABLISHED


0

Dal libro degli script Wicked Cool Shell:

Script # 90.1 : ogni 'n' minuti, prendi i valori di netstats (tramite crontab)

Script # 90.2 : analizzare il registro delle prestazioni di netstat in esecuzione, identificando risultati e tendenze importanti.

(Adoro questo libro - vale la pena comprare!)


0

Su Solaris, molte persone sono abituate a fare "netstat -i 1" per ottenere un conteggio dei pacchetti in esecuzione. Il netstat di Linux ha una versione inutile di questa funzione, in quanto mostra il conteggio grezzo e non un delta. Per ottenere risultati simili, fai "sar -n DEV 1 0". Si consideri effettivamente "LANG = C sar -n DEV 1 0 | grep interfacename" (sar inserisce l'ora con AM e PM all'inizio della riga in determinate localizzazioni, quindi è meglio prendere l'abitudine di correre sempre "LANG = C sar "nel caso in cui lo analizzerai mai).


Per l'output di esempio e l'utilizzo del Mac, consultare serverfault.com/questions/11289/netstat-tips-and-tricks/… .
Clinton Blackmore,

0

Su Solaris,

netstat -k

Mostra un riepilogo di varie statistiche. Utile per verificare errori, ecc.


0

Poiché nessuno lo ha ancora menzionato:

netstat -s 

fornisce un sacco di statistiche utili per protocollo sotto Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.