- Dave McKay
@TheGurkha
- 17 de fevereiro de 2020, 8:00 EDT
O Linux netstat
comando dá-lhe um verdadeiro tesouro de informações sobre conexões de rede, as portas que estão em uso, e os processos de usá-los. Aprende a usá-lo.Ports, Processes, and Protocols
Network sockets can either be connected or waiting for a connection., As conexões usam protocolos de rede como o protocolo de controle de transporte (TCP) ou o protocolo UDP de Datagram do Usuário. Eles usam endereços de Protocolo de Internet e portas de rede para estabelecer conexões.
A Palavra sockets pode conjurar imagens de um ponto de conexão física para um cabo ou chumbo, mas neste contexto, um socket é uma construção de software usada para lidar com uma extremidade de uma conexão de dados de rede.,
Sockets têm dois estados principais: eles são conectados e facilitam uma comunicação em rede, ou eles estão esperando por uma conexão de entrada para se conectar a eles. Existem outros estados, como o estado quando um socket é meio caminho através do estabelecimento de uma conexão em um dispositivo remoto, mas colocando estados transitórios de lado, você pode pensar em um socket como sendo conectada ou em espera (que é muitas vezes chamado de ouvir).
o soquete de escuta é chamado de servidor, e o soquete que pede uma conexão com o soquete de escuta é chamado de cliente., Estes nomes não têm nada a ver com hardware ou funções de computador. Eles simplesmente definem o papel de cada socket em cada extremidade da conexão.
O comando netstat
permite-lhe descobrir quais os ‘sockets’ que estão ligados e quais os ‘sockets’ que estão a ouvir. Ou seja, diz-lhe quais os portos que estão a ser utilizados e quais os processos que os estão a utilizar. Ele pode mostrar-lhe tabelas de roteamento e estatísticas sobre suas interfaces de rede e Conexões multicast.
a funcionalidade de netstat
foi replicada ao longo do Tempo em diferentes utilitários Linux, tais como ip e ss., Ainda vale a pena conhecer este avô de todos os comandos de análise de rede, porque ele está disponível em todos os sistemas operacionais Linux e Unix-like, e até mesmo no Windows e Mac.
Aqui está como usá-lo, COMPLETO com comandos de exemplo.
Listing All Sockets
The -a
(all) option makes netstat
show all the connected and waiting sockets. Este comando é responsável por produzir uma longa lista, então nós o direcionamos para less
.,
netstat -a | less
a listagem inclui TCP (IP), TCP6 (IPv6) e fichas UDP.
a envolvente na janela do terminal torna um pouco difícil ver o que se passa. Aqui estão algumas seções dessa listagem:
a seção “Internet ativa” lista as conexões externas conectadas e tomadas locais de escuta para pedidos de conexão remota. Ou seja, ele lista as conexões de rede que são (ou serão) estabelecidas para dispositivos externos.,
a seção “Domínio UNIX” lista as conexões internas conectadas e escutadas. Em outras palavras, ele lista as conexões que foram estabelecidas dentro de seu computador entre diferentes aplicações, processos e elementos do sistema operacional.
As colunas “Internet activa” são:
- Proto: o protocolo usado por este socket (por exemplo, TCP ou UDP).
- Recv-Q: A fila de recepção. Estes são bytes recebidos que foram recebidos e são buffer, esperando pelo processo local que está usando esta conexão para lê-los e consumi-los.,
- Send-Q: A fila de envio. Isto mostra os bytes que estão prontos para serem enviados da fila de envio.
- local address: the address details of the local end of the connection. O padrão é para
netstat
para mostrar o nome da máquina local para o endereço, e o nome do serviço para o porto. - endereço estrangeiro: o endereço e o número do porto do fim remoto da ligação.
- Estado: o estado do soquete local. Para os sockets UDP, este é geralmente em branco. Veja a tabela de Estado, abaixo.,
para conexões TCP, o valor de Estado pode ser um dos seguintes :
- ouvir: apenas do lado do servidor. O ‘socket’ está à espera de um pedido de ligação.
- sin-send: Client-side only. Este ‘socket’ fez um pedido de conexão e está esperando para ver se ele será aceito.
- SYN-RECEIVED: Server-side only. Este ‘socket’ está à espera de uma confirmação de ligação depois de aceitar um pedido de ligação.
- estabelecido: servidor e clientes. Uma conexão de trabalho foi estabelecida entre o servidor e o cliente, permitindo a transferência de dados entre os dois.,
- FIN-WAIT-1: servidor e clientes. Este ‘socket’ está à espera de um pedido de terminação de conexão do ‘socket’ remoto, ou de um reconhecimento de um pedido de terminação de conexão que foi enviado anteriormente deste ‘socket’.
- FIN-WAIT-2: servidor e clientes. Este ‘socket’ está à espera de um pedido de terminação de ligação do ‘socket’ remoto.
- CLOSE-WAIT: servidor e cliente. Este ‘socket’ está à espera de um pedido de terminação de ligação do utilizador local.Fecho: servidor e clientes., Este ‘socket’ está à espera de uma confirmação do pedido de terminação da ligação a partir do ‘socket’ remoto.
- LAST-ACK: servidor e cliente. Este ‘socket’ está à espera de uma confirmação do pedido de terminação da ligação que enviou para o ‘socket’ remoto.tempo de espera: servidor e clientes. Este ‘socket’ enviou um aviso de recepção para o ‘socket’ remoto para lhe dizer que recebeu o pedido de terminação do ‘socket’ remoto. Está agora à espera para se certificar de que o reconhecimento foi recebido.
- fechado: não existe ligação, por isso o ‘socket’ foi terminado.,
as colunas do “domínio Unix” são:
- Proto: o protocolo usado por este ‘socket’. Será ” unix.”
- RefCnt: número de referência. O número de processos ligados a este ‘socket’.
- Flags: This is usually set to , which represents
SO_ACCEPTON
, meaning the socket is waiting for a connection request.SO_WAITDATA
, mostrado comoW
, significa que há dados à espera de serem lidos.,SO_NOSPACE
, mostrado comoN
, significa que não há espaço para escrever dados para o socket (ou seja, o buffer de envio está cheio). - tipo: o tipo de ‘socket’. Veja a tabela de tipos abaixo.
- Estado: o estado do soquete. Ver a tabela de Estado abaixo.
- I-Node: o sistema de ficheiros inode associado a este ‘socket’.
- localização: a localização do sistema de ficheiros no ‘socket’.
O socket de domínio Unix tipo pode ser um dos seguintes:
- DGRAM: O soquete está sendo usado no modo datagrama, usando mensagens de tamanho fixo., Datagramas não são garantidos para serem confiáveis, sequenciados ou não atualizados.
- fluxo: este ‘socket’ é um ‘socket’ de fluxo. Este é o tipo comum “normal” de conexão de socket. Estes sockets são projetados para fornecer sequenciamento confiável (em ordem) entrega de pacotes.
- RAW: este ‘socket’ está a ser usado como ‘socket’ raw. Sockets Raw operam ao nível da rede do modelo OSI e não referenciam cabeçalhos TCP e UDP do nível de transporte.
- RDM: este ‘socket’ está localizado numa extremidade de uma ligação de mensagens fornecida de forma fiável.,
- SEQPACKET: este socket está operando como um socket de pacote sequencial, que é outro meio de fornecer entrega confiável, sequenciada e não-duplicada de pacotes.PACKET: Raw interface access socket. Pacotes são usados para receber ou enviar pacotes brutos no nível driver do dispositivo (ou seja, camada de ligação de dados) do modelo OSI.
o estado do ‘socket’ do domínio Unix pode ser um dos seguintes:
- livre: este ‘socket’ não está alocado.
- a ouvir: este ‘socket’ está a ouvir os pedidos de ligação recebidos.,
- ligação: este ‘socket’ está no processo de ligação.
- conectado: uma conexão foi estabelecida, e o socket é capaz de receber e transmitir dados.
- desconectando: a conexão está em processo de ser terminada.Uau, isso é muita informação! Muitas das opções
netstat
refinam os resultados de uma forma ou de outra, mas eles não mudam muito o conteúdo. Vamos dar uma vista de olhos.,
listar Sockets por tipo
o
netstat -a
comando pode fornecer mais informações do que você precisa ver. Se só quiser ou necessitar de ver os ‘sockets’ TCP, poderá usar a opção-t
(TCP) para restringir a visualização para mostrar apenas os ‘sockets’ TCP.netstat -at | less
a exibição é muito reduzida. Os poucos sockets que estão listados são todos os sockets TCP.,
The
-u
(UDP) and-x
(UNIX) options behave in a similar way, restricting the results to the type of socket specified on the command line. Aqui está a opção-u (UDP) em uso:netstat -au | less
apenas os sockets UDP estão listados.
listar os ‘Sockets’ por Estado
para ver os ‘sockets’ que estão no estado de escuta ou espera, use a opção
-l
(escuta).netstat -l | less
anúncioas tomadas que estão listadas são aquelas que estão no estado de escuta.,
isto pode ser combinado com as opções-t (TCP, -u (UDP) e-x (UNIX) para se familiarizar com as tomadas de interesse. Vamos procurar por ‘sockets’ do TCP:
netstat -lt | less
Agora, vemos apenas ‘sockets’ do TCP.
estatísticas de rede por protocolo
netstat -st | less
publicidadeuma colecção de estatísticas para as ligações TCP é apresentada em
less
.mostrando os nomes dos processos e PIDs
pode ser útil para ver o ID do processo (PID) do processo usando um socket, juntamente com o nome desse processo., A opção
-p
(programa) faz exatamente isso. Vamos ver o que os PIDs e nomes de processo são para os processos usando um socket TCP que está no estado de escuta. Usamossudo
para garantir que recebemos toda a informação disponível, incluindo qualquer informação que normalmente exigiria permissões de raiz.sudo netstat -p -at
Aqui está o resultado em uma tabela formatada:
temos uma coluna extra chamada “PID/nome do programa.”Esta coluna lista o PID e o nome do processo usando cada um dos sockets.,
listando endereços numéricos
outro passo que podemos dar para remover alguma ambiguidade é mostrar os endereços locais e remotos como endereços IP em vez de seu domínio resolvido e nomes de host. Se usamos o
-n
(numérico), a opção de endereços IPv4 são mostrados no formato decimal pontilhada:sudo netstat -an | less
PropagandaOs endereços IP são mostrados como valores numéricos. Os números de 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 socket Está ligado 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. Endereços IPv6 mostrados como”
::
” também são todos endereços zero.As portas que estão listadas podem ser facilmente verificadas para ver qual é a sua finalidade habitual:
- 22: Esta é a porta de escuta segura Shell (SSH).
- 25: Esta é a porta de escuta do Simple Mail Transfer Protocol (SMTP).
- 53: Este é o porto de escuta do sistema de nomes de domínio (DNS).,
- 68: esta é a porta de escuta dinâmica do Protocolo de configuração da máquina (DHCP).
- 631: esta é a porta de escuta do Common UNIX Printing System (CUPS).relacionado com
: Qual é a diferença entre 127. 0. 0. 1 e 0. 0. 0. 0. 0?
exibindo a tabela de roteamento
a opção
-r
(rota) exibe a tabela de roteamento do kernel.,sudo netstat -r
Aqui está o resultado numa tabela simples:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default Vigor.router 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:
- destino: a rede de destino ou o dispositivo de destino (se o destino não for uma rede).
- Gateway: o endereço da gateway. Um asterisco “” aparece aqui se um endereço de gateway não estiver definido.Genmask: a máscara de sub-rede para a rota.Opções: ver a tabela de opções abaixo.,
- MSS: tamanho máximo padrão de segmento para conexões TCP ao longo desta rota—esta é a maior quantidade de dados que podem ser recebidos em um segmento TCP.
- janela: o tamanho por omissão da janela para as ligações TCP nesta rota, indicando o número de pacotes que podem ser transferidos e recebidos antes do buffer de recepção estar cheio. Na prática, os pacotes são consumidos pela aplicação receptora.
- irtt: o tempo inicial de ida e volta. Este valor é referenciado pelo kernel para fazer ajustes dinâmicos aos parâmetros TCP para conexões remotas que são lentas a responder.,
- Iface: a interface de rede a partir da qual os pacotes enviados por esta rota são transmitidos.
o valor das bandeiras pode ser um de:
- U: a rota está em cima.
- H: O alvo é um hospedeiro e o único destino possível nesta rota.
- G: Use a ‘gateway’.
- R: restabelecer a rota para o encaminhamento dinâmico.
- D: instalado dinamicamente pelo servidor de roteamento.
- M: modificado pelo servidor de roteamento quando recebeu um pacote de Protocolo de controle de Internet (ICMP).,
- A: instalado por
addrconf
, o gerador de ficheiros DNS e DHCP config automatizado. - C: Entrada Da ‘Cache’.não !: Rejeitar a rota.
Encontrar a Porta Usada por um Processo
Se a gente canalizar a saída de
netstat
meiogrep
, podemos procurar por um processo pelo nome e identificar a porta que está a utilizar. Nós usamos o-a
(todos os),-n
(numérico) e-p
(programa) opções usadas anteriormente, e procure por “sshd.,”sudo netstat -anp | grep "sshd"
Propagandagrep
localiza a cadeia de caracteres de destino, e vemos que osshd
daemon está usando a porta 22.é claro que também podemos fazer isto ao contrário. Se procurarmos por”: 22″, podemos descobrir que processo está usando essa porta, se houver.
sudo netstat -anp | grep ":22"
desta vez
grep
Encontra a string alvo”: 22″, e vemos que o processo usando esta porta é osshd
daemon, ID do processo 751.,Listar as Interfaces de Rede
-i
(interfaces) opção irá exibir uma tabela das interfaces de redenetstat
pode descobrir.sudo netstat -i
Aqui está a saída mais legível moda:
Kernel Interface table 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
Isto é o que as colunas significam:
- Iface: O nome da interface. A interface
é a interface de rede para o mundo exterior, e a interface
é a interface loopback., A interface loopback permite aos processos intercomunicarem dentro do computador usando protocolos de rede, mesmo que o computador não esteja conectado a uma rede.
- MTU: a unidade de transmissão máxima (MTU). Este é o maior “pacote” que pode ser enviado. Ele consiste de um cabeçalho contendo bandeiras de roteamento e protocolo, e outros metadados, além dos dados que estão realmente sendo transportados.
- RX-OK: o número de pacotes recebidos, sem erros.
- RX-ERR: o número de pacotes recebidos, com erros. Queremos que isto seja o mais baixo possível.,
- RX-DRP: o número de pacotes largados (ou seja, perdidos). Queremos também que isto seja o mais baixo possível.
- RX-OVR: número de pacotes perdidos devido a transbordos ao receber. Isto geralmente significa que o buffer receptor estava cheio e não podia aceitar mais dados, mas mais dados foram recebidos e tiveram que ser descartados. Quanto menor esta figura, melhor, e zero é perfeito.
- TX-OK: o número de pacotes transmitidos, sem erros.
- RX-ERR: o número de pacotes transmitidos, com erros. Queremos que isto seja zero.,
- RX-DRP: o número de pacotes caiu ao transmitir. Idealmente, isto deve ser zero.
- RX-OVR: o número de pacotes perdidos devido a transbordos ao transmitir. Isto geralmente significa que o buffer de envio estava cheio e não podia aceitar mais dados, mas mais dados estava pronto para ser transmitido e teve que ser descartado.
- Flg: Flags. Veja a tabela de bandeiras abaixo.
as bandeiras representam o seguinte:
List Multicast Group Memberships
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 o streaming de Vídeo, por exemplo, isso aumenta a eficiência do ponto de vista do remetente em uma quantidade tremenda.
anúncioa
-g
(grupos) opção faznetstat
lista a associação multicast de grupos de sockets em cada interface.sudo netstat -g
As colunas são bastante simples:
- Interface: o nome da interface sobre a qual o socket está transmitindo.
- RefCnt: a contagem de referência, que é o número de processos ligados ao socket.,
- Grupo: o nome ou identificador do grupo multicast.
As Crianças Novas no bloco
a rota, ip, ifconfig e ss comandos podem fornecer um monte do que
netstat
é capaz de lhe mostrar. São todos grandes comandos e vale a pena verificar.estamos focados em
netstat
porque ele está universalmente disponível, independentemente do sistema operacional Unix-like em que você está trabalhando, mesmo os obscuros.,Dave McKay usou pela primeira vez computadores quando a fita de papel perfurado estava em voga, e ele tem estado programando desde então. Depois de mais de 30 anos na indústria de TI, ele é agora um jornalista de tecnologia em tempo integral. Durante sua carreira, ele trabalhou como programador freelance, gerente de uma equipe internacional de desenvolvimento de software, um gerente de projeto de serviços de TI, e, mais recentemente, como um oficial de proteção de dados. Dave é um evangelista Linux e defensor de código aberto.Read Full Bio ”