Redes no Linux
Interfaces, IP, DNS, portas e firewall, diagnóstico de rede pela linha de comando.
Interfaces de rede no Linux
Uma interface de rede é a representação no kernel
de uma conexão física ou virtual. O comando principal para
inspecioná-las é ip addr show (ou ip a).
- lo: loopback, endereço 127.0.0.1. Interface virtual para comunicação interna do sistema.
-
eth0 / enp3s0: Ethernet. A nomenclatura moderna
(
enp3s0) é determinística — enethernet, p3PCI bus 3, s0slot 0. Não muda entre reboots. - wlan0 / wlp2s0: Wi-Fi. Mesma lógica de nomenclatura.
- docker0: bridge virtual criada pelo Docker para comunicação entre containers e host.
ip addr show # lista todas as interfaces
ip addr show eth0 # só a interface eth0
ip link set eth0 up # ativa interface
ip link set eth0 down # desativa interface
# Gerenciadores de configuração de rede:
# /etc/network/interfaces — Debian puro
# NetworkManager — Ubuntu Desktop (nmcli, nmtui)
# /etc/netplan/ — Ubuntu Server moderno (YAML → networkd/NM)
A nomenclatura antiga (eth0, wlan0)
dependia da ordem de detecção do kernel — podia mudar entre boots.
A nomenclatura moderna (enp3s0, wlp2s0)
é baseada em topologia de hardware e é previsível. No Ubuntu
Server, use nmcli device status para ver o estado de
todas as interfaces gerenciadas pelo NetworkManager.
Endereçamento IP e roteamento
O comando ip (do pacote iproute2) é a
ferramenta moderna para gerenciar endereços, rotas e interfaces.
Substituiu ifconfig e route, que estão
depreciados.
ip addr show # endereços de todas as interfaces
ip addr show eth0 # só eth0
ip route show # tabela de roteamento completa
ip route get 8.8.8.8 # qual rota seria usada para este IP
# Output típico de ip addr:
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
# inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
# inet6 fe80::1/64 scope link
# Rota padrão (gateway)
ip route show default
# default via 192.168.1.1 dev eth0 proto dhcp
Pense em ip route get 8.8.8.8 como perguntar ao GPS
"se eu fosse para este endereço, por qual estrada eu sairia?". O
kernel responde qual interface e qual gateway ele usaria — sem
enviar nenhum pacote. Perfeito para diagnosticar problemas de
roteamento sem alterar nada.
-
Ainda usar ifconfig: depreciado e ausente em
instalações mínimas. Use
ip addr. -
Adicionar rota sem gateway correto:
ip route add 10.0.0.0/8 via 192.168.1.1— verifique que o gateway está acessível na interface antes. - Alterações com ip são voláteis: sobrevivem apenas até o próximo reboot. Para permanência, edite a configuração do gerenciador de rede (Netplan, NetworkManager).
DNS no Linux: /etc/resolv.conf e /etc/hosts
O Linux tem dois mecanismos principais de resolução de nomes:
-
/etc/hosts: resolução local estática.
Mapeamentos hostname→IP verificados antes do DNS. Prioridade
configurável em
/etc/nsswitch.conf(entradahosts: files dns). - /etc/resolv.conf: lista os servidores DNS a consultar quando /etc/hosts não tem a resposta.
Em sistemas modernos com systemd-resolved (Ubuntu
18.04+), o /etc/resolv.conf pode ser um symlink gerenciado
automaticamente.
cat /etc/resolv.conf # servidores DNS configurados
# nameserver 8.8.8.8
# nameserver 1.1.1.1
cat /etc/hosts # resolução local (antes do DNS)
# 127.0.0.1 localhost
# 127.0.1.1 minhaMaquina
# 192.168.1.50 servidor-interno
nslookup google.com # consulta DNS simples
dig google.com # consulta DNS detalhada
dig +short google.com # só o IP
dig MX gmail.com # registros MX (email)
dig NS google.com # servidores de nome
host google.com # consulta simples e legível
resolvectl status # systemd-resolved: status DNS (Ubuntu moderno)
Uma técnica útil: adicionar entradas em
/etc/hosts para apontar domínios de desenvolvimento
para 127.0.0.1 durante o desenvolvimento local. Por exemplo:
127.0.0.1 app.local. Isso funciona porque /etc/hosts
tem prioridade sobre DNS por padrão. Use
dig +short dominio para verificar rapidamente qual IP
um domínio resolve.
Portas e sockets: quem está ouvindo
Para saber quais serviços estão aceitando conexões em quais
portas, use ss (socket statistics) — o substituto
moderno do depreciado netstat.
ss -tuln # TCP/UDP em listen, sem resolver nomes
# -t TCP, -u UDP, -l listening, -n numérico (não resolve hostnames)
ss -tulnp # inclui o processo que está ouvindo (-p)
netstat -tuln # equivalente antigo (depreciado, mas comum)
lsof -i :80 # qual processo usa a porta 80
lsof -i tcp:443 # porta 443 TCP
# Output típico de ss -tulnp:
# Netid State Recv-Q Send-Q Local Address:Port
# tcp LISTEN 0 128 0.0.0.0:80 users:(("nginx",pid=1234,...))
# tcp LISTEN 0 128 0.0.0.0:443 users:(("nginx",pid=1234,...))
# tcp LISTEN 0 128 127.0.0.1:5432 users:(("postgres",pid=789,...))
Uma porta ouvindo em 0.0.0.0:80 é como uma loja com
porta para a rua — aceita conexões de qualquer IP que chegue até a
máquina. Uma porta em 127.0.0.1:5432 é uma sala
interna sem janela para fora — só acessível de dentro da própria
máquina. PostgreSQL ouvindo só no loopback é uma decisão de
segurança correta para bancos que não devem ser expostos.
-
Usar netstat sem instalar net-tools: em
instalações mínimas, netstat não está presente. Use
ss— vem com iproute2, sempre disponível. -
Não usar -p: sem
-p, você vê a porta mas não sabe qual processo. Adicione sempre para diagnóstico. -
Confundir LISTEN com ESTABLISHED: LISTEN =
esperando conexões. ESTABLISHED = conexão ativa.
ss -tunp(sem -l) mostra conexões estabelecidas.
Firewall básico com ufw e iptables
O Linux tem um firewall embutido no kernel (Netfilter). As ferramentas de userspace para configurá-lo evoluíram:
- iptables: interface clássica, muito poderosa, sintaxe complexa.
- nftables: successor moderno do iptables, mais eficiente.
- ufw (Uncomplicated Firewall): abstração amigável sobre iptables/nftables, padrão no Ubuntu. Ideal para uso geral.
- firewalld: padrão no Fedora/RHEL, suporta zonas de rede.
# UFW (Uncomplicated Firewall) — padrão Ubuntu
sudo ufw enable
sudo ufw status verbose
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow from 192.168.1.0/24 # toda uma rede local
sudo ufw deny 8080 # bloqueia porta 8080
sudo ufw delete allow 80/tcp # remove regra
sudo ufw reset # reseta todas as regras
# iptables (mais poderoso, mas complexo)
sudo iptables -L -n -v # lista regras atuais
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # aceita HTTP
sudo iptables -A INPUT -j DROP # nega todo o resto
-
Habilitar ufw sem liberar SSH:
sudo ufw enableantes deufw allow 22/tcppode te bloquear do servidor. Sempre libere SSH primeiro. -
Regras iptables sem persistência: iptables não
persiste entre reboots sem
iptables-persistentou equivalente. ufw persiste automaticamente. -
Bloquear INPUT sem regra ESTABLISHED: ao criar
regras restritivas com iptables, adicione
-m state --state ESTABLISHED,RELATED -j ACCEPTpara não quebrar conexões existentes.
Ferramentas de diagnóstico e monitoramento
Um conjunto de ferramentas essenciais para diagnosticar problemas de rede, testar conectividade, transferir arquivos e criar túneis seguros.
ping -c 4 google.com # testa conectividade (ICMP)
ping6 ::1 # ping IPv6
traceroute google.com # rastreia rota hop a hop
mtr google.com # ping + traceroute contínuo (melhor que ambos)
curl -I https://example.com # cabeçalhos HTTP (HEAD request)
curl -v https://example.com # verbose — mostra handshake TLS, headers
wget https://example.com/arquivo # baixa arquivo
ssh usuario@servidor # login remoto
ssh -p 2222 usuario@servidor # porta não-padrão
ssh -L 8080:localhost:80 servidor # túnel SSH: local:8080 → servidor:80
scp arquivo.txt usuario@servidor:/home/usuario/ # copia via SSH
rsync -avz pasta/ usuario@servidor:/backup/ # sincroniza (delta, eficiente)
nmap -sS 192.168.1.1 # scan TCP SYN (requer root)
nmap -p 80,443 exemplo.com # verifica portas específicas
Um túnel SSH (ssh -L) é como um cano secreto entre
sua máquina e o servidor. Tudo que entra em
localhost:8080 sai na porta 80 do servidor,
completamente criptografado. Muito usado para acessar PostgreSQL,
Redis ou painéis admin que ouvem só no loopback do servidor — sem
precisar expor essas portas para a internet.
-
ip a/ip route: interfaces e rotas -
ss -tulnp: portas abertas e processos responsáveis dig +short dominio: resolução DNS rápidaufw allow/deny porta: firewall simplificadossh -L: túnel seguro para serviços internos-
mtr: melhor diagnóstico de rota (substitui ping + traceroute)