Isto é muito simples com o iptables:
Suponho que sua cadeia INPUT não possui regra DROP padrão no final ou você terá que resolver isso:
# Allow DNS (53) from <source IP>
iptables -A INPUT -p udp --dport 53 -s <source IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -s <source IP> -j ACCEPT
# Deny all other DNS requests
iptables -A INPUT -p udp --dport 53 -j DROP
iptables -A INPUT -p tcp --dport 53 -j DROP
Basta remover as duas regras inferiores se você tiver uma política DROP padrão. Se você tiver uma regra de DROP padrão na parte inferior de sua cadeia, precisará inserir ( -I rulenum
) essas regras acima dessa regra.