Um tempo limite de conexão ocorre quando o servidor DNS não responde, ou não responde em tempo hábil.
O primeiro pode ser simulado simplesmente bloqueando todo o tráfego para o servidor DNS, em um sistema Linux, por exemplo, com:
# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP
Usar o DROP como destino significa que você nem receberá um erro de conexão recusada, ele se tornará apenas um buraco negro. (É improvável que você normalmente faça transferências de zona, portanto, não é necessário bloquear o protocolo TCP além do UDP.)
Criar atrasos é um pouco mais envolvido. Do netem
manual :
# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit 3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst <IP_of_DNS_server>/32 flowid 1:3
O que cria um atraso de 200 ms com variação aleatória de ± 10 ms.