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 o tráfego para o seu 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 alvo significa que você nem receberá um erro de conexão recusada, ele se tornará apenas um buraco negro. (É improvável que você normalmente fizesse transferências de zona, portanto, bloquear o protocolo TCP além do UDP não é necessário.)
Criar atrasos é um pouco mais complicado. 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
Que cria um atraso de 200 ms com variação aleatória de ± 10 ms.