O rastreamento de conexão não está funcionando para você, por algum motivo (como evidenciado pelo fato de que nem um único pacote foi descartado por sua regra baseada em conntrack na entrada). Isso ocorre porque você definiu o NOTRACK em algum lugar (o único local em que isso é permitido é a tabela bruta, o mesmo acontece com iptables -t raw -nvL
) ou porque você não tem o módulo conntrack carregado em seu kernel ou o desativou de outra maneira . Você pode validar isso definindo uma regra como esta:
iptables -t filter -I INPUT 1 -m conntrack --ctstate UNTRACKED -j LOG
Isto lhe dará contadores de pacotes para todos os pacotes que não estão sendo rastreados pelo conntrack (sem afetar qualquer outra coisa). Não deixe isso ligado por muito tempo, pois ele envia dados para o syslog (mas é a melhor opção para uma regra não-dispositiva nesse caso).
Eu não acredito que o iptables permita que você especifique regras baseadas no conntrack sem que o conntrack seja carregado, mas você pode validar isso de qualquer maneira fazendo um lsmod | grep conntrack
e procurando por estes módulos:
nf_conntrack_ipv4
nf_conntrack
Caso contrário, você pode ter um bug do kernel ou algo assim.
Também vale a pena mencionar que normalmente as consultas DNS são feitas pelo udp / 53, não pelo tcp / 53. No entanto, sua regra para aceitar related,established
pacotes na entrada deve cuidar de suas necessidades de consulta de DNS.