![Ist DNS-Hacking zum Unit-Testen von Code mit HTTP-Verbindungen möglich oder sinnvoll?](https://rvso.com/image/1692554/Ist%20DNS-Hacking%20zum%20Unit-Testen%20von%20Code%20mit%20HTTP-Verbindungen%20m%C3%B6glich%20oder%20sinnvoll%3F.png)
Gibt es eine sinnvolle Möglichkeit, DNS in begrenztem Umfang zu kapern, um ausgehende HTTP-Verbindungen mit einem lokalen Testserver zu simulieren?
Die Idee ist, dass der Code auf dieselbe Weise ausgeführt wird wie normalerweise, die Anforderung jedoch an einen lokalen Testserver umgeleitet wird, der stattdessen simulierte Antworten zurückgibt.
Ich weiß, dass dies durch eine Reihe von Testkonfigurationen erreicht werden kann, sodass die angeforderte URI stattdessen „localhost“ ist. Ich finde jedoch, dass dies eine Fülle von Problemen verursacht. Am häufigsten besteht das Problem darin, dass Entwickler vergessen, die Produktionskonfiguration zu kommentieren, oder beim Einrichten der Testkonfiguration verwirrt sind.
Antwort1
Es ist ratsam, den Code zur Überprüfung nicht zu berühren. Sie haben also Recht, die Umgebung zu manipulieren, um die Verwendung eines Testservers zu erzwingen.
Ein DNS-Hack würde das gesamte Netzwerk beeinträchtigen und möglicherweise andere Tests stören, die auf denselben Dienst abzielen.
Um die Auswirkungen zu minimieren, wäre die einfachste Möglichkeit, den Netzwerkverkehr auf den Testserver umzuleiten, die Konfiguration der hosts
Dateibeim Kundenwo die zu testende Software installiert ist.
# Linux:
/etc/hosts
# Windows:
%SystemRoot%\System32\drivers\etc\hosts
Ordnen Sie einfach die IP des Testsystems den DNS-Namen des/der Produktionsserver(s) zu:
# IP of the test server:
192.168.10.20 prod.server.com prod2.server.com
192.168.10.20 prod prod2 # if prod-servers are part of the local network.
Um den Servernamen aufzulösen, prüft das System zunächst die hosts
Datei. Wenn dies nicht erfolgreich ist, folgt anschließend die DNS-Anfrage.
Es kann sinnvoll sein, den DNS-Cache nach der Neukonfiguration zu leeren:
# Linux:
resolvectl flush-caches
# Windows:
ipconfig /flushdns
Dafür (oder für jede andere DNS-Lösung) muss sichergestellt werden, dass die Software die IP-Adresse des Produktionsservers nirgends verschlüsselt. (Vielleicht das Testnetzwerk vom Internet/Produktionsnetzwerk trennen?)