Wir verwenden ein DNS-basiertes Proxy-System, das bestimmte Adressen basierend auf dem DNS-Eintrag weiterleitet. Für website1.com gibt der DNS beispielsweise die IP des Proxys zurück und die Anfrage wird darüber gesendet. Für website2.com gibt der DNS jedoch die reguläre Adresse zurück und die Anfrage wird direkt gesendet. Das ist kein Problem.
Dies funktioniert jedoch nur bei namensbasierten Anrufen. Wir müssen dasselbe auch für bestimmte IP-Adressen tun können, aber gibt es eine Möglichkeit, das zu tun?
Ein Benutzer ruft beispielsweise eine Website mit der IP-Adresse 1.2.3.4 auf, hat aber KEINEN DNS-Eintrag, weder A noch PTR. Dann müsste der Aufruf nicht an die IP-Adresse 1.2.3.4 gehen, sondern an unseren Server 10.0.0.4. Gibt es überhaupt eine Möglichkeit, das zu tun? Wir wissen, dass dies auf dem Client-Rechner eingestellt werden müsste, aber trotzdem – gibt es eine Möglichkeit, das zu tun?
Die Clients können alles Mögliche sein: Windows, Mac, Linux, Android oder was auch immer. Wahrscheinlich ist es nicht auf allen möglich, aber ist es auf einem davon möglich?
Antwort1
Da Sie Netzwerk angegeben haben, gibt es eine Option auf Netzwerkebene. Ich habe unten eine Netzwerklösung mit der Kennzeichnung NETWORK bereitgestellt. Nur wenige Protokolle werden üblicherweise per Proxy verwendet, aber die meisten funktionieren gut mit NAT (der Netzwerklösung). HTTP und HTTPS werden üblicherweise per Proxy verwendet, das ist also meine erste Antwort.
Ihre Beschreibung des DNS-basierten Proxying verwirrt mich. Es ist üblich, dass DNS für verschiedene Adressen verschiedene IP-Adressen angibt oder dass verwandte Websites dieselbe IP-Adresse haben. Da Sie Websites als Ihre Hostnamen angeben, können wir davon ausgehen, dass Sie Websites als Proxy verwenden möchten. Ich glaube, der Begriff, nach dem Sie suchen, ist „namenbasiertes virtuelles Hosting“ oder „namenbasiertes Proxying“.
Für HTTP oder HTTPS können viele Server den Datenverkehr basierend auf der IP-Adresse und/oder dem im HOST-Header angegebenen Namen weiterleiten. Der Apache-Webserver verwendet VirtualHosts, um Sites zu trennen. Andere Software, die den Datenverkehr weiterleiten kann, hat dieselbe oder eine ähnliche Funktionalität. Um in Apache sowohl IP-basiertes als auch Proxy-basiertes Proxying für dieselbe Site durchzuführen, würden Sie einen VirtualHost für die IP-Adresse erstellen und diesem virtuellen Host die erforderlichen Namen hinzufügen. Anschließend würden Sie diesen VirtualHost so konfigurieren, dass er die gesamte Site oder Teile davon weiterleitet.
NETZWERKERWEITERUNG: Wenn Sie eine IP-Adresse an eine andere Adresse umleiten möchten, kann dies über einen Router erfolgen. Der verwendete Mechanismus heißt NAT (Network Address Translation). In diesem Fall benötigen Sie DNAT (Destination Network Address Translation). Einige Router können NAT an einer Adresse pro Port (Dienst) durchführen. In diesem Fall möchten Sie, dass die zugehörigen DNS-Einträge die übersetzte IP-Adresse zurückgeben.
BEARBEITEN: Die zusätzlichen Kommentare liefern zusätzliche Informationen. So wie ich die Anforderungen verstehe: - Proxying ist nur für Benutzer von bestimmten Adressen/Adressbereichen möglich, nicht der gesamte Datenverkehr zum Namen/zur IP wird per Proxy geleitet.
- Proxy-Anfragen müssen so aussehen, als ob sie vom Proxy stammen, nicht vom ursprünglichen Host. - Die aktuelle Lösung lieferte je nach Ursprung der Anfrage unterschiedliche Adressdatensätze. (Ich glaube, die vorhandene Lösung ist hier fehlerhaft. DNS-Anfragen stammen vom DNS-Server, den der Client verwendet, was möglicherweise nicht das Gerät des Clients ist. DNS-Antworten werden zwischengespeichert, sodass Sie sich nicht auf eine DNS-Anfrage verlassen können, die der Anfrage vorausgeht.)
Die Lösung, die meiner Meinung nach am wahrscheinlichsten funktionieren würde, besteht darin, dies mit NAT-Regeln auf einem Gerät vor dem Server und dem Proxy zu handhaben. Dadurch würde der gesamte Datenverkehr, den Sie per Proxy an Ihr Proxy-Gerät weiterleiten möchten, basierend auf der ursprünglichen IP-Adresse per NAT weitergeleitet und der übrige Datenverkehr direkt an den Server weitergeleitet.