O netstat
comando Linux oferece um tesouro de informações sobre suas conexões de rede, as portas que estão em uso e os processos que as utilizam. Aprenda como usá-lo.
Índice
Os soquetes de rede podem ser conectados ou aguardando uma conexão. As conexões usam protocolos de rede como protocolo de controle de transporte (TCP) ou protocolo de datagrama de usuário UDP. Eles usam endereços de protocolo de Internet e portas de rede para estabelecer conexões.
A palavra soquetes pode evocar imagens de um ponto de conexão física para um chumbo ou cabo, mas, neste contexto, um soquete é uma construção de software usada para lidar com uma extremidade de uma conexão de dados de rede.
Os soquetes têm dois estados principais: Eles estão conectados e facilitando uma comunicação de rede contínua ou estão aguardando uma conexão de entrada para se conectar a eles. Existem outros estados, como o estado em que um soquete está no meio do caminho para estabelecer uma conexão em um dispositivo remoto, mas, deixando de lado os estados transitórios, você pode pensar em um soquete como estando conectado ou esperando (o que geralmente é chamado de escuta ).
O soquete de escuta é chamado de servidor , e o soquete que solicita uma conexão com o soquete de escuta é chamado de cliente . Esses nomes não têm nada a ver com funções de hardware ou computador. Eles simplesmente definem a função de cada soquete em cada extremidade da conexão.
O netstat
comando permite que você descubra quais soquetes estão conectados e quais soquetes estão escutando. Ou seja, ele informa quais portas estão em uso e quais processos as estão usando. Ele pode mostrar tabelas de roteamento e estatísticas sobre suas interfaces de rede e conexões multicast .
A funcionalidade do netstat
foi replicada ao longo do tempo em diferentes utilitários do Linux, como ip e ss . Ainda vale a pena conhecer este avô de todos os comandos de análise de rede, pois está disponível em todos os sistemas operacionais Linux e Unix, e até no Windows e Mac.
Veja como usá-lo, completo com comandos de exemplo.
A -a
opção (todos) netstat
mostra todos os soquetes conectados e em espera. Esse comando pode produzir uma longa lista, então a colocamos em less
.
netstat -a | Menos
A lista inclui soquetes TCP (IP), TCP6 (IPv6) e UDP.
O contorno da janela do terminal torna um pouco difícil ver o que está acontecendo. Aqui estão algumas seções dessa lista:
Conexões de Internet ativas (servidores e estabelecidas) Endereço local Proto Recv-Q Send-Q Estado de endereço estrangeiro tcp 0 0 localhost: domínio 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* ESCUTE tcp 0 0 localhost: ipp 0.0.0.0:* LISTEN tcp 0 0 localhost: smtp 0.0.0.0:* OUVIR tcp6 0 0 [::]: ssh [::]: * ESCUTE tcp6 0 0 ip6-localhost: ipp [::]: * LISTEN . . . Soquetes de domínio UNIX ativos (servidores e estabelecidos) Sinalizadores Proto RefCnt Tipo Estado Caminho do Nó I unix 24 [] DGRAM 12831 / run / systemd / journal / dev-log unix 2 [ACC] STREAM LISTENING 24747 @ / tmp / dbus-zH6clYmvw8 unix 2 [] DGRAM 26372 / run / user / 1000 / systemd / notificar unix 2 [] DGRAM 23382 / run / user / 121 / systemd / notificar unix 2 [ACC] SEQPACKET LISTENING 12839 / run / udev / control
A seção “Internet ativa” lista as conexões externas conectadas e os soquetes locais que escutam as solicitações de conexão remota. Ou seja, ele lista as conexões de rede que são (ou serão) estabelecidas com dispositivos externos.
A seção “Domínio UNIX” lista as conexões internas conectadas e de escuta. Em outras palavras, ele lista as conexões que foram estabelecidas em seu computador entre diferentes aplicativos, processos e elementos do sistema operacional.
As colunas “Internet ativa” são:
netstat
mostrar o nome do host local para o endereço e o nome do serviço para a porta.Para conexões TCP, o valor do estado pode ser um dos seguintes:
As colunas “domínio Unix” são:
ACC
, o que representa SO_ACCEPTON
, o que significa que o soquete está esperando por uma solicitação de conexão. SO_WAITDATA
, mostrado como W
, significa que há dados esperando para serem lidos. SO_NOSPACE
, mostrado como N
, significa que não há espaço para gravar dados no soquete (ou seja, o buffer de envio está cheio).O tipo de soquete de domínio Unix pode ser um dos seguintes:
O estado do soquete do domínio Unix pode ser um dos seguintes:
Nossa, isso é muita informação! Muitas das netstat
opções refinam os resultados de uma forma ou de outra, mas não alteram muito o conteúdo. Vamos dar uma olhada.
O netstat -a
comando pode fornecer mais informações do que você precisa ver. Se você deseja ou precisa ver apenas os soquetes TCP, pode usar a -t
opção (TCP) para restringir a exibição para mostrar apenas os soquetes TCP.
netstat -at | Menos
O display out é bastante reduzido. Os poucos soquetes listados são todos soquetes TCP.
As opções -u
(UDP) e -x
(UNIX) se comportam de maneira semelhante, restringindo os resultados ao tipo de soquete especificado na linha de comando. Esta é a opção -u (UDP) em uso:
netstat -au | Menos
Somente soquetes UDP são listados.
Para ver os soquetes que estão no estado de escuta ou espera, use a -l
opção (escuta).
netstat -l | Menos
Os soquetes listados são aqueles que estão no estado de escuta.
Isso pode ser combinado com as opções -t (TCP, -u (UDP) e -x (UNIX) para identificar ainda mais os soquetes de interesse. Vamos procurar os soquetes TCP de escuta:
netstat -lt | Menos
Agora, vemos apenas soquetes de escuta TCP.
Para ver as estatísticas de um protocolo, use a -s
opção (estatísticas) e passe as opções -t
(TCP), -u
(UDP) ou -x
(UNIX). Se você usar apenas a -s
opção (estatísticas) sozinha, verá as estatísticas de todos os protocolos. Vamos verificar as estatísticas do protocolo TCP.
netstat -st | Menos
Uma coleção de estatísticas para as conexões TCP é exibida em less
.
Pode ser útil ver o ID do processo (PID) do processo usando um soquete, junto com o nome desse processo. A -p
opção (programa) faz exatamente isso. Vamos ver quais são os PIDs e nomes de processo para os processos usando um soquete TCP que está no estado de escuta. Usamos sudo
para garantir que recebemos todas as informações disponíveis, incluindo quaisquer informações que normalmente exigiriam permissões de root.
sudo netstat -p -at
Esta é a saída em uma tabela formatada:
Conexões de Internet ativas (servidores e estabelecidas) Proto Recv-Q Send-Q Endereço Local Endereço Estrangeiro Estado PID / Nome do Programa tcp 0 0 localhost: domínio 0.0.0.0:* LISTEN 6927 / systemd-resolv tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 751 / sshd tcp 0 0 localhost: ipp 0.0.0.0:* LISTEN 7687 / cupsd tcp 0 0 localhost: smtp 0.0.0.0:* LISTEN 1176 / master tcp6 0 0 [::]: ssh [::]: * LISTEN 751 / sshd tcp6 0 0 ip6-localhost: ipp [::]: * LISTEN 7687 / cupsd tcp6 0 0 ip6-localhost: smtp [::]: * LISTEN 1176 / master
Temos uma coluna extra chamada “PID / nome do programa”. Esta coluna lista o PID e o nome do processo usando cada um dos sockets.
Outra etapa que podemos realizar para remover alguma ambigüidade é exibir os endereços local e remoto como endereços IP em vez de seus domínios e nomes de host resolvidos. Se usarmos a -n
opção (numérica), os endereços IPv4 são mostrados no formato decimal com pontos:
sudo netstat -an | Menos
Os endereços IP são mostrados como valores numéricos. Os números das portas também são mostrados, separados por dois pontos ” :
” do endereço IP.
Um endereço IP de 127.0.0.1 mostra que o soquete está vinculado ao endereço de loopback do computador local . Você pode pensar em um endereço IP de 0.0.0.0 como significando a “rota padrão” para endereços locais e “qualquer endereço IP” para endereços estrangeiros. Os endereços IPv6 mostrados como “ ::
” também são endereços zero.
As portas listadas podem ser facilmente verificadas para ver qual é sua finalidade usual :
A -r
opção (rota) exibe a tabela de roteamento do kernel.
sudo netstat -r
Esta é a saída em uma tabela organizada:
Tabela de roteamento IP do kernel Gateway de Destino Genmask Sinaliza janela MSS irtt Iface Vigor.router padrão 0.0.0.0 UG 0 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
E, aqui está o que as colunas significam:
*
” aparecerá aqui se um endereço de gateway não for definido.O valor dos sinalizadores pode ser um dos seguintes:
addrconf
, o gerador de arquivo de configuração de DNS e DHCP automatizado.Se canalizarmos a saída de netstat
through grep
, podemos pesquisar um processo por nome e identificar a porta que ele está usando. Usamos as opções -a
(tudo), -n
(numérico) e -p
(programa) usadas anteriormente e pesquisamos por “sshd”.
sudo netstat -anp | grep "sshd"
grep
encontra a string de destino e vemos que o sshd
daemon está usando a porta 22.
Claro, também podemos fazer isso ao contrário. Se pesquisarmos por “: 22”, podemos descobrir qual processo está usando essa porta, se houver.
sudo netstat -anp | grep ": 22"
Desta vez, grep
encontra a string de destino “: 22” e vemos que o processo que usa essa porta é o sshd
daemon, ID de processo 751.
A -i
opção (interfaces) exibirá uma tabela das interfaces de rede que netstat
podem ser descobertas.
sudo netstat -i
Aqui está o resultado de uma forma mais legível:
Tabela de interface do kernel Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU
Isso é o que as colunas significam:
enp0s3
interface é a interface de rede para o mundo externo e a lo
interface é a interface de loopback. A interface de loopback permite que os processos se intercomuniquem dentro do computador usando protocolos de rede, mesmo se o computador não estiver conectado a uma rede.As bandeiras representam o seguinte:
Simplificando, uma transmissão multicast permite que um pacote seja enviado apenas uma vez, independentemente do número de destinatários. Para serviços como streaming de vídeo, por exemplo, isso aumenta enormemente a eficiência do ponto de vista do remetente.
A -g
opção (grupos) netstat
lista os membros do grupo multicast de soquetes em cada interface.
sudo netstat -g
As colunas são bastante simples:
Os comandos route , ip , ifconfig e ss podem fornecer muito do que netstat
é capaz de mostrar a você. Eles são todos ótimos comandos e vale a pena conferir.
Nós nos concentramos netstat
porque ele está universalmente disponível, independentemente de qual sistema operacional tipo Unix você está trabalhando, mesmo os obscuros.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…