Introdução
Neste laboratório, você aprenderá como verificar se um socket de rede específico está aberto no Linux. Compreender como identificar e inspecionar sockets de rede ativos é uma habilidade fundamental para a solução de problemas e monitoramento de rede.
Através de exercícios práticos, você utilizará ferramentas de linha de comando poderosas como ss e netstat para listar e filtrar conexões de rede. Você também explorará o sistema de arquivos /proc/net para obter informações mais detalhadas sobre os sockets, fornecendo uma abordagem abrangente para verificar o status dos sockets de rede em seu sistema.
Verificar socket com ss -tuln
Nesta etapa, você aprenderá como usar o comando ss para inspecionar sockets de rede em seu sistema Linux. Sockets são pontos finais para enviar e receber dados através de uma rede. Compreender como visualizar sockets ativos é crucial para a solução de problemas e monitoramento de rede.
O comando ss é uma ferramenta poderosa para examinar sockets. Vamos usá-lo com as seguintes opções:
-t: Exibir sockets TCP.-u: Exibir sockets UDP.-l: Exibir sockets em escuta (sockets esperando por conexões).-n: Não resolver nomes de serviço (exibir números de porta em vez disso).
Abra seu terminal se ele ainda não estiver aberto. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.
Agora, digite o seguinte comando e pressione Enter:
ss -tuln
Você verá uma saída semelhante a esta:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:5900 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:25 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 128 [::1]:631 [::]:*
tcp LISTEN 0 128 [::]:5900 [::]:*
tcp LISTEN 0 128 [::1]:25 [::]:*
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:*
udp UNCONN 0 0 [::1]:323 [::]:*
udp UNCONN 0 0 [::]:631 [::]:*
Vamos analisar a saída:
Netid: O tipo de socket (por exemplo,tcp,udp).State: O estado do socket (por exemplo,LISTENsignifica que está esperando por uma conexão).Recv-Q: O número de bytes recebidos na fila.Send-Q: O número de bytes enviados na fila.Local Address:Port: O endereço IP local e o número da porta ao qual o socket está vinculado.0.0.0.0e[::]indicam que o socket está ouvindo em todas as interfaces de rede disponíveis (IPv4 e IPv6, respectivamente).Peer Address:Port: O endereço IP remoto e o número da porta ao qual o socket está conectado.*indica que o socket está ouvindo por conexões de qualquer endereço remoto.
Esta saída mostra quais serviços estão em execução e ouvindo por conexões em seu sistema. Por exemplo, você pode ver que SSH (porta 22), CUPS (porta 631), VNC (porta 5900) e o servidor de e-mail (porta 25) estão ouvindo.
Compreender esta saída é o primeiro passo para diagnosticar problemas de conectividade de rede ou identificar serviços potencialmente indesejados em execução em seu sistema.
Clique em Continuar para prosseguir para a próxima etapa.
Verificar socket com netstat -tuln
Nesta etapa, você usará outro comando, netstat, para verificar os sockets de rede. netstat é um comando mais antigo em comparação com ss, mas ainda é amplamente utilizado e fornece informações semelhantes sobre conexões de rede, tabelas de roteamento e estatísticas de interface.
Usaremos netstat com as mesmas opções que ss para ver os sockets TCP e UDP em escuta sem resolver nomes de serviço:
-t: Exibir sockets TCP.-u: Exibir sockets UDP.-l: Exibir sockets em escuta.-n: Não resolver nomes de serviço.
Digite o seguinte comando em seu terminal e pressione Enter:
netstat -tuln
Você verá uma saída semelhante a esta:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 :::5900 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*
udp6 0 0 ::1:323 :::*
udp6 0 0 :::631 :::*
Observe que a saída de netstat -tuln é muito semelhante à saída de ss -tuln. Ambos os comandos fornecem informações sobre o protocolo (Proto), o endereço local e a porta (Local Address), o endereço estrangeiro e a porta (Foreign Address) e o estado da conexão (State).
Embora ss seja geralmente considerado mais rápido e mais informativo para cenários complexos, netstat ainda é uma ferramenta valiosa para ter em seu arsenal de comandos Linux. É uma boa prática estar familiarizado com ambos.
Você agora usou com sucesso ss e netstat para visualizar sockets em escuta. Esta é uma habilidade fundamental para entender a atividade da rede em seu sistema.
Clique em Continuar para passar para a próxima etapa.
Inspecionar detalhes do socket em /proc/net
Nesta etapa, você explorará o diretório /proc/net, que fornece informações detalhadas sobre a pilha de rede e os protocolos de rede no kernel Linux. É aqui que comandos como ss e netstat obtêm seus dados.
O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema. É uma maneira poderosa de inspecionar o estado interno do kernel.
Dentro de /proc/net, você encontrará arquivos que contêm dados brutos sobre conexões de rede. Por exemplo, tcp, udp, tcp6 e udp6 contêm informações sobre sockets TCP e UDP ativos (IPv4 e IPv6, respectivamente).
Vamos olhar o conteúdo do arquivo tcp. Digite o seguinte comando em seu terminal e pressione Enter:
cat /proc/net/tcp
Você verá uma saída que se parece com isto:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
0: 0100007F:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 12345 1 0000000000000000 0
1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 67890 1 0000000000000000 0
... (mais linhas)
Esta saída é menos legível para humanos do que ss ou netstat porque são os dados brutos do kernel. Cada linha representa um socket TCP e contém vários campos, incluindo:
sl: O índice da lista de sockets.local_address: O endereço IP local e a porta em formato hexadecimal.0100007Fé a representação hexadecimal de127.0.0.1(endereço de loopback) e0019é a representação hexadecimal da porta 25.rem_address: O endereço IP remoto e a porta em formato hexadecimal.st: O estado do socket (por exemplo,0ArepresentaLISTEN).tx_queue: O tamanho da fila de transmissão.rx_queue: O tamanho da fila de recebimento.uid: O ID do usuário que possui o socket.inode: O número do inode do socket.
Você também pode visualizar sockets UDP olhando para o arquivo /proc/net/udp:
cat /proc/net/udp
E para sockets IPv6, você pode verificar /proc/net/tcp6 e /proc/net/udp6.
Embora você normalmente não analise esses arquivos diretamente para uso diário, entender que é aqui que as informações da rede se originam fornece uma visão mais profunda de como o Linux gerencia as conexões de rede. Comandos como ss e netstat essencialmente leem e formatam os dados desses arquivos para facilitar a compreensão.
Você agora explorou as informações brutas do socket disponíveis no sistema de arquivos /proc/net.
Clique em Continuar para concluir o laboratório.
Resumo
Neste laboratório, você aprendeu como verificar se um socket de rede específico está aberto no Linux usando várias ferramentas de linha de comando. Você começou utilizando o comando ss com as opções -tuln para exibir os sockets TCP e UDP em escuta, compreendendo as colunas de saída como Netid, State, Local Address:Port e Peer Address:Port.
Após o uso de ss, você normalmente verificaria as informações do socket usando o comando netstat, que fornece estatísticas de rede semelhantes. Finalmente, você exploraria como inspecionar informações detalhadas do socket diretamente do sistema de arquivos /proc/net, que oferece uma visão de baixo nível da pilha de rede. Essas etapas fornecem uma abordagem abrangente para identificar e examinar sockets de rede abertos em um sistema Linux.



