Answers:
nameserver 127.0.0.1
将无法正常工作,因为默认行为已经如此。而是尝试使用不存在的DNS。要确保,您可以执行以下操作:
nslookup example.com 192.0.2.10
如果没有响应,则可以192.0.2.10
用作DNS服务器。
nslookup example.com non_existent_dns_ip
输出:;; connection timed out; trying next origin ;; connection timed out; no servers could be reached
当DNS服务器完全不响应或没有及时响应时,就会发生连接超时。
可以通过在Linux系统上简单地阻止所有DNS服务器流量来模拟第一个,例如:
# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP
使用DROP作为目标意味着您甚至都不会收到连接被拒绝的错误,它只是一个黑洞。(通常不太可能进行区域传输,因此除了UDP之外,不需要阻止TCP协议。)
造成延迟要稍微复杂一些。从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
这会产生200ms的延迟,并具有±10ms的随机变化。
您需要的是“黑洞服务器”。您可以使用blackhole.webpagetest.org
(72.66.115.13
)来静默删除所有请求。
我之所以在其他答案中提出这一建议,是因为建立上述服务器是出于该唯一目的。
barend@shells:~$ dig example.com @72.66.115.13
; <<>> DiG 9.10.3-P4-Debian <<>> example.com @72.66.115.13
;; global options: +cmd
;; connection timed out; no servers could be reached