Eu recomendo que você adicione regras à cadeia INPUT, que permite pacotes ESTABLISHED e RELACIONADOS:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Se mais tarde você bloquear mais sua cadeia OUTPUT, também desejará a regra OUTPUT correspondente:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Essas regras são seguras e você verá que elas são geralmente as primeiras regras adicionadas em quase todos os scripts de firewall. ESTABLISHED significa "uma vez que eu tenha permitido que uma conexão seja estabelecida, deixe todos os pacotes para esta conexão" não permitir que conexões não permitidas sejam criadas. "RELATED" permite pacotes úteis como "Desde que eu enviei um pedido para iniciar uma conexão, permita que o pacote ICMP retorne, o que me diz que este host não está acessível" ou "Desde que eu permiti uma conexão ftp, também permita a conexão de dados ftp". Novamente, ele não deve permitir a criação de conexões adicionais que não foram permitidas por outras regras.
Agora você está permitindo que a consulta DNS saia, mas não a resposta para voltar. Você está atualmente permitindo o dpt: 53, que permitirá que alguém consulte seu servidor DNS, mas não ajuda com uma resposta de DNS (que você esperaria ter 53 para uma porta de origem, mas não uma porta de destino)
Outra coisa digna de nota é que, como sua política padrão de OUTPUT é ACCEPT, todas as outras regras não são úteis (já que todas são ACCEPT). Então você está essencialmente dizendo "se o pacote é um dos seguintes tipos de pacotes, então ACEITAR, caso contrário, também ACEITA-los de qualquer maneira", você pode pular todas as regras neste caso e apenas dizer "Aceitar todos os pacotes de saída" No entanto, isso é temporário até que o tráfego de DNS funcione melhor.