TCP-Proxy als Reverse-Proxy und Lastausgleicher

Leitfäden, Mar-06-20245 Min. gelesen

Ein Transport Control Protocol (TCP)-Proxy arbeitet auf der TCP-Schicht des Open System Interconnection (OSI)-Modells. Der TCP-Proxy-Server ist ein Zwischenproxy zwischen dem Client und dem Zielserver. Der Client stellt eine Verbindung mit dem TCP-Proxy-Server her, der wiederum eine Verbindung mit dem Zielserver herstellt. Der TCP

Ein Transport Control Protocol (TCP)-Proxy arbeitet auf der TCP-Schicht des Open System Interconnection (OSI)-Modells. Der TCP-Proxy-Server ist ein Zwischenproxy zwischen dem Client und dem Zielserver. 

Der Client stellt eine Verbindung mit dem TCP-Proxy-Server her, der wiederum eine Verbindung mit dem Zielserver herstellt. Der TCP-Proxy-Server fungiert sowohl als Server als auch als Client, um auf Dienste zuzugreifen, die Verbindungen auf der Grundlage der Netzwerkadresse beschränken.

Einige Webseiten sind nur von internen Rechnern aus zugänglich, und Sie erhalten eine Fehlermeldung, dass der Zugriff verweigert wird, wenn Sie sie von anderen Rechnern aus aufrufen. Sie können diese Seite jedoch von einem Webbrowser überall im Internet aufrufen, indem Sie einen Proxy auf einem der internen Rechner verwenden.

Der Webserver denkt, dass er die Daten an einen Client auf dem Rechner liefert, auf dem der Proxy läuft. Der Proxy leitet die Daten jedoch aus dem Netzwerk heraus an den tatsächlichen Client weiter. 

Der Proxy-Server nimmt Verbindungen von mehreren Clients entgegen und leitet sie über mehrere Verbindungen an den Server weiter. Der Client oder der Server muss Daten auf seinen Verbindungen lesen oder schreiben und sollte den Proxy-Server nicht aufhalten, indem er jegliche Operation an ihn verweigert.

OSI-Modell - eine Vorschau

OSI-Modelle beschreiben den Prozess der Computervernetzung. Es hat sieben Schichten:

  • Physikalische Schicht
  • Datenübertragungsschicht
  • Netzwerkschicht
  • Transportschicht
  • Sitzungsschicht
  • Präsentationsschicht
  • Anwendungsschicht

Die Transportschicht ist für die Übertragung von Daten über ein Netz zuständig. Sie nutzt zwei verschiedene Protokolle, das TCP und das User Datagram Protocol (UDP). TCP wird in der Regel für die Datenübertragung verwendet, und dieses Protokoll legt fest, wie die Daten zu senden sind. Es zerlegt die Nachricht in Segmente und sendet sie dann von der Quelle zum Ziel.

Steckdosenanschluss

Es gibt einen Sender und einen Empfänger, die unter normalen Umständen Datenpakete übertragen. Der Sender und der Empfänger kommunizieren gleichzeitig mit verschiedenen Rechnern, so dass der Proxy eine Socket-Verbindung zwischen einem Sender und einem Empfänger herstellt, die an einer Kommunikation beteiligt sind.

Der Socket ist eine logische Verbindung zwischen beiden unter Verwendung der IP und der Portnummer. Der Proxy stellt eine Socket-Verbindung auf der Sender- und der Empfängerseite her. Die Socket-Adresse, bestehend aus einer IP-Adresse und einer Portnummer, ist für die Kommunikation zwischen Sender und Empfänger eindeutig.

Die eindeutige Socket-Adresse sorgt dafür, dass die Datenübertragung parallel erfolgt und die Pakete nicht miteinander kollidieren.

Implementierung eines Proxys auf TCP-Ebene

Ein TCP-Proxy empfängt eingehenden Datenverkehr und öffnet einen ausgehenden Socket, über den er den eingehenden Datenverkehr an den Zielserver weiterleitet. Er überträgt Daten zwischen dem Client und dem Server, kann aber keine Daten ändern, da er sie nicht versteht.

Ein Proxy auf dieser Ebene hat Zugriff auf die IP-Adresse und die Portnummer, mit der sich der Empfänger auf dem Backend-Server zu verbinden versucht. Wenn der Server die Portnummer 3306 verwendet, um auf Anfragen zu warten, implementiert der Proxy dies auf dieser Ebene und wartet ebenfalls an diesem Port. 

Der Proxy lauscht auf diesen Port und leitet die Nachrichten an den Server weiter. Der TCP-Proxy stellt eine Verbindung über einen Socket mit einer einzigen Host/Port-Kombination her.

Die Implementierung eines Proxys auf der Transportschicht ist leicht und schnell, da diese Schicht nur für die Datenübertragung zuständig ist.

Die Proxys fungieren als Medium für die Weiterleitung von Nachrichten und können die Nachrichten nicht lesen. Diese Proxys helfen Ihnen, das Netzwerk zu überwachen, das interne Netzwerk vor dem öffentlichen Netzwerk zu verbergen, Verbindungen in eine Warteschlange zu stellen, um eine Überlastung des Servers zu verhindern, und Verbindungen zu begrenzen. Es ist die beste Lösung für den Lastausgleich von Diensten, die über TCP kommunizieren, wie z.B. Datenbankverkehr zu MYSQL und Postgres.

TCP-Proxy als Reverse-Proxy

Ein Reverse-Proxy nimmt eine Anfrage von einem Client entgegen, leitet sie an einen Server weiter, der sie erfüllen kann, und gibt die Antwort des Servers an den Client zurück. Sie können einen Reverse-Proxy auch dann einsetzen, wenn es nur einen Server oder eine Anwendung gibt.

Der Reverse-Proxy ist für andere Nutzer des Netzes öffentlich sichtbar. Er wird am Rande des Netzwerks der Website implementiert, um Anfragen von Webbrowsern und mobilen Anwendungen zu akzeptieren. 

Die Implementierung eines TCP-Proxys als Reverse-Proxy hat folgende Vorteile:

Sicherheit - Es erhöht die Sicherheit des Netzes. Böswillige Clients können nicht auf die Backend-Server zugreifen, da sie für das äußere Netz nicht sichtbar sind. Sie können nicht direkt auf sie zugreifen, um Schwachstellen auszunutzen.

Verhinderung von DDOS-Angriffen - Die Backend-Server werden durch den Reverse-Proxy geschützt, um sie vor Distributed Denial of Service (DDOS) zu schützen.

Regulierung des Datenverkehrs - Er kann den Datenverkehr von einer bestimmten Client-IP-Adresse zurückweisen (schwarze Liste) oder die Anzahl der Verbindungen von diesem Client begrenzen.

Skalierbarkeit und Flexibilität - die Backend-Konfiguration kann flexibel geändert werden, da der Client nur die Adresse des Reverse-Proxys sehen kann. Um die Last auf dem Server auszugleichen, können Sie die Anzahl der Server entsprechend dem sich ändernden Verkehrsaufkommen erhöhen oder verringern.

Web-Beschleunigung - Sie verkürzt die Zeit, die für die Generierung einer Antwort für den anfragenden Client benötigt wird. 

Komprimierung - der TCP-Proxy antwortet, bevor er zum Client zurückkehrt, wodurch die für die Übertragung der Daten über das Netz benötigte Bandbreite verringert wird.

Verschlüsselung - Der Datenverkehr zwischen dem Client und dem Server im Netz muss verschlüsselt werden. Der Verschlüsselungsprozess stellt für den Client und den Server einen Overhead dar, da er rechenintensiv ist. Der Reverse Proxy führt die Ver- und Entschlüsselung durch und entlastet so die Backend-Server, damit diese sich ausschließlich der Bedienung der Clients widmen können.

Caching - Der Reverse-Proxy speichert eine Kopie der Anfrage in seinem lokalen System, bevor er sie an den Client weiterleitet. Der Reverse-Proxy bedient die Anfrage aus dem Cache, anstatt die Anfrage an den Server weiterzuleiten und bei einer erneuten Anfrage des Clients abzurufen. 

TCP-Proxy als Lastverteiler

Ein Load Balancer ist ein Proxy, der den Datenverkehr verwaltet, wenn mehrere Server vorhanden sind. Er ermöglicht es dem Server, effizient zu arbeiten und den Server zu skalieren, wenn der Datenverkehr hoch ist. Der Load Balancer verteilt den Datenverkehr auf die Server und leitet die ursprünglichen Verbindungen von Clients direkt und ohne Unterbrechung an einen gesunden Backend-Server weiter.

Der TCP-Proxy verwendet den direkten Server-Return, um die Antworten von gesunden Backend-Servern direkt zu den Clients und nicht zu den Load Balancern zu bringen. Der Backend-Server beendet den SSL-Datenverkehr (Secure Socket Layer) und nicht der Load Balancer. 

Sitzung Affinität

Der TCP-Verkehr zwischen dem Client und dem Server unterstützt die Sitzungsaffinität. Sitzungsaffinität bedeutet, dass der Client Anfragen an denselben Backend-Server senden kann, solange dieser gesund und leistungsfähig ist. 

Server überwachen

Der TCP-Proxy führt Gesundheitsprüfungen des Backend-Servers durch, indem er dessen Bereitschaft regelmäßig überwacht. Wenn der Backend-Server den Datenverkehr nicht bewältigen kann, gilt er als ungesunder Knoten, und der Server leitet den Datenverkehr an andere gesunde Backend-Server um.

Der TCP-Proxy weist die folgenden Merkmale auf, wenn er als Lastausgleich fungiert:

Asynchrones Verhalten - Der TCP-Proxy hat ein asynchrones Verhalten, d. h., wenn ein Client plötzlich aufhört, vom Socket zum Proxy zu lesen, dürfen andere Clients keine Unterbrechung des Dienstes durch den Proxy bemerken.

Unterstützung anderer Protokolle - Der TCP-Proxy unterstützt HTTP und auch andere Anwendungsschichtprotokolle wie FTP.

Als Reverse-Proxy fungieren - Ein Benutzer kann einen TCP-Proxy als Reverse-Proxy verwenden, der auf dem Standort der Implementierung basiert. Auf der Serverseite regelt er den Datenverkehr zwischen dem Client und dem Benutzer. 

Option Fensterskalierung

Das TCP-Empfangsfenster ist die Datenmenge in Bytes, die ein Empfänger während einer Verbindung puffern kann. Der Empfänger muss seine Fenstergröße vor Beginn der Kommunikation aktualisieren und auf die Bestätigung warten. 

Der Absender sendet Daten auf der Grundlage der Fenstergröße. Der Windows-TCP/IP-Stack passt sich an die wechselnde Datengröße an und verwendet eine größere Fenstergröße. Jedes Mal, wenn der Absender sendet, verwendet er eine größere Fenstergröße als bei der vorherigen Übertragung.

Die Größe des Fensters ist nicht festgelegt, sondern kann durch Anpassen der maximalen Segmentgröße (MSS) verändert werden. Der Client und der Server handeln die MSS während des Verbindungsaufbaus aus. Durch die Anpassung des Empfangsfensters an die MSS erhöht sich der Prozentsatz der TCP-Segmente in voller Größe, die bei Massendatenübertragungen verwendet werden.

Die Größe des Empfangsfensters wird auf folgende Weise bestimmt:

Der Client sendet die erste Verbindungsanforderung an den Server, indem er eine Empfangsfenstergröße von 16K (16.384 Bytes) bekannt gibt. Wenn die Verbindung hergestellt ist, passt der Client die Empfangsfenstergröße auf der Grundlage der MSS an. Die Fenstergröße wird auf das Vierfache der MSS angepasst, bis zu einer maximalen Größe von 64 K, es sei denn, die Option Window Scaling wird verwendet.

Häufig gestellte Fragen

1. Was ist der Unterschied zwischen einem Reverse-Proxy und einem Proxy mit Lastausgleich?

Umgekehrter ProxyLastausgleichs-Proxy
Ein Reverse Proxy ist eine zwischengeschaltete Anwendung, die zwischen dem Client und dem Server implementiert wird.Ein lastverteilender Proxy verteilt den Datenverkehr gleichmäßig und effizient auf mehrere Backend-Server.
Reverse Proxies erhöhen die Sicherheit von Webservern, indem sie sicherstellen, dass die Clients nicht direkt mit dem ursprünglichen Server kommunizieren.Es gibt mehrere Backend-Server, und im Falle eines Netzwerkausfalls oder eines DDoS-Angriffs hilft ein Proxy zur Lastverteilung, die Schließung der Website zu verhindern, da der Datenverkehr auf einen alternativen Server umgeleitet werden kann.
The process: – The user makes an HTTP request. – The reverse proxy receives it. – The reverse proxy either allows or denies the user’s request. – If allowed, the reverse proxy forwards the request to the server. – If denied, the reverse proxy sends an error message to the client. – The server sends the corresponding reply to the reverse proxy.The reverse proxy forwards the server’s response to the client.The process:– The load balancer receives the client’s request.– The load balancer sends the request to a single server in the group of backend servers.– The selected server sends the response back to the load balancer.– The load balancer forwards the server’s response to the user.
Beispiele für einige Open-Source-Reverse-Proxys sindNGINXApache HTTP ServerApache Traffic ServerBeispiele für einige Lastausgleichsalgorithmen sindHashRound RobinPower of Two Choices

2. Unterschied zwischen einem HTTP-Proxy und einem TCP-Proxy.

HTTP-ProxyTCP-Proxy
In einer demilitarisierten Zone (DMZ) wird er als Load Balancer oder als öffentlicher IP-Provider zur Abschirmung der Backend-Server eingesetzt.Er wird als Reverse Proxy für eine TCP-Verbindung zwischen dem Client und dem Server verwendet.
Erzeugt eine HTTP-Anfrage/Antwort.Öffnet eine TCP-Socket-Verbindung und überträgt Daten über sie.
Der HTTP-Proxy liest die Host-Adresse und verbindet sich mit dem entsprechenden Host.Der TCP-Proxy ändert die Daten nicht, da er sie nicht verstehen kann.
Neben HTTP kann er auch HTTPS- und FTP-Anfragen bedienen.Neben TCP kann er auch HTTP- und FTP-Anfragen bedienen.

Abschließende Überlegungen

Ein TCP-Proxy fungiert als Reverse-Proxy und auch als Lastausgleich. Beide Arten von Anwendungen befinden sich zwischen Clients und Servern, wobei sie Anfragen von ersteren entgegennehmen und Antworten von letzteren liefern.

Manchmal klingen der Reverse Proxy und der Load Balancer gleich und führen zu Verwirrung. Wenn Sie herausfinden, wann und warum Sie sie auf einer Website einsetzen können, werden Sie sie besser verstehen.

Das Sammeln von Daten ist eine immense Aufgabe und wichtig für ein etabliertes Unternehmen oder eine Neugründung. Es ist ein Prozess, der Markttrends, Konkurrenzanalysen und Kundenpräferenzen für die Entscheidungsfindung erfordert. 

ProxyScrape bietet Premium-Proxys, Proxys für Privatanwender und dedizierte Proxys zum Sammeln großer Datenmengen von Websites. Es gibt eine flexible Kombination von Proxys, aus der Sie wählen können, und die Preise sind ebenfalls erschwinglich. Weitere Informationen über die neu eingeführten Proxys, ihre Einsatzmöglichkeiten und die Vorteile, die ProxyScrape bietet, finden Sie in unserem Blog