Ich muss das Verhalten einer Anwendung testen, wenn ein Hostname aufgrund einer Zeitüberschreitung nicht aufgelöst werden kann. Einstellung nameserver 127.0.0.1
in /etc/resolv.conf
nicht funktioniert hat : die entsprechenden Funktionen sofort wieder mit einer Ausnahme. Der Prüfstand ist eine mit Vagrant erstellte VM, die ihre IP-Adresse über DHCP erhält.
19
nslookup example.com non_existent_dns_ip
Ausgänge:;; connection timed out; trying next origin ;; connection timed out; no servers could be reached
Eine Verbindungsunterbrechung tritt auf, wenn der DNS-Server überhaupt nicht oder nicht rechtzeitig antwortet.
Die erste kann simuliert werden, indem einfach der gesamte Datenverkehr zu Ihrem DNS-Server blockiert wird, beispielsweise auf einem Linux-System mit:
Wenn Sie DROP als Ziel verwenden, wird Ihnen nicht einmal ein Verbindungsfehler verweigert, sondern nur ein schwarzes Loch. (Es ist unwahrscheinlich, dass Sie normalerweise Zonentransfers durchführen. Daher ist es nicht erforderlich, das TCP-Protokoll zusätzlich zu UDP zu blockieren.)
Das Erstellen von Verzögerungen ist etwas aufwendiger. Aus dem
netem
Handbuch :Dies führt zu einer Verzögerung von 200 ms mit einer zufälligen Abweichung von ± 10 ms.
quelle
Was Sie brauchen, ist ein "Black Hole Server". Sie können
blackhole.webpagetest.org
(72.66.115.13
) verwenden, um stillschweigend alle Anforderungen zu löschen.Warum ich dies gegenüber den anderen Antworten vorschlage, liegt daran, dass der oben genannte Server ausschließlich für diesen Zweck eingerichtet wurde.
Beispiel:
quelle
Wenn Sie auf Ihrem Testsystem keinen DNS-Server ausführen, sollten Sie dessen IP-Adresse verwenden können.
Sie können versuchen, eine nicht verwendete rfc1918- Adresse zu verwenden.
Sie können die Firewall Ihres Servers verwenden, um ausgehende Pakete mit einem Zielport 53 zu blockieren.
quelle