Eine SOCKS-Antwort ist kein DNS-Abfrageergebnis
Unterscheiden Sie die Verwendung von Hostnamen auf Proxy-Seite von einer DNS-Abfrage-API und interpretieren Sie eine gebundene SOCKS-CONNECT-Adresse richtig.
Einen SOCKS-Proxy zu bitten, sich mit einem Hostnamen zu verbinden, ist nicht dasselbe, wie ihn zu bitten, die DNS-Einträge dieses Hostnamens zurückzugeben.
Der Proxy kann den Namen im Rahmen des Aufbaus der angeforderten Verbindung auflösen. Er kann die Aufgabe auch an ein anderes geeignetes Upstream weitergeben. Der Client erhält eine SOCKS-Antwort, die das Verbindungsergebnis beschreibt, keine allgemeine DNS-Antwort.
Bei CONNECT beschreiben die gebundene Adresse und der Port der Antwort die serverseitige Bindung, wie sie das Protokoll definiert. Behandeln Sie BND.ADDR nicht als zugesagte Kopie der aufgelösten IP des Ziels.
Braucht die Anwendung nur die Verbindung, kann sie den entstandenen Datenstrom nutzen, ohne zu wissen, welche Zieladresse der Proxy gewählt hat. Braucht sie selbst DNS-Daten, wählen Sie eine tatsächlich DNS-fähige Schnittstelle mit dem beabsichtigten Resolver-Standort und der beabsichtigten Richtlinie.
Diese Unterscheidung verhindert auch eine irreführende IP-Prüfung: die gebundene Adresse des Proxys, eine Ziel-IP und der öffentliche Ausgang gegenüber der Website sind verschiedene Werte. Man sollte den einen nicht als den anderen bezeichnen, nur weil er im selben Handshake auftauchte.