A configuração de rede e a solução de problemas no Linux são partes essenciais da administração do sistema. Mesmo para um desenvolvedor que trabalha com sistemas Linux, o conhecimento sobre comandos de rede no Linux é uma vantagem adicional. Especificamente, se você deseja se tornar um engenheiro DevOps ou fazer parte do SRE (Site Reliability Engineering), é essencial conhecer todos os comandos de solução de problemas do Linux, pois eles serão parte de suas atividades diárias. Este post abordará os comandos importantes de rede e solução de problemas que estão disponíveis nativamente nos sistemas Linux.
Lista de Comandos de Rede e Solução de Problemas no Linux
A seguir está a lista de comandos de solução de problemas disponíveis nativamente. Vamos entender cada comando e ver como podemos usá-lo para solucionar problemas no Linux.
Nota Importante: Cada comando/utilitário mencionado neste post possui muitas opções e flags. Cada comando tem uma página man e você pode usá-la para identificar as flags e opções necessárias para o seu caso de uso. Por exemplo, para o comando “ip”, você pode simplesmente digitar “man ip” no terminal para obter todos os detalhes sobre esse comando.
- hostname
O comando “hostname” é usado para visualizar o nome do host da máquina e para definir o nome do host.
hostname
Você pode usar o comando “hostname” para definir um novo nome de host para a máquina. Por exemplo,
sudo hostname temp.com
Se você definir o nome do host usando o comando “hostname”, ao reiniciar a máquina, o nome do host mudará para o nome especificado no arquivo de nome do host (por exemplo: /etc/hostname). Portanto, se você deseja alterar o nome do host permanentemente, pode usar o arquivo /etc/hosts ou o arquivo de nome do host relevante presente no servidor. Para máquinas Ubuntu, você pode alterá-lo no arquivo /etc/hostname. Para RHEL, CentOS e Fedora, você pode alterá-lo no arquivo /etc/sysconfig/network.
- host
O comando “host” é para a pesquisa reversa de IP ou um nome DNS. Por exemplo, se você quiser encontrar um DNS associado a um IP, pode usar os comandos “host” da seguinte forma:
host 8.8.8.8
Você também pode fazer o inverso para encontrar o endereço IP associado ao nome de domínio. Por exemplo,
host nerdexpert.com.br
- ping
A utilidade de rede “ping” é usada para verificar se o servidor remoto está acessível ou não. É usado principalmente para verificar a conectividade e solucionar problemas de rede.
Ele fornece os seguintes detalhes:
- Bytes enviados e recebidos
- Pacotes enviados, recebidos e perdidos
- Tempo aproximado de ida e volta (em milissegundos)
A sintaxe do comando “Ping” é a seguinte:
ping <IP ou DNS>
Por exemplo,
ping nerdexpert.com.br
Para pingar o endereço IP:
ping 8.8.8.8
Se você quiser limitar a saída do “ping” sem usar ctrl+c, pode usar a flag “-c” com um número, como mostrado abaixo:
ping -c 1 nerdexpert.com.br
- curl
A utilidade “curl” é usada principalmente para transferir dados de ou para um servidor. No entanto, você pode usá-lo para solução de problemas de rede. Para solução de problemas de rede, o “curl” suporta protocolos como DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET e TFTP. Por exemplo, o “curl” pode verificar a conectividade na porta 22 usando telnet:
curl -v telnet://192.168.33.10:22
Você pode verificar a conectividade FTP usando “curl”:
curl ftp://ftptest.net
Você também pode solucionar problemas de conectividade do servidor web:
curl https://nerdexpert.com.br -I
- wget
O comando “wget” é usado principalmente para buscar páginas da web. Você pode usar o “wget” para solucionar problemas de rede também. Por exemplo, você pode solucionar conexões de servidor proxy usando “wget”:
wget -e use_proxy=yes http_proxy=<proxy_host:port> http://siteexterno.com.br
Você pode verificar se um site está funcionando buscando os arquivos:
wget www.google.com
- ip (ifconfig)
O comando “ip” é usado para exibir e manipular rotas e interfaces de rede. O comando “ip” é a versão mais recente do “ifconfig”. O “ifconfig” funciona em todos os sistemas, mas é melhor usar o comando “ip” em vez do “ifconfig”. Vamos dar uma olhada em alguns exemplos do comando “ip”:
- Exibir dispositivos e configuração de rede:
ip addr
- Você pode usar este comando com pipes e “grep” para obter uma saída mais granular, como o endereço IP da interface eth0. É muito útil quando você trabalha com ferramentas de automação que requerem que o IP seja buscado dinamicamente. O comando a seguir obtém o endereço IP da interface de rede eth0:
ip a | grep eth0 | grep “inet” | awk -F” ” ‘{print $2}’ - Obter detalhes de uma interface específica:
ip a show eth0
- Você pode listar as tabelas de roteamento:
ip route ip route list
- arp
ARP (Address Resolution Protocol) mostra a tabela de cache dos endereços IP e MAC das redes locais com as quais o sistema interagiu:
arp
- ss (netstat)
O comando “ss” é um substituto para o “netstat”. Você ainda pode usar o comando “netstat” em todos os sistemas. Usando o comando “ss”, você pode obter mais informações do que o comando “netstat”. O comando “ss” é rápido porque obtém todas as informações do espaço do usuário do kernel. Agora, vamos dar uma olhada em alguns usos do comando “ss”:
- Listar todas as conexões:
ss
- Filtrar TCP, UDP e Unix sockets:
ss -ta ss -ua ss -xa
- Listar todas as portas em escuta:
ss -lt
- Listar todas as portas estabelecidas:
ss -t -r state established
- traceroute
Se você não tiver uma utilidade “traceroute” em seu sistema ou servidor, poderá instalá-la a partir do repositório nativo. O “traceroute” é uma utilidade de solução de problemas de rede. Usando o “traceroute”, você pode encontrar o número de saltos necessários para um pacote específico chegar ao destino. Por exemplo:
traceroute google.com
- mtr
A utilidade “mtr” é uma ferramenta de diagnóstico de rede para solucionar gargalos de rede. Combina a funcionalidade de ping e traceroute. Por exemplo, o seguinte comando mostra a saída do traceroute em tempo real:mtr google.com
- dig
Se você tiver alguma tarefa relacionada à pesquisa de DNS, poderá usar o comando “dig” para consultar os servidores de nomes DNS. Por exemplo, para obter todos os registros DNS e informações TTL de um twitter.com:dig twitter.com ANY
- nslookup
Nslookup (Name Server Lookup) é usado para verificar as entradas DNS. É semelhante ao comando “dig”. Para verificar os registros DNS de um domínio, você pode usar o seguinte comando:nslookup google.com
- nc (netcat)
O comando “nc” (netcat) é conhecido como o exército suíço dos comandos de rede. Usando o “nc”, você pode verificar a conectividade de um serviço que está sendo executado em uma porta específica. Por exemplo:nc -v -n 192.168.33.10 22
- telnet
O comando “telnet” é usado para solucionar as conexões TCP em uma porta. Para verificar a conectividade da porta usando “telnet”, use o seguinte comando:telnet 10.4.5.5 22
- route
O comando “route” é usado para obter os detalhes da tabela de roteamento para o seu sistema e para manipulá-lo. Por exemplo:route
-n - tcpdump
O comando “tcpdump” é usado principalmente para solucionar o tráfego de rede. Por exemplo:sudo tcpdump -i eth0
Conclusão
Neste artigo, abordamos as importantes utilidades de linha de comando do Linux para solução de problemas e configuração de rede. Se você está começando com administração de sistemas, DevOps ou funções SRE, é essencial aprender sobre essas utilidades para apoiar os projetos em que está trabalhando. Cada utilidade tem muitas funcionalidades, e você pode explorar mais para atender às suas necessidades.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.