Camada de Aplicação & Protocolos layers

DHCP, BOOTP, DNS

info Camada de Aplicação

A Camada de Aplicação (OSI Layer 7) é a interface entre usuários e a rede, oferecendo serviços como atribuição dinâmica de IPs (DHCP), resolução de nomes (DNS), e inicialização legada (BOOTP). Esses protocolos usam UDP/TCP (Camada 4) e IP (Camada 3) para operar.

Por que isso importa?

Como seu dispositivo obtém um IP ao conectar ao Wi-Fi? Como navegadores traduzem example.com em um endereço IP? DHCP e DNS são essenciais para essas tarefas, enquanto BOOTP ilustra a evolução dos protocolos de rede.

O que veremos

  • dns DHCP: Atribuição dinâmica de IPs via processo DORA (Discover, Offer, Request, Ack).
  • history BOOTP:(Bootstrap Protocol) Precursor do DHCP, usado para inicialização de dispositivos sem disco.
  • public DNS: Hierarquia, resolução de nomes, caching, segurança (DNSSEC), e tipos de registros (A, AAAA, MX, CNAME).
  • router Configuração: Servidor DNS/DHCP local com dnsmasq.
  • forum Debate: Centralização (DNS) vs. descentralização (P2P).
  • terminal Ferramentas: dig, nslookup, host, systemd-resolve, zenmap (visualização de rede).

Exemplo Inicial

dns_example.txt
$ dig @8.8.8.8 example.com A +noall +answer
example.com. 3600 IN A 93.184.216.34

Tabela de Protocolos

Protocolo Função Transporte Exemplo de Uso
DHCP Atribuir IPs dinamicamente UDP (67-68) Modem obtendo IP do ISP
BOOTP Inicializar dispositivos sem disco UDP (67-68) Estações legadas
DNS Mapear nomes a IPs UDP/TCP (53) Navegação web

Boas Práticas Iniciais

  • Use servidores DNS confiáveis (ex.: 8.8.8.8, 1.1.1.1) com DNSSEC.
  • Configure intervalos DHCP para evitar conflitos de IP.
  • Execute zenmap com permissões adequadas e em redes autorizadas.

Referências

Kurose & Ross, Computer Networking, 2.5; Tanenbaum, Computer Networks, 7.1.

DHCP & BOOTP router

Atribuição Dinâmica e Boot em Rede

info DHCP e BOOTP na Camada 7

DHCP (Dynamic Host Configuration Protocol) e BOOTP (Bootstrap Protocol) operam na Camada de Aplicação, fornecendo endereços IP e configurações via UDP (portas 67-68). O DHCP atribui IPs dinamicamente (DORA), enquanto o BOOTP suporta boot em rede para máquinas sem disco com IPs estáticos.

Fluxo de Mensagens DHCP (DORA)

  • search DHCPDISCOVER: Cliente envia broadcast para localizar servidores DHCP.
  • offer DHCPOFFER: Servidor responde com proposta de IP e configurações.
  • check_circle DHCPREQUEST: Cliente solicita o IP oferecido.
  • done DHCPACK: Servidor confirma a concessão do lease.

Configuração do Servidor DHCP (ISC-DHCP)

dhcpd.conf
# /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 1.1.1.1;
option domain-name "aula13.local";
option broadcast-address 192.168.1.255;
host static-client {
hardware ethernet aa:bb:cc:dd:ee:ff;
fixed-address 192.168.1.200;
}
}
$ sudo systemctl restart isc-dhcp-server
$ journalctl -u isc-dhcp-server -f

Teste DHCP

dhcp_test.txt
$ sudo dhclient -v eth0
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER from 192.168.1.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK on 192.168.1.100 from 192.168.1.1
$ ip addr show eth0
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0

BOOTP: Boot em Rede (Legado)

  • Função: Inicializa máquinas sem disco, atribuindo IPs estáticos e indicando imagem de boot via TFTP.
  • Uso: Estações Unix, thin clients, dispositivos embarcados (ex.: Sun SPARC).
  • Configuração: Mapeia endereços MAC a IPs e arquivos de boot em /etc/bootptab.

Configuração do Servidor BOOTP

bootptab
# /etc/bootptab
client1:\
ha=00:16:3e:12:34:56:\
ip=192.168.1.100:\
sm=255.255.255.0:\
gw=192.168.1.1:\
bf=/tftpboot/kernel.img:\
hn=client1.aula13.local
$ sudo apt install bootp tftpd-hpa
$ sudo mkdir -p /tftpboot
$ sudo cp /path/to/kernel.img /tftpboot/
$ sudo chmod -R 755 /tftpboot
$ sudo systemctl restart bootpd tftpd-hpa

Teste BOOTP

bootp_test.txt
$ sudo bootpd -d
BOOTP request from 00:16:3e:12:34:56
Reply: IP=192.168.1.100, File=/tftpboot/kernel.img

$ tftp 192.168.1.1
tftp> get kernel.img
Received 1234567 bytes in 0.5 seconds

Comparação: DHCP vs. BOOTP

Característica DHCP BOOTP
Atribuição de IP Dinâmica e estática (DORA) Estática (mapeamento MAC)
Protocolo UDP (67-68) UDP (67-68)
Funcionalidade Gerenciamento completo de IPs Inicialização de dispositivos
Exemplo de Uso Wi-Fi, redes corporativas Thin clients, estações Unix
Suporte a Leasing Sim (renovação automática) Não

Boas Práticas

  • DHCP: Defina intervalos exclusivos (range) e reservas estáticas para evitar conflitos.
  • BOOTP: Mantenha /etc/bootptab atualizado e restrinja TFTP a redes locais (ufw allow from 192.168.1.0/24 to any port 69).
  • Monitore logs: journalctl -u isc-dhcp-server ou tail -f /var/log/syslog.
  • Use servidores redundantes para alta disponibilidade.

Resolução de Problemas

  • DHCP não atribui IP: Verifique interface (ip link) e serviço (systemctl status isc-dhcp-server).
  • BOOTP falha: Confirme mapeamento em /etc/bootptab e permissões em /tftpboot (chmod -R 755 /tftpboot).
  • Portas bloqueadas: Cheque UDP 67-68 e 69 com netstat -tuln | grep ':67\|:69'.

DNS – Hierarquia & Resolução dns

Sistema de Nomes Distribuído

info O que é DNS?

O DNS (Domain Name System) é um protocolo da Camada de Aplicação que mapeia nomes de domínio (ex.: example.com) a endereços IP, usando UDP (porta 53) para consultas rápidas e TCP para transferências de zona. Sua hierarquia distribuída, caching, e DNSSEC garantem escalabilidade e segurança.

Por que DNS?

  • public Escalabilidade: Divide o espaço de nomes em zonas (raiz, TLDs, domínios), geridas por servidores autoritativos.
  • search Resolução:
    • Recursiva: Resolvedor busca a resposta final, consultando múltiplos servidores.
    • Iterativa: Servidor aponta para o próximo nó (raiz → TLD → autoritativo).
  • cached Caching: Registros (RRs) têm TTL, reduzindo latência e carga nos servidores.
  • security Segurança: DNSSEC autentica respostas, mitigando spoofing e cache poisoning.

DNSSEC: Autenticidade e Integridade

security O que é DNSSEC?

O DNSSEC (DNS Security Extensions) usa criptografia para garantir autenticidade e integridade das respostas DNS, protegendo contra ataques como cache poisoning e spoofing.

  • RRSIG: Assinaturas digitais para cada conjunto de registros (RRset).
  • DNSKEY: ZSK (Zone Signing Key) assina dados da zona; KSK (Key Signing Key) assina ZSK, com DS (Delegation Signer) na zona pai.
  • NSEC/NSEC3: Provas criptográficas de inexistência de nome ou tipo; NSEC3 usa hash para privacidade.

Exemplo de Validação:

dig_dnssec.txt
$ dig +dnssec example.com A
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
example.com. 3600 IN RRSIG A 13 2 3600 20250730... ...
;; DNSKEY SECTION:
example.com. 3600 IN DNSKEY 256 3 13 ...
example.com. 3600 IN RRSIG DNSKEY 13 2 3600 ...
;; Query time: 50 msec

Exemplo Prático: Resolução com dig +trace

dig_trace.txt
$ dig +trace example.com
; answers
. 518400 IN NS a.root-servers.net.
; com. answers
com. 172800 IN NS a.gtld-servers.net.
; example.com. answers
example.com. 3600 IN A 93.184.216.34
;; Received 1 records

Exemplo: Consultas Diversas

dns_commands.txt
# Consulta A
$ dig @8.8.8.8 example.com A +noall +answer
example.com. 3600 IN A 93.184.216.34

# Consulta MX
$ nslookup -type=MX example.com 8.8.8.8
example.com mail exchanger = 10 mail.example.com.

# Reverse Lookup
$ host -t PTR 93.184.216.34
34.216.184.93.in-addr.arpa domain name pointer example.com.

# DNSSEC Validação
$ dig +dnssec +noall +answer sigok.verteiltesysteme.net A
sigok.verteiltesysteme.net. 3600 IN A 139.18.25.36
sigok.verteiltesysteme.net. 3600 IN RRSIG A 8 3 3600 ...

# Cache Status
$ systemd-resolve --statistics
Cache: 100 hits, 20 misses

Principais Tipos de Registro

Tipo Uso Exemplo TTL (s)
A Endereço IPv4 example.com. → 93.184.216.34 3600
AAAA Endereço IPv6 example.com. → 2606:2800:220:1:248:1893:25c8:1946 3600
CNAME Alias para outro nome www → example.com. 3600
MX Servidor de e-mail example.com. → 10 mail.example.com. 3600
PTR Resolução inversa 34.216.184.93.in-addr.arpa. → example.com. 3600
SOA Parâmetros da zona example.com. → ns1.example.com. 86400
RRSIG Assinatura DNSSEC example.com. → A 13 2 3600 ... 3600
DNSKEY Chave pública DNSSEC example.com. → 256 3 13 ... 3600
NSEC/NSEC3 Prova de inexistência example.com. → next domain 3600

Configuração DNSSEC no dnsmasq

dnsmasq.conf
# /etc/dnsmasq.conf
dnssec
dnssec-check-unsigned
server=8.8.8.8
server=1.1.1.1
$ sudo systemctl restart dnsmasq
$ journalctl -u dnsmasq -f
dnsmasq: validated example.com is 93.184.216.34

Boas Práticas

  • Habilite DNSSEC em resolvedores (dnssec-enable yes no BIND, dnssec no dnsmasq.conf).
  • Valide respostas com dig +dnssec (busque flag ad).
  • Use servidores DNS confiáveis (ex.: 8.8.8.8, 1.1.1.1) com suporte a DNSSEC.
  • Limpe cache regularmente: sudo systemd-resolve --flush-caches.
  • Monitore logs do dnsmasq para validações DNSSEC (journalctl -u dnsmasq).

Resolução de Problemas

  • Validação DNSSEC falha: Verifique suporte no servidor (dig +dnssec +noall +answer sigok.verteiltesysteme.net).
  • Servidor não responde: Teste com servidor alternativo (dig @1.1.1.1) ou cheque porta 53 (netstat -tuln | grep :53).
  • Cache desatualizado: Limpe com sudo systemd-resolve --flush-caches.

Servidor Local (dnsmasq) settings

DNS, DHCP e TFTP Simples

info O que é dnsmasq?

O dnsmasq é um daemon leve da Camada de Aplicação que combina cache DNS, encaminhamento de consultas, servidor DHCP, e suporte a TFTP/PXE. Ideal para roteadores domésticos (ex.: OpenWrt), laboratórios de rede, e sistemas embarcados devido à sua simplicidade e baixo consumo de recursos.

Principais Recursos

Funcionalidade Descrição Exemplo de Uso
Cache DNS Armazena respostas DNS para acelerar consultas Reduzir latência em redes locais
Forwarder DNS Encaminha consultas a servidores upstream Consultas a 8.8.8.8
Servidor DHCP Atribui IPs dinamicamente via DORA Gerenciar IPs em LAN
TFTP/PXE Suporta boot em rede para dispositivos sem disco Thin clients, inicialização PXE

Configuração do dnsmasq

dnsmasq.conf
# /etc/dnsmasq.conf
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=3,192.168.1.1 # Gateway
dhcp-option=6,8.8.8.8,1.1.1.1 # Servidores DNS
server=8.8.8.8
server=1.1.1.1
cache-size=1000
address=/minhaserie.local/192.168.1.10
dhcp-host=00:16:3e:12:34:56,192.168.1.50 # Reserva estática
enable-tftp
tftp-root=/tftpboot
$ sudo apt install dnsmasq
$ sudo mkdir -p /tftpboot
$ sudo cp /path/to/kernel.img /tftpboot/
$ sudo chmod -R 755 /tftpboot
$ sudo systemctl restart dnsmasq

Testes Práticos

dnsmasq_test.txt
# Teste DNS
$ dig @127.0.0.1 minhaserie.local
minhaserie.local. 0 IN A 192.168.1.10

# Teste DHCP
$ sudo dhclient -v eth0
DHCPDISCOVER on eth0 to 255.255.255.255 port 67
DHCPOFFER from 192.168.1.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK on 192.168.1.100 from 192.168.1.1
$ ip addr show eth0
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0

# Teste TFTP
$ tftp 192.168.1.1
tftp> get kernel.img
Received 1234567 bytes in 0.5 seconds

# Verificar cache
$ journalctl -u dnsmasq -f
dnsmasq: query[A] minhaserie.local from 127.0.0.1
dnsmasq: cached minhaserie.local is 192.168.1.10

Quando Usar dnsmasq?

  • Roteadores domésticos (ex.: OpenWrt, Raspberry Pi) para DNS/DHCP local.
  • Laboratórios de rede para testes rápidos sem BIND ou ISC-DHCP.
  • Ambientes embarcados com recursos limitados.
  • Boot em rede com TFTP/PXE para thin clients.

Boas Práticas

  • Restrinja o dnsmasq à interface local (interface=eth0).
  • Habilite DNSSEC (dnssec no dnsmasq.conf).
  • Use reservas estáticas para dispositivos críticos (dhcp-host).
  • Monitore logs (log-queries, log-dhcp) com journalctl -u dnsmasq.
  • Proteja o TFTP com firewall (ufw allow from 192.168.1.0/24 to any port 69).

Resolução de Problemas

  • Serviço não inicia: Verifique conflitos de porta (netstat -tuln | grep ':53\|:67\|:69').
  • DHCP falha: Confirme intervalo em dhcp-range e interface ativa (ip link).
  • DNS não resolve: Teste servidores upstream (dig @8.8.8.8).
  • TFTP inacessível: Verifique permissões em /tftpboot (chmod -R 755 /tftpboot).

Debate: Centralização vs. Descentralização compare_arrows

Arquiteturas em DNS, DHCP e BOOTP

lightbulb Por que debater?

Centralização (ex.: DNS público, DHCP central) oferece gestão simplificada, mas cria pontos de falha. Descentralização (ex.: P2P, relay agents, dnsmasq) aumenta resiliência, mas adiciona complexidade. Entender essas arquiteturas é crucial para serviços da Camada de Aplicação (DNS, DHCP, BOOTP).

Comparação: Centralização vs. Descentralização

Aspecto Centralização Descentralização
DNS Público (raiz/TLDs, anycast) Local (dnsmasq, split-horizon)
DHCP Servidor central (isc-dhcp-server) Relay agents, dnsmasq
BOOTP Servidor único (bootpd, /etc/bootptab) Não aplicável (estático)
P2P Não aplicável Sistemas como IPFS, ENS
Vantagens Fácil gestão, padronização Resiliência, autonomia local
Riscos Ponto de falha, alvo de DDoS Complexidade, inconsistência

DNS Público vs. Interno

  • public DNS Público: Raiz/TLDs replicados via anycast (ex.: 8.8.8.8), alta disponibilidade, mas vulnerável a DDoS (ex.: ataque Dyn 2016) e cache poisoning.
  • business DNS Corporativo: Split-horizon DNS (ex.: BIND interno), regras personalizadas, maior segurança, mas exige manutenção.

DHCP Centralizado vs. Distribuído

  • dns Servidor Central: Gerencia todos os leases (ex.: isc-dhcp-server), fácil configuração, mas ponto único de falha.
  • share Relay Agents: Encaminha requisições a servidores centrais, reduz latência local, mas aumenta complexidade (ex.: `dhcrelay`).

BOOTP e Centralização

  • history BOOTP: Atribuição estática via `/etc/bootptab`, inerentemente centralizado, usado para boot em rede (ex.: thin clients).
  • Moderno: Substituído por DHCP/PXE em `dnsmasq`, que suporta boot distribuído.

Riscos e Mitigações

  • Amplificação DNS: Consultas forjadas geram respostas grandes (ex.: consulta MX amplificada).
  • Mitigações:
    • Rate limiting em resolvedores (dnsmasq: max-queries-per-source 100).
    • Anycast para dispersar tráfego (ex.: Cloudflare 1.1.1.1).
    • DNSSEC para autenticar respostas (dig +dnssec example.com).
  • DHCP/BOOTP: Conflitos de IP em sistemas centrais; relay agents podem falhar se mal configurados.

Exemplo Prático: Teste de Rede

dns_dhcp_test.txt
# Teste DNS Público
$ dig @8.8.8.8 example.com A
example.com. 3600 IN A 93.184.216.34

# Teste DNS Local (dnsmasq)
$ dig @192.168.1.1 minhaserie.local
minhaserie.local. 0 IN A 192.168.1.10

# Teste DHCP Relay
$ sudo dhcrelay -d 192.168.1.1
Relaying packets to DHCP server at 192.168.1.1

# Verificar Rede com Zenmap
$ nmap -sP 192.168.1.0/24
Host 192.168.1.1 is up (0.002s latency).
Host 192.168.1.10 is up (0.003s latency).

Boas Práticas

  • Habilite DNSSEC em resolvedores locais (dnssec no `dnsmasq.conf`).
  • Use relay agents para DHCP em grandes redes, com servidores redundantes.
  • Configure anycast para DNS público e firewall para mitigar DDoS (ufw limit proto udp from any to any port 53).
  • Em BOOTP, mantenha `/etc/bootptab` atualizado e restrinja TFTP (ufw allow from 192.168.1.0/24 to any port 69).

Resolução de Problemas

  • DNS Público fora: Use servidores alternativos (dig @1.1.1.1).
  • DHCP Relay falha: Verifique configuração do `dhcrelay` (journalctl -u isc-dhcp-relay).
  • Amplificação DNS: Habilite rate limiting e restrinja consultas abertas (dnsmasq: local-service).

Ferramentas terminal

Diagnóstico e Análise de Redes

info Ferramentas para Redes

Ferramentas como dig, nslookup, host, systemd-resolve, zenmap, whois, e tcpdump permitem diagnosticar e analisar serviços da Camada de Aplicação (DNS, DHCP, BOOTP) e redes locais. Usam UDP/TCP (53, 67-68, 69), ICMP, e TCP (43) para testes de DNS, DHCP, TFTP, e exploração de rede.

Ferramentas e Funções

Ferramenta Função Protocolo Uso
dig Consulta detalhada DNS UDP/TCP 53 Registros A, AAAA, MX, DNSSEC
nslookup Consulta DNS interativa UDP/TCP 53 Registros MX, CNAME
host Consulta DNS simplificada UDP/TCP 53 Reverse lookup (PTR), CNAME
systemd-resolve Gerencia resolvedores e cache UDP/TCP 53 Status de cache, DNS local
zenmap/nmap Exploração de rede ICMP, TCP Ping sweep, SYN scan, topologia
whois Dados de registro de domínio TCP 43 Informações de domínio
tcpdump Captura de tráfego UDP/TCP/ICMP Monitorar DNS, DHCP, TFTP

Consultas DNS

dns_tools.txt
# Consulta A
$ dig @8.8.8.8 example.com A +noall +answer
example.com. 3600 IN A 93.184.216.34

# Consulta AAAA
$ dig @8.8.8.8 example.com AAAA +noall +answer
example.com. 3600 IN AAAA 2606:2800:220:1:248:1893:25c8:1946

# Consulta MX
$ nslookup -type=MX example.com 8.8.8.8
example.com mail exchanger = 10 mail.example.com.

# Consulta CNAME
$ host -t CNAME www.example.com
www.example.com is an alias for example.com.

# DNSSEC Validação
$ dig +dnssec +noall +answer sigok.verteiltesysteme.net A
sigok.verteiltesysteme.net. 3600 IN A 139.18.25.36
sigok.verteiltesysteme.net. 3600 IN RRSIG A 8 3 3600 ...

# Cache Status
$ systemd-resolve --statistics
DNS Servers: 8.8.8.8 1.1.1.1
Cache: 150 hits, 10 misses

Exploração de Rede

nmap_test.txt
# Ping Sweep
$ nmap -sP 192.168.1.0/24
Host 192.168.1.1 is up (0.002s latency).
Host 192.168.1.10 is up (0.003s latency).

# SYN Scan
$ sudo nmap -sS -p 22,80,443 192.168.1.10
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
443/tcp closed https

Testes DHCP e BOOTP

dhcp_bootp_test.txt
# Captura DHCP
$ sudo tcpdump -i eth0 port 67 or port 68 -n
IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from aa:bb:cc:dd:ee:ff
IP 192.168.1.1.67 > 192.168.1.100.68: BOOTP/DHCP, Reply, Offer

# Captura TFTP (BOOTP)
$ sudo tcpdump -i eth0 port 69 -n
IP 192.168.1.100.49152 > 192.168.1.1.69: TFTP, RRQ "kernel.img"

# Teste TFTP
$ tftp 192.168.1.1
tftp> get kernel.img
Received 1234567 bytes in 0.5 seconds

Outras Utilidades

other_tools.txt
# Dados de Domínio
$ whois example.com
Domain Name: EXAMPLE.COM
Registrar: IANA
Creation Date: 1995-08-14

# Resolução Recursiva
$ dig +trace +dnssec example.com
. 518400 IN NS a.root-servers.net.
. 518400 IN RRSIG NS 8 1 518400 ...
com. 172800 IN NS a.gtld-servers.net.
example.com. 3600 IN A 93.184.216.34
;; Query time: 120 msec

Boas Práticas

  • Use dig +dnssec para validar respostas DNSSEC (busque flag ad).
  • Execute nmap/zenmap apenas em redes autorizadas, com sudo para scans avançados.
  • Filtre tcpdump com portas específicas (53 para DNS, 67-68 para DHCP, 69 para TFTP).
  • Limpe cache DNS com systemd-resolve --flush-caches antes de testes.
  • Monitore logs do dnsmasq (journalctl -u dnsmasq) para validar consultas.

Resolução de Problemas

  • DNS não resolve: Teste servidor alternativo (dig @1.1.1.1) ou limpe cache (systemd-resolve --flush-caches).
  • nmap falha: Verifique permissões (sudo) ou portas abertas (netstat -tuln).
  • tcpdump sem dados: Confirme interface (tcpdump -i eth0) ou ative promiscuidade (sudo tcpdump -i eth0 -p).
  • DNSSEC validação falha: Use dig +trace +dnssec para depurar cadeia de confiança.