Duração: 70 minutos (explicação 20, prática guiada 40, verificação 10). Resultados dos TdR trabalhados: Conceber, configurar e administrar redes pequenas, médias e grandes; Competências profissionais e de formador replicador.
Objectivos
- Explicar as camadas do modelo TCP/IP e a sua correspondência com o modelo OSI.
- Identificar, numa captura, cabeçalhos Ethernet, IP e TCP/UDP de um mesmo pacote.
- Criar e desfazer a rede de prática isolada usada em todo o curso.
Porque se fala em camadas
Uma comunicação em rede é dividida em funções independentes. Cada camada resolve um problema e entrega o resultado à camada seguinte: a aplicação produz dados; o transporte (TCP ou UDP) separa conversas por portas; a rede (IP) leva o pacote de um endereço a outro, atravessando encaminhadores; a ligação (Ethernet, Wi-Fi) leva a trama ao vizinho seguinte; a camada física transforma bits em sinal eléctrico, luz ou rádio.
O modelo OSI tem sete camadas (física, ligação de dados, rede, transporte, sessão, apresentação, aplicação); o modelo TCP/IP, usado na prática, junta as três superiores numa camada de aplicação. O OSI continua útil como vocabulário de diagnóstico: dizer «o problema é de camada 2» significa que a trama não chega ao vizinho, mesmo que o endereço IP esteja certo.
Encapsulamento
Quando o pc-adm pede uma página ao servidor, o pedido HTTP é colocado num segmento TCP (porta de destino 80), este num pacote IP (origem 10.10.10.10, destino 10.10.20.53) e este numa trama Ethernet (endereços MAC do pc-adm e do r1). Em cada encaminhador a trama é substituída por outra; o pacote IP mantém origem e destino (salvo NAT, módulo 3).
Esta ideia explica porque é que o endereço MAC muda em cada troço e o IP não, e porque é que um filtro de firewall pode decidir por endereço IP (camada 3) ou por porta (camada 4).
Caso fictício
Na DPE (fictícia), o técnico Manuel recebe a queixa «a internet não funciona» vinda da Administração. Sem método, reinicia o encaminhador e interrompe toda a sede. Nesta lição a turma aprende a descrever o problema por camadas antes de agir.
Prática guiada em rede isolada
Rede de prática fictícia, criada dentro de um computador de prática com o script base (módulo 1, lição 1). Nunca use estes passos na rede de produção nem contra endereços reais. As saídas mostradas são exemplos didácticos, não resultados de uma execução.
Topologia (descrição em texto)
- pc-adm (10.10.10.10) — ligado a r1 pela VLAN 10.
- srv (10.10.20.53) — ligado a r1 pela VLAN 20.
- r1 (encaminhador da sede) — ligado a pc-adm, srv, r2 e isp.
- r2 (encaminhador da delegação) — ligado a r1 e a pc-del (10.20.10.10).
- isp (operador simulado) — ligado a r1 e ao servidor externo 198.51.100.10 (endereço dentro de isp).
Passos
Numa máquina virtual Debian 12 descartável e isolada, guarde e corra primeiro a pré-verificação lab-verificar.sh. Só avance se terminar com «Pré-verificação OK» (sem colisões de nomes nem dependências em falta).
#!/bin/sh # lab-verificar.sh — pré-verificação da rede de prática DPE (fictícia). # Não cria nem apaga nada. Termina com código 1 se houver colisão ou dependência em falta. erro=0 [ "$(id -u)" = 0 ] || { echo 'Executar como root na VM de prática.'; exit 1; } if systemd-detect-virt -q 2>/dev/null; then echo "Virtualização: $(systemd-detect-virt)"; else echo 'AVISO: não parece ser uma máquina virtual. Use uma VM descartável.'; erro=1; fi for n in pc-adm srv r1 r2 pc-del isp; do if ip netns list | awk '{print $1}' | grep -qx "$n"; then echo "Colisão: espaço de nomes $n já existe."; erro=1; fi done for d in ip tcpdump tshark python3 nft; do command -v $d >/dev/null || { echo "Em falta: $d"; erro=1; }; done echo 'Pacotes Debian 12 necessários (instalar a partir de espelho/cópia local aprovada, antes da aula): iproute2 tcpdump tshark python3 nftables. Opcionais por lição: frr kea-dhcp4-server bind9 rsyslog chrony wireguard-tools suricata iperf3 snmp arping traceroute.' [ $erro = 0 ] && echo 'Pré-verificação OK.' || echo 'Pré-verificação FALHOU: corrigir antes de criar a rede.' exit $erroGuarde o script base num ficheiro lab-base.sh, torne-o executável e corra-o como administrador do computador de prática.
#!/bin/sh # lab-base.sh — rede de prática isolada DPE (fictícia). Só em computador de prática. set -e for n in pc-adm srv r1 r2 pc-del isp; do ip netns add $n; done ligar() { ip link add $1-$2 type veth peer name $2-$1; ip link set $1-$2 netns $1; ip link set $2-$1 netns $2; } ligar pc-adm r1; ligar srv r1; ligar r1 r2; ligar r2 pc-del; ligar r1 isp ip -n pc-adm addr add 10.10.10.10/24 dev pc-adm-r1 ip -n r1 addr add 10.10.10.1/24 dev r1-pc-adm ip -n srv addr add 10.10.20.53/24 dev srv-r1 ip -n r1 addr add 10.10.20.1/24 dev r1-srv ip -n r1 addr add 10.255.0.1/30 dev r1-r2 ip -n r2 addr add 10.255.0.2/30 dev r2-r1 ip -n r2 addr add 10.20.10.1/24 dev r2-pc-del ip -n pc-del addr add 10.20.10.10/24 dev pc-del-r2 ip -n r1 addr add 203.0.113.2/24 dev r1-isp ip -n isp addr add 203.0.113.1/24 dev isp-r1 ip -n isp addr add 198.51.100.10/32 dev lo for n in pc-adm srv r1 r2 pc-del isp; do ip -n $n link set lo up; for i in $(ip -n $n -o link show | awk -F': ' '{print $2}' | cut -d@ -f1 | grep -v '^lo$'); do ip -n $n link set $i up; done; done ip netns exec r1 sysctl -qw net.ipv4.ip_forward=1 ip netns exec r2 sysctl -qw net.ipv4.ip_forward=1 ip -n pc-adm route add default via 10.10.10.1 ip -n srv route add default via 10.10.20.1 ip -n pc-del route add default via 10.20.10.1 echo 'Rede DPE criada (sem rotas entre sede e delegação: ver módulo 3).' # depois de guardar: chmod +x lab-base.sh && sudo ./lab-base.shGuarde também o script de reversão lab-remover.sh.
#!/bin/sh # lab-remover.sh — limpa apenas os espaços de nomes da rede de prática DPE. for n in pc-adm srv r1 r2 pc-del isp; do ip netns list | awk '{print $1}' | grep -qx "$n" || continue for p in $(ip netns pids $n); do echo "$n: a terminar PID $p ($(cat /proc/$p/comm 2>/dev/null))"; kill -TERM $p; done sleep 2 resto=$(ip netns pids $n) if [ -n "$resto" ]; then echo "$n: ainda activos: $resto — verifique manualmente (kill -KILL <PID>) e volte a correr."; continue; fi ip netns del $n && echo "$n: apagado" done echo 'Espaços de nomes extra criados em lições (t1..t3, sw, rt, a1, s1, vis, casa, sa..sc) têm reversão própria em cada lição.' echo 'NÃO é reversão total: ficheiros em /tmp criados pelas lições e pacotes instalados na VM não são removidos por este script; confira a secção «Reverter» de cada lição. A forma segura de repor tudo é descartar a VM.'Confirme os espaços de nomes criados e o endereço do pc-adm.
sudo ip netns list sudo ip -n pc-adm -brief addrSaída de exemplo (didáctica):
pc-adm-r1@if5 UP 10.10.10.10/24 lo UNKNOWN 127.0.0.1/8 ::1/128Numa segunda consola, capture no r1 enquanto o pc-adm envia um ping ao servidor.
sudo ip netns exec r1 tcpdump -ni r1-pc-adm -e -c 2 icmp sudo ip netns exec pc-adm ping -c 1 10.10.20.53Saída de exemplo (didáctica):
aa:aa:aa:00:00:10 > aa:aa:aa:00:00:01, ethertype IPv4 (0x0800), length 98: 10.10.10.10 > 10.10.20.53: ICMP echo request aa:aa:aa:00:00:01 > aa:aa:aa:00:00:10, ethertype IPv4 (0x0800), length 98: 10.10.20.53 > 10.10.10.10: ICMP echo replyIdentifique na saída o que pertence à camada 2 (endereços MAC, ethertype) e à camada 3 (endereços IP). Os MAC reais do seu computador serão diferentes dos do exemplo.
Critérios de sucesso
- O comando ip netns list mostra os seis espaços de nomes.
- O ping do pc-adm ao srv recebe resposta (o r1 encaminha entre as duas redes).
- O formando aponta correctamente, na captura, os campos de camada 2 e de camada 3.
Como desfazer (reversão)
- sudo ./lab-remover.sh termina os processos de cada espaço de nomes do laboratório (PID a PID) e só depois apaga esses espaços de nomes; se algum processo resistir, o script avisa e não apaga.
- Não é reversão total: ficheiros em /tmp e pacotes instalados ficam; a forma segura de repor tudo é descartar a máquina virtual.
Alternativa em papel: tarefas e respostas esperadas
- Ordene de cima para baixo as camadas TCP/IP e diga a unidade de dados de cada uma.
- Aplicação (dados/mensagem); transporte (segmento TCP ou datagrama UDP); rede/Internet (pacote); ligação (trama); física (bits).
- Na saída de exemplo do passo 4, que campo muda quando o pacote passa do r1 para o srv?
- Os endereços MAC (nova trama no troço r1–srv). Os endereços IP 10.10.10.10 e 10.10.20.53 mantêm-se.
- Reescreva a queixa «a internet não funciona» em três perguntas por camadas.
- Física/ligação: o cabo ou o Wi-Fi está ligado e com ligação? Rede: o computador tem endereço e alcança a porta 10.10.10.1? Aplicação: o nome do sítio resolve (DNS) e o serviço responde?
Verifique o que aprendeu
Questão 1
Um pacote vai do pc-adm (10.10.10.10) ao srv (10.10.20.53) passando pelo r1. O que se mantém de ponta a ponta?
- Os endereços MAC de origem e destino
- Os endereços IP de origem e destino
- O número da VLAN
- Nada se mantém
Ver resposta comentada
Resposta: Os endereços IP de origem e destino
A camada 3 é de ponta a ponta; a trama (camada 2) é refeita em cada troço. A VLAN é local a cada ligação. A excepção é o NAT, que altera endereços IP de propósito.
Questão 2
Um utilizador tem endereço IP correcto mas o cabo está partido. Em que camada está o problema?
- Aplicação
- Transporte
- Física
- Rede
Ver resposta comentada
Resposta: Física
Sem sinal não há trama nem pacote: a configuração IP pode estar perfeita e mesmo assim nada passa. Por isso o diagnóstico começa por baixo.
Em leitura fácil
- A rede funciona por andares, chamados camadas.
- Cada andar faz um trabalho: o cabo leva sinal, o IP leva o pacote ao destino, a aplicação mostra a página.
- Quando algo falha, veja primeiro o andar de baixo.
Fontes
- IETF RFC 791 — Internet Protocol (https://www.rfc-editor.org/rfc/rfc791)
- IETF RFC 1918 — Address Allocation for Private Internets (https://www.rfc-editor.org/rfc/rfc1918)
- IETF RFC 5737 — IPv4 Address Blocks Reserved for Documentation (https://www.rfc-editor.org/rfc/rfc5737)
- Linux iproute2 — páginas de manual ip(8), ip-netns(8), bridge(8), tc(8) (https://man7.org/linux/man-pages/man8/ip.8.html)
- tcpdump/libpcap — manual tcpdump(1) e pcap-filter(7) (https://www.tcpdump.org/manpages/)
