DNS sunucusu yanıt zaman aşımı nasıl taklit edilir?


19

Zaman aşımı nedeniyle bir ana bilgisayar adını çözemediğinde bir uygulamanın davranışını sınamak gerekir. Ayar nameserver 127.0.0.1içinde /etc/resolv.confişe yaramadı: önemli fonksiyonlar bir istisna ile hemen dönün. Test donanımı, Vagrant ile oluşturulan ve IP adresini DHCP yoluyla alan bir sanal makinedir.

Yanıtlar:


11

nameserver 127.0.0.1varsayılan davranış zaten olduğu gibi çalışmaz. Bunun yerine, mevcut olmayan bir DNS kullanmayı deneyin. Emin olmak için şunları yapabilirsiniz:

nslookup example.com 192.0.2.10

Yanıt almazsanız, 192.0.2.10DNS sunucunuz olarak kullanabilirsiniz .


192.0.2.10 gerçek bir ana bilgisayar olabilir ve 127.0.0.1 gibi, sorgulamadan hemen sonra "bağlantı noktasına erişilemez" olarak dönebilir. Eminseniz Eğer emin cevap olmaz olduğu bir host almak gerekir (sizin nslookup komutu çekler gibi) DNS yayınlanmadığını Bir host almak gerekmez hiç .
Jeff Meden

nslookup example.com non_existent_dns_ipçıktılar: ;; connection timed out; trying next origin ;; connection timed out; no servers could be reached
sysfiend

4
@JeffMeden Muhtemelen biliyorsunuz, ancak 192.0.2.0/24 aralığı dokümantasyon amacıyla ayrılmıştır , bu nedenle hiçbir yerde kullanılmamalıdır (ve kendine saygılı herhangi bir güvenlik duvarı tarafından bir bogon olarak reddedilmelidir).
Dubu

2
@Dubu aslında daha ilginç bir uyarı; spesifikasyona göre trafik yönlendiricide reddedilmelidir ki bu da yığına bir "hedef ana bilgisayara erişilemez" verecek ve bu da zaman aşımından farklı olacaktır.
Jeff Meden

26

DNS sunucusu hiç yanıt vermediğinde veya zamanında yanıt vermediğinde bağlantı zaman aşımı oluşur.

Birincisi, örneğin bir Linux sisteminde DNS sunucunuza gelen tüm trafiği engelleyerek simüle edilebilir:

# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP

DROP'u hedef olarak kullanmak, bağlantı reddedilen bir hata bile almayacağınız anlamına gelir, sadece bir kara delik haline gelir. (Normalde bölge aktarımı yapmanız olası değildir, bu nedenle UDP'ye ek olarak TCP protokolünü engellemeye gerek yoktur.)

Gecikmeler yaratmak biraz daha karmaşıktır. Gönderen netemmanuel :

# 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

Hangi ± 10 ms rasgele varyasyon ile 200 ms gecikme oluşturur.


18

İhtiyacınız olan şey bir "kara delik sunucusu". Tüm istekleri sessizce bırakacak olan blackhole.webpagetest.org( 72.66.115.13) yöntemini kullanabilirsiniz .

Bunu diğer cevaplara niye öneriyorum, çünkü yukarıda belirtilen sunucu bu amaç için kurulmuş.

Misal:

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

2
Her şeyi gördüğümü düşündüğümde; ... hiçbir şey yapmayan özel bir sunucu. Parlak! (muhtemelen sadece bir ağ yapılandırma şeyidir ve filtre tüm güvenlik duvarına sahip gerçek bir sunucu değil, yine de)
Jeff Meden

1
Her şeyi bırakacak bir güvenlik duvarına sahip bir Ahududu PI'sı, bu yüzden hala ARP'ye yönlendiriyor ve yanıt veriyor (sadece trafiğin ICMP'ye ulaşılamayan yanıtlar almadığından emin olmak için).
pmeenan

@pmeenan ilginç! Paylaşım için teşekkürler! (Vay canına, sadece yorum yapmak için katıldığına inanamıyorum: D)
grooveplex

3

Test sisteminizde bir DNS sunucusu çalıştırmıyorsanız, IP adresini kullanabilmeniz gerekir.

Kullanılmayan bir rfc1918 adresi kullanmayı deneyebilirsiniz .

Hedef bağlantı noktası 53 ile giden paketleri engellemek için sunucunuzun güvenlik duvarını kullanabilirsiniz.


1
Bazı güvenlik duvarları da zaman aşımının anında gerçekleşmesi için ICMP paketlerini döndürebilir.
Nathan Goings
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.