Skip to content

Configuração de Rede e Roteamento

📚 Índice

  1. ip route - Roteamento
  2. iptables - Firewall
  3. Exemplos Práticos
  4. Troubleshooting

ip route - Roteamento

O que é ip route?

ip route é uma ferramenta para gerenciar a tabela de roteamento do Linux. Ela diz ao sistema operacional por onde enviar pacotes destinados a diferentes redes.

Pense como um GPS para pacotes de rede - indicam o caminho até o destino.


Estrutura Básica

ip route [COMANDO] [DESTINO] [GATEWAY]
                                                        └─ Por qual roteador enviar
                   └─ Para qual rede/IP enviar
         └─ Operação (add, del, replace, show)

Principais Comandos

1. Visualizar Rotas Existentes

# Ver todas as rotas
ip route

# Ver rotas específicas
ip route show
ip route list

Exemplo de saída:

default via 10.4.0.1 dev eth0
10.4.0.0/24 dev eth0 proto kernel scope link src 10.4.0.11

Decodificando: - default via 10.4.0.1 = Tráfego desconhecido vai para 10.4.0.1 - 10.4.0.0/24 dev eth0 = Rede 10.4.0.0/24 está conectada em eth0 - proto kernel = Rota criada automaticamente pelo kernel


2. Adicionar uma Rota

ip route add DESTINO via GATEWAY

Exemplos:

# Adicionar rota padrão
ip route add default via 10.4.0.1

# Adicionar rota específica para rede
ip route add 10.1.0.0/24 via 10.2.0.2

# Adicionar rota para um IP específico
ip route add 192.168.1.100 via 10.2.0.2

Casos de uso: - default = Qualquer tráfego desconhecido - 10.1.0.0/24 = Tráfego para toda a rede 10.1.0.0 a 10.1.0.255 - 10.1.0.20 = Tráfego para um IP específico (32 bits)


3. Deletar uma Rota

ip route del DESTINO [via GATEWAY]

Exemplos:

# Deletar rota padrão
ip route del default

# Deletar rota específica
ip route del 10.1.0.0/24 via 10.2.0.2

# Deletar todas as rotas para um destino
ip route del 192.168.1.0/24

4. Substituir uma Rota

ip route replace DESTINO via NOVO_GATEWAY

Útil para: Mudar o gateway de uma rota existente sem deletar/re-adicionar.

# Mudar gateway padrão
ip route replace default via 10.7.0.2

📊 Tabela de Formatos de Destino

Formato Significado Exemplo Hosts
default Qualquer destino desconhecido default via 10.4.0.1 Infinitos
/24 Rede inteira (máscara /24) 10.1.0.0/24 256
/25 Meia rede 10.1.0.0/25 128
/32 Um IP específico 192.168.1.100 1
/8 Rede enorme 10.0.0.0/8 16M

🔍 Entendendo Máscaras (/24, /25, /32)

O número após a barra indica quantos bits são endereço de rede.

/24 = 24 bits de rede + 8 bits de hosts = 2^8 = 256 endereços
/25 = 25 bits de rede + 7 bits de hosts = 2^7 = 128 endereços
/32 = 32 bits de rede + 0 bits de hosts = 2^0 = 1 endereço (um IP!)

📋 Exemplos Práticos com ip route

Exemplo 1: Configurar Gateway Padrão

# Um computador em filial precisa alcançar matriz
# Filial: 10.4.0.0/24
# Gateway da filial: 10.4.0.1
# Matriz: 10.1.0.0/24

docker exec pc1_br1 ip route add default via 10.4.0.1

# Agora qualquer tráfego para destinos desconhecidos vai para 10.4.0.1

Exemplo 2: Rota Específica para Uma Rede

# R1_HQ precisa alcançar Filial 1 via R2
# R1_HQ: 10.1.0.1 (não está na filial)
# Filial 1: 10.4.0.0/24
# R2: tem interface em 10.2.0.2

docker exec r1_hq ip route add 10.4.0.0/24 via 10.2.0.2

# Agora qualquer pacote para 10.4.0.x vai via R2

Exemplo 3: Rota para um IP Único

# Acessar servidor específico via host específico
docker exec admin_pc ip route add 203.0.113.100 via 10.1.0.1

# Pacotes para 203.0.113.100 vão sempre via 10.1.0.1
# Mas pacotes para 203.0.113.101 usariam outra rota

⚠️ Ordem de Prioridade de Rotas

O Linux escolhe a rota mais específica primeiro:

# Se você tem essas rotas:
ip route add default via 10.4.0.1              # Menos específica
ip route add 10.1.0.0/24 via 10.2.0.1          # Mais específica
ip route add 10.1.0.20 via 10.3.0.1            # Muito específica!

# Pacote para 10.1.0.20:
# ❌ Não usa "default via 10.4.0.1"
# ❌ Não usa "10.1.0.0/24 via 10.2.0.1"
# ✅ Usa "10.1.0.20 via 10.3.0.1" (mais específica!)

# Pacote para 10.1.0.50:
# ❌ Não usa "default via 10.4.0.1"
# ✅ Usa "10.1.0.0/24 via 10.2.0.1" (mais específica que default)

# Pacote para 203.0.113.50:
# ✅ Usa "default via 10.4.0.1" (nenhuma rota específica)

iptables - Firewall

O que é iptables?

iptables é um firewall de camada 3/4 (IP/TCP/UDP) do Linux. Controla quais pacotes podem passar (ACCEPT), devem ser descartados (DROP) ou rejeitados (REJECT).

Pense como um guarda de segurança que inspeciona cada pacote e decide se deixa passar.


Estrutura Básica

iptables [OPÇÃO] [CADEIA] [CRITÉRIO] -j AÇÃO
                                                                      └─ Ação (ACCEPT, DROP, REJECT)
                         └─ Condições (source, destination, port, etc)
                └─ Cadeia (FORWARD, INPUT, OUTPUT)
         └─ Operação (-A add, -D delete, -L list, -F flush)

Cadeias (Chains)

iptables tem 3 cadeias principais:

Cadeia Significado Uso
INPUT Tráfego chegando neste host Bloquear conexões de entrada
OUTPUT Tráfego saindo deste host Bloquear conexões de saída
FORWARD Tráfego passando através (roteado) Bloquear entre redes (firewalls)

Observação: Usamos FORWARD em um roteador, visto que não um host simples.


Estrutura de Tabelas

iptables usa tabelas para diferentes tipos de processamento:

Tabela Função Comum
filter Filtrar pacotes (ACCEPT/DROP/REJECT) ✅ Mais usada
nat Tradução de endereços (MASQUERADE) ✅ Para NAT
mangle Modificar propriedades do pacote ⚠️ Avançado
raw Processamento de baixo nível ⚠️ Muito avançado

Padrão: Se não especificar -t, usa filter.


Principais Operações

1. Listar Regras

# Ver todas as regras (tabela filter)
iptables -L

# Ver com números de linha
iptables -L -n --line-numbers

# Ver na tabela NAT
iptables -t nat -L

# Ver com verbosidade
iptables -L -v

Exemplo de saída:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num  target     prot opt source               destination
1    DROP       all  --  10.4.0.0/24          10.5.0.0/24
2    DROP       all  --  10.5.0.0/24          10.4.0.0/24


2. Adicionar Regra

iptables -A CADEIA -s SOURCE -d DESTINATION [OPÇÕES] -j AÇÃO
                                                                  └─ Destino IP  └─ Ação final
                  └─ Source IP
           └─ Cadeia (INPUT/OUTPUT/FORWARD)
         └─ Append (adiciona ao final)

Exemplos:

# Bloquear tráfego de uma rede para outra
iptables -A FORWARD -s 10.4.0.0/24 -d 10.5.0.0/24 -j DROP

# Permitir tráfego específico
iptables -A FORWARD -s 10.1.0.0/24 -d 10.6.0.0/24 -j ACCEPT

# Usar porta
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

# Usar protocolo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. Deletar Regra

# Deletar por número (ver com -L --line-numbers)
iptables -D CADEIA NÚMERO

# Deletar a regra inteira
iptables -D CADEIA -s SOURCE -d DESTINATION -j AÇÃO

Exemplos:

# Deletar regra 1 da cadeia FORWARD
iptables -D FORWARD 1

# Deletar uma regra específica
iptables -D FORWARD -s 10.4.0.0/24 -d 10.5.0.0/24 -j DROP

4. Limpar Todas as Regras

# Limpar uma cadeia
iptables -F FORWARD

# Limpar tudo (INPUT, OUTPUT, FORWARD)
iptables -F

# Limpar tabela NAT
iptables -t nat -F

⚠️ CUIDADO: Pode bloquear seu acesso se não souber o que está fazendo!


📊 Critérios Comuns

Critério Flag Significado Exemplo
Source IP -s De qual IP/rede -s 10.4.0.0/24
Destination IP -d Para qual IP/rede -d 10.1.0.20
Protocolo -p TCP/UDP/ICMP -p tcp
Porta Origem --sport De qual porta --sport 5000
Porta Destino --dport Para qual porta --dport 80
Interface -i (INPUT/FORWARD) Interface de entrada -i eth0
Interface Saída -o (OUTPUT/FORWARD) Interface de saída -o eth1
Estado -m state --state Estado da conexão --state NEW

Ações (Targets)

Ação Significado
ACCEPT Permite o pacote passar
DROP Descarta silenciosamente (sem responder)
REJECT Rejeita e envia mensagem de erro
MASQUERADE Traduz endereço origem (NAT)
DNAT Traduz endereço destino
SNAT Traduz endereço origem

📋 Exemplos Práticos com iptables

Exemplo 1: Bloquear Tráfego entre Filiais

# Bloquear Filial 1 → Filial 2
iptables -A FORWARD -s 10.4.0.0/24 -d 10.5.0.0/24 -j DROP

# Bloquear Filial 2 → Filial 1
iptables -A FORWARD -s 10.5.0.0/24 -d 10.4.0.0/24 -j DROP

# Verificar
iptables -L -n | grep DROP

Exemplo 2: Proteger Banco de Dados

# Bloquear Filial 1 acessando BD
iptables -A FORWARD -s 10.4.0.0/24 -d 10.1.0.20 -j DROP

# Bloquear Filial 2 acessando BD
iptables -A FORWARD -s 10.5.0.0/24 -d 10.1.0.20 -j DROP

# Permitir Admin acessar BD (exemplo - se tivessem regra de bloqueio)
# iptables -A FORWARD -s 10.6.0.10 -d 10.1.0.20 -j ACCEPT

Exemplo 3: Permitir HTTP/HTTPS

# Permitir HTTP (porta 80)
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

# Permitir HTTPS (porta 443)
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT

# Bloquear todo o resto
iptables -A FORWARD -j DROP

Exemplo 4: Stateful Firewall (Proteção contra Ataques)

# Bloquear novas conexões vindo da Internet
iptables -A FORWARD -s 203.0.113.0/24 -d 10.0.0.0/8 -m state --state NEW -j DROP

# O que isso faz:
# ❌ Internet iniciando conexão = BLOQUEADO (NEW)
# ✅ Internet respondendo = PERMITIDO (ESTABLISHED)

🔒 Diferença entre DROP e REJECT

# DROP - Descarta silenciosamente
iptables -A FORWARD -s 10.4.0.0/24 -d 10.5.0.0/24 -j DROP

# Resultado: Pacote desaparece, sem resposta
# Quem enviou acha que está muito lento

# REJECT - Rejeita e responde
iptables -A FORWARD -s 10.4.0.0/24 -d 10.5.0.0/24 -j REJECT

# Resultado: Pacote é descartado + "Destino inacessível"
# Quem enviou sabe imediatamente que foi bloqueado

Qual usar? - DROP = Mais seguro (hacker não sabe se foi bloqueado) - REJECT = Mais rápido (feedback imediato)


🧬 NAT (Network Address Translation)

NAT traduz endereços privados em públicos (ou vice-versa).

MASQUERADE (NAT de Saída)

# Em tabela NAT, cadeia POSTROUTING
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE

# Significado:
# Qualquer pacote da rede interna (10.0.0.0/8)
# sai disfarçado como se fosse de R4

Como funciona:

PC1 (10.4.0.10) → Servidor Internet (203.0.113.10)
Pacote original:
  Source: 10.4.0.10
  Destination: 203.0.113.10

Depois de MASQUERADE em R4:
  Source: 203.0.113.1 (IP de R4)
  Destination: 203.0.113.10

Resposta:
  Source: 203.0.113.10
  Destination: 203.0.113.1 (R4)

R4 traduz de volta:
  Source: 203.0.113.10
  Destination: 10.4.0.10 (PC1)

PC1 recebe resposta ✅

Resumo Rápido

ip route - Roteamento

# Ver rotas
ip route

# Adicionar rota padrão
ip route add default via GATEWAY

# Adicionar rota específica
ip route add REDE/MÁSCARA via GATEWAY

# Deletar rota
ip route del DESTINO

iptables - Firewall

# Ver regras
iptables -L

# Bloquear tráfego
iptables -A FORWARD -s SOURCE -d DESTINATION -j DROP

# Permitir tráfego
iptables -A FORWARD -s SOURCE -d DESTINATION -j ACCEPT

# NAT (disfarçar)
iptables -t nat -A POSTROUTING -s SOURCE -j MASQUERADE

Próximos Passos

  1. Praticar: Use esses comandos no laboratório
  2. Experimentar: Mude rotas e regras, veja o que quebra
  3. Debugar: Use ip route e iptables -L para entender

Recursos Adicionais

# Manual completo
man ip-route
man iptables

# Ver opções
ip route help
iptables --help