Тайм-аут соединения возникает, когда DNS-сервер вообще не отвечает или не отвечает своевременно.
Первый можно смоделировать, просто блокируя весь трафик на ваш DNS-сервер, например, в системе Linux с помощью:
# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP
Использование DROP в качестве цели означает, что вы даже не получите ошибку отказа в соединении, она становится просто черной дырой. (Маловероятно, что вы обычно выполняете зонную передачу, поэтому блокирование протокола TCP в дополнение к UDP не требуется.)
Создание задержек немного сложнее. Из netem
руководства :
# 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
Что создает задержку 200 мс с случайным отклонением ± 10 мс.