dicas e truques do netstat

13

Na mesma linha das perguntas "Linha de comando útil" (para Windows , Linux e Mac ), acho que seria útil ter "maneiras úteis de usar as perguntas do utilitário x". As páginas de manual informam o que parâmetros fazem, mas não necessariamente por que você os usaria, o que significa o resultado, que coisas úteis o comando faz que você nunca saberia sem uma experimentação extensiva ou como obter a resposta que realmente deseja.

Eu gostaria de saber sobre o netstat . Parece que eu deveria ser capaz de descobrir quais processos estão usando largura de banda e, de fato, com que rapidez o sistema está usando largura de banda. Também parece útil para detectar conexões indesejadas (provavelmente virii) e fornece todos os tipos de informações de roteamento (com as quais eu só tinha que brincar ao tentar fazer com que um PDA do Sharp Zaurus usasse TCP / IP sobre USB.) Em outras palavras, ele soa como uma mina de ouro, e eu esperava que alguns de vocês compartilhassem pepitas de informações encontradas.

Inclua a versão do netstat e do seu sistema operacional na sua resposta. Seria bom ver alguns exemplos de saída e saber o que isso significa. Marquei esta pergunta como wiki da comunidade e espero que você faça o mesmo em suas respostas, para que outras pessoas, conhecendo um sistema operacional diferente, possam colocar um comando quase equivalente se souberem, na mesma resposta, e então podemos votar em quais respostas são as mais úteis.

Clinton Blackmore
fonte

Respostas:

4

Mostrar portas TCP / UDP de escuta local e o processo ao qual elas pertencem:

sudo netstat -tulpn
cmcginty
fonte
4
O Mac quase equivalente parece ser "sudo lsof -i -n -P | grep LISTEN". (Omitir os sinalizadores -n e -P fará com que ele procure nomes de host e porta).
Clinton Blackmore
1
Clinton - esse é um comando fantástico.
SpaceManSpiff
3

Tabelas de roteamento Netstat

[Isso foi testado no Mac OS X 10.5.7. Suspeito que o resultado seja quase o mesmo em todas as plataformas, pois foi indicado para trabalhar no Solaris.]

netstat -r 

lhe dará uma tabela de roteamento.

netstat -nr

é o mesmo, mas fornecerá IPs brutos em vez de procurar nomes de máquinas. Sua saída é assim (apenas mais):

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

Colunas:

Destino e gateway: o destino é um endereço (ou intervalo de endereços) para o qual podemos enviar informações. Todos os dados enviados para esse destino irão para o gateway associado. O gateway sabe para onde enviar os dados para o próximo 'salto' na jornada. Se desejarmos enviar dados para um destino que não tem entrada na tabela de roteamento, eles passarão pelo gateway padrão.

Sinalizadores: A página de manual / informações lista todos os sinalizadores. Aqui estão as definições do meu gateway padrão:

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 que ele alega ser adicionado manualmente, pois veio do DHCP.

Refs: "O campo refcnt fornece o número atual de usos ativos da rota. Os protocolos orientados à conexão normalmente mantêm uma única rota pela duração de uma conexão, enquanto os protocolos sem conexão obtêm uma rota enquanto enviam para o mesmo destino." (Página de manual)

Use: "O campo use fornece uma contagem do número de pacotes enviados usando essa rota."

Netif: "A entrada da interface indica a interface de rede utilizada para a rota."

No meu Mac,

  • lo0 é a interface de loopback.
  • en0 é ethernet.
  • en1 é sem fio.
  • en2 e en3 são usados ​​por uma máquina virtual.

Expiração: Em uma página de manual para uma versão diferente do netstat: "Exibe o tempo (em minutos) restante antes que a rota expire."

Clinton Blackmore
fonte
2

No Windows:

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

Mostra o número de conexões TCP / IP. Útil se você estiver solucionando problemas de sistemas de alta rede que estão ficando sem portas TCP e precisa aumentar MaxUserPorts .

Christopher_G_Lewis
fonte
OS X 10.5.7 equivalente: netstat -a | grep -c tcp
Clinton Blackmore
2

Taxa de Transmissão / Recepção

No Mac [OS X 10.5.7]:

netstat -i -w 10

[Veja a resposta de chuck para notas sobre o uso no Solaris e Linux.]

A saída é assim:

            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

Isso mostra quantos pacotes e bytes foram transferidos em um determinado intervalo de tempo. (10 segundos neste exemplo). Eu estava conectado ao youtube e estava baixando mais de 1 MB a cada intervalo, até fechar a guia do navegador e a taxa chegar ao fundo do poço.

Isso pode ser útil se você estiver aguardando o término de um upload ou download. Monitore a taxa e, quando cair drasticamente, você sabe que está feito.

Observe que o comando acima mostra todo o rendimento em todas as interfaces. Para definir o escopo para uma interface específica (WiFi neste exemplo), use o -Isinalizador da seguinte maneira:

netstat -I en1 -w 10
Clinton Blackmore
fonte
1

Janelas:

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 conexões TCP ativas, mas nenhuma atividade 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 todas as conexões TCP ativas, além de ouvir conexões TCP e UDP. Não mostra a atividade UDP de saída aqui.

Mike
fonte
Vou adicionar um comentário por enquanto, mas quando tiver representante suficiente, editarei a resposta. netstat no equivalente do Mac OS X 10.5.7 - adicione -p tcp para que ele fique limitado ao protocolo tcp. ie netstat -p tcp -n, ounetstat -p tcp -an
Clinton Blackmore
Outro par útil de opções no Windows são -o (mostra o PID proprietário de cada soquete) e -b (mostra o nome do processo proprietário de cada soquete). Particularmente útil ao investigar máquinas que você suspeita terem sido comprometidas.
Murali Suriar
nt netstat faz a mesma coisa (numérica e tcp apenas)
Jauder Ho
1

janelas

netstat -b

Exiba o processo usando a conexão

user640
fonte
1

Windows 7 (possivelmente desde antes):

netstat -ano

lista sessões ativas com PIDs associados

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

ou para salvar uma etapa

netstat -anb

(de um prompt CMD elevado) fornece o nome do 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
TristanK
fonte
1

Tenho certeza de que estou reinventando a roda, mas aqui está um script Perl simples para executar o netstat e classificar a saída para que os IPs atualmente conectados na maior parte sejam os principais. É melhor usado com o programa 'watch' para atualizações em intervalos de 2 segundos.

Atualização: reescrita significativa 11-02-2013 para se livrar de muitos problemas e exibir nomes de host

Saída de amostra:

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
David Tonhofer
fonte
0

Solaris:

netstat -nr
(displays routing table)
Milner
fonte
0

Do livro Wicked Cool Shell Scripts:

Script # 90.1 : A cada minuto, pegue os valores de netstats (via crontab)

Script 90.2 : Analise o log de desempenho de execução do netstat, identificando resultados e tendências importantes.

(Adoro este livro - vale a pena comprar!)

gharper
fonte
0

No Solaris, muitas pessoas estão acostumadas a fazer "netstat -i 1" para obter uma contagem de pacotes em execução. O netstat do Linux possui uma versão inútil desse recurso, pois mostra a contagem bruta e não um delta. Para obter resultados semelhantes, faça "sar -n DEV 1 0". Considere, na verdade, "LANG = C sar -n DEV 1 0 | grep nome da interface" (sar coloca o horário com AM e PM no início da linha em determinados locais, por isso é melhor adquirir o hábito de sempre executar "LANG = C sar ", caso você o analise).

Carlito
fonte
Para obter exemplos de saída e uso do Mac, consulte serverfault.com/questions/11289/netstat-tips-and-tricks/… .
Clinton Blackmore
0

No Solaris,

netstat -k

Mostra um resumo de várias estatísticas. Útil para verificar erros, etc.

Jauder Ho
fonte
0

Desde que ninguém mencionou ainda:

netstat -s 

fornece uma tonelada de estatísticas úteis por protocolo no linux.

dmourati
fonte