Estou tentando configurar o iptables DROP
como política padrão para INPUT
e OUTPUT
em um servidor DNS, mas algo está errado.
Aqui está o meu script iptables
iptables -P INPUT DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP
iptables -I OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport 53 -j ACCEPT
Houve alguma perda de pacotes, porque os computadores que dependem desse serviço dns só navegam quando o iptables é limpo. Onde eu estou errando?
Se sua política for "Permitir apenas consultas DNS de entrada para o servidor e respostas DNS do servidor para IPv4", seu conjunto de regras parecerá correto. Mas provavelmente não é isso que você quer. Por exemplo, a política implica que seu servidor DNS possui um banco de dados local mágico que pode ser usado para responder a todas as consultas de DNS.
Alguns palpites informados sobre o que pode causar os problemas:
Seu servidor DNS precisa executar consultas DNS recursivas quando tenta responder a uma das consultas de seu cliente? Nesse caso, você deve permitir isso (consultas DNS de saída do seu servidor DNS).
Alguns de seus clientes estão usando IPv6 para consultar o DNS. Presumo que seu servidor não tenha firewall para IPv6?
Algumas das consultas IPv4 do seu cliente estão funcionando porque o servidor recursivamente faz uma consulta com IPv6?
Você tem mais interfaces do que
eth0
elo
?Existem algumas mensagens de erro ICMP que seu servidor não está enviando/recebendo porque seu iptables o bloqueia? Se, por algum motivo, alguns clientes exigirem fragmentação de IPv4 ou houver problemas de MTU, seus clientes não poderão resolver isso porque seu servidor não informa via ICMP.
Além disso: você pode querer permitir que seu servidor obtenha atualizações do sistema. Além disso, você deseja que seu servidor seja capaz de responder a determinadas solicitações de ICMP e definitivamente precisa que seu servidor seja capaz de lidar com ICMP para IPv6.
editar: Tente isto (provavelmente você pode querer ajustar o tratamento de icmp):