Leiten Sie den Datenverkehr von einer IP und einem Port zu einer anderen IP und einem anderen Port um

Bei der Verwaltung von Servern wird häufig der Datenverkehr umgeleitet.

Angenommen, wir haben einen Server mit bestimmten Diensten, aber aus irgendeinem Grund ändern wir einen dieser Dienste (Ich weiß nicht, zum Beispiel pop3, das ist Port 110) auf einen anderen Server. Die normale und häufigste Sache wäre, einfach die IP im DNS-Eintrag zu ändern. Wenn jedoch jemand die IP anstelle der Subdomain verwendet, ist dies betroffen.

Was ist zu tun? ... leiten Sie den von diesem Server über diesen Port empfangenen Datenverkehr einfach auf einen anderen Server mit demselben Port um.

Server-Node-LAN-Ethernet

Wie leiten wir den Verkehr um?

Das erste ist, dass wir das aktiviert haben müssen Weiterleitung Auf dem Server werden wir dazu folgendes setzen:

echo "1" > /proc/sys/net/ipv4/ip_forward

Alle in diesem Lernprogramm gezeigten Befehle müssen mit Administratorrechten ausgeführt werden. Ich empfehle, dass sie direkt mit dem Root-Benutzer ausgeführt werden.

Sie können auch diesen anderen Befehl verwenden, falls der vorherige für Sie nicht funktioniert (Das ist mir auf einem CentOS so passiert):
sysctl net.ipv4.ip_forward=1
Dann werden wir das Netzwerk neu starten:

service networking restart

In RPM-Distributionen wie CentOS und anderen wäre es:

service nertwork restart

Jetzt kommen wir zu dem Wichtigen und teilen dem Server dies mit iptables was umzuleiten:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

Mit anderen Worten, und nach dem Beispiel, das ich erwähnt habe, nehmen wir an, wir möchten den gesamten Datenverkehr, den unser Server über Port 110 empfängt, auf einen anderen Server umleiten (Beispiel: 10.10.0.2), die diesen Verkehr weiterhin über 110 empfangen wird (es ist der gleiche Dienst):

iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110

Der 10.10.0.2-Server sieht, dass alle Pakete oder Anforderungen von der IP des Clients stammen, falls er die Anforderungen schwimmen möchte, dh, dass der 2. Server sieht, dass die Anforderungen mit der IP des 1. Servers (und in der was wir die Umleitung anwenden), wäre es auch, diese zweite Zeile zu setzen:

iptables -t nat -A POSTROUTING -j MASQUERADE

Einige Fragen und Antworten

Im Beispiel habe ich bei beiden Gelegenheiten denselben Port verwendet (110), sie können jedoch den Datenverkehr problemlos von einem Port zum anderen umleiten. Angenommen, ich möchte den Datenverkehr von Port 80 auf 443 auf einem anderen Server umleiten. Dies wäre:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443

nämlich iptablesSie können alle anderen uns bekannten Parameter verwenden. Wenn wir beispielsweise nur Datenverkehr von einer bestimmten IP umleiten möchten, müssen Sie -s hinzufügen … Zum Beispiel werde ich nur den Verkehr umleiten, der vom 10.10.0.51 kommt:

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Oder ein ganzes Netzwerk (/ 24):

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Wir können die Netzwerkschnittstelle auch mit -i angeben ::

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Das Ende!

Dies ist, wie ich bereits sagte, iptables, Sie können anwenden, was bereits bekannt ist, so dass der Server genau das tut, was Sie wollen 😉

Viele Grüße!

DedicatedServer_SubImage


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Fer sagte

    Wir können dies auch von einer Firewall aus tun, die eine Portweiterleitung ermöglicht, oder? (Anwendung der entsprechenden Regeln).

    1.    KZKG ^ Gaara sagte

      Ja, am Ende verwendet eine Firewall wie Pfsense oder andere iptables von hinten.

      1.    Dhunter sagte

        Um genau zu sein, verwendet pfsense keine iptables, aber pf, denken Sie daran, dass es sich um eine bsd handelt.

        1.    KZKG ^ Gaara sagte

          Oh richtig, mein schlechtes!

  2.   Nicolas sagte

    Vielen Dank für den Tipp 🙂

    Ich habe ein paar Zweifel:
    1 - Ist die Änderung dauerhaft? oder geht es beim Neustart des Servers verloren?
    2 - Ich habe mehrere Instanzen (z. B. A, B und C) im selben Subnetz. In Beispiel A wende ich die Regel an, um Datenverkehr an eine externe IP weiterzuleiten, und beim Testen mit Locken aus den Instanzen B und C wirkt alles Wunder. Das Problem ist, dass es ab Instanz A nicht funktioniert. Ich habe versucht, sowohl Ihre IP- als auch die Loopback-Oberfläche zu verwenden, und beides funktioniert nicht:
    $ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –zum Ziel xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT –zum Ziel xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_world
    Curl: (7) Verbindung zum IP-JJJJ-Port 8080 fehlgeschlagen: Verbindung abgelehnt
    $ curl localhost: 8080 / hello_world
    Curl: (7) Verbindung zum Localhost-Port 8080 fehlgeschlagen: Verbindung abgelehnt

    Irgendeine Idee, was das Problem sein könnte?

    1.    KZKG ^ Gaara sagte

      Ja, die Änderung geht beim Neustart verloren. Sie müssen iptables-save & iptables-restore oder ähnliches verwenden, um dies zu vermeiden.
      Ich habe nicht ganz verstanden, was Sie tun möchten, Instanz A?

      1.    Nicolas sagte

        Ich habe einen Server, der nur Verbindungen von einer bestimmten IP (Server A) unterstützt. Ich kann oder möchte der Whitelist keine weiteren IPs hinzufügen (aus Gründen der Skalierbarkeit), daher möchte ich, dass der gesamte Datenverkehr zum externen Server durchläuft besagter Server (A).
        Aus praktischen Gründen habe ich globale Konfigurationen, die definieren, welche IP für jeden Dienst verwendet werden soll. In diesem Fall ist es also so etwas wie "Jeder, der den externen Dienst nutzen möchte, muss IP A verwenden".
        Dies wurde erfolgreich mit der Methode in diesem Artikel erreicht, aber ich stoße auf das Problem, dass Server A beim Anwenden nicht über seine eigene IP auf den Dienst zugreifen kann (aber alle anderen Server tun dies).
        Bisher war es das Beste, das Mapping in die Datei / etc / hosts von Server A einzufügen, auf die externe IP zu verweisen und die globale Einstellung zu überschreiben.

  3.   Braybaut sagte

    Sehr gut, wenn ich einen anderen Mailserver habe, könnte ich den Datenverkehr von Port 143 von Server1 zu Server2 weiterleiten und die E-Mails erreichen mich auf Server2, oder?

    Grüße

    1.    KZKG ^ Gaara sagte

      Theoretisch funktioniert das ja so. Sicher, Sie müssen den Mailserver ordnungsgemäß auf Server2 installiert haben

  4.   MSX sagte

    Die Art von Posts, die wir gerne lesen, danke!

  5.   Abraham Ibarra sagte

    Ausgezeichneter Artikel, ich habe ein Projekt, in dem ich arbeite, und ich wollte Ihnen eine Frage stellen. Es gibt industrielle Switches mit NAT-Funktion (ich nehme an, sie verwenden unten IPTables), um eine IP-Adresse zu übersetzen, ohne Änderungen an der Ausrüstung vorzunehmen Beispiel: Ich habe einen Server 10.10.2.1, der mit 10.10.2.X-Computern kommuniziert und über den Switch so programmiert ist, dass ein Computer mit der Adresse 192.168.2.4 vom Server tatsächlich als 10.10.2.5 angezeigt wird. Er hat diese IP übersetzt Adresse zu sehen Von den anderen Computern mit dieser Adresse möchte ich dies von einem Server mit Ubuntu oder einer anderen Distribution aus tun. Wie lauten die iptables-Regeln?

  6.   Kuk sagte

    Sehr gute Infos danke ^ _ ^

  7.   Yis sagte

    Guten Tag.
    Ich habe ein Problem beim Versuch, eine Umleitung durchzuführen. Ich erkläre:
    Ich habe einen Proxyserver in Ubuntu mit 2 Netzwerkkarten:
    eth0 = 192.168.1.1 ist mit dem Rest des lokalen Netzwerks verbunden.
    eth1 = 192.168.2.2 ist mit dem Router verbunden.
    Ich brauche alles, was über eth0 kommt, um über eth1 und auch über den Proxy zu gehen (ich verwende Squid, dessen Standardport 3128 ist), und ich kann den Schlüssel in der IPTABLES-Konfiguration nicht finden.
    Ich brauche keinerlei Einschränkung, nur dass ein Datensatz im Protokoll der besuchten Webadressen verbleibt.

    Ich hoffe, Sie können mir helfen, da es eine ziemlich umständliche Aufgabe ist, die mich seit ein paar Tagen beunruhigt.

    Danke.

  8.   Armin sagte

    Freund, ich bin sehr neu in anderen Servern, ich habe keine Ahnung, aber ich verstehe das Thema und lerne schnell. Meine Frage lautet: Ich habe 2 Server serv_1 und serv_2, die ich mit demselben Intranet verbunden habe. Auf diesen Servern habe ich eine eigene Cloud eingerichtet. Ich möchte Folgendes tun:

    dass ein bestimmter Bereich von ips, z. B. rangeip_1, wenn eine Zugriffs-IP auf die owncloud (ipowncloud) platziert wird, auf serv_1 gerichtet ist, und wenn es sich um einen anderen rangeip_2 handelt, der dieselbe ipowncloud auf serv_2 gerichtet ist, damit sich die beiden Server befinden In zwei verschiedenen Städten sind die IP-Bereiche unterschiedlich, aber sie befinden sich alle im selben Netzwerk. Dies wäre der erste Teil. Der zweite Teil wäre klar, diese beiden Server so zu synchronisieren, dass sie Spiegel sind, oder dass sie mir dies empfehlen, um die Breite zu optimieren Band, bitte, wenn du mir erklären willst, wie es Schritt für Schritt geht, nicht Super Programmer Mode = (

  9.   Antonio Carrizosa sagte

    Hallo, entschuldigen Sie, ich habe einen Switch, der für die Kommunikation aller Geräte zuständig ist, aus denen mein Netzwerk besteht, und danach eine Firewall und schließlich den Internetzugang. Was passiert, ist, dass ich möchte, dass die Umleitung im Internet erfolgt wechseln und muss die Firewall nicht erreichen, es sei denn, der angeforderte Dienst ist Internet.

  10.   John sagte

    Können Sie mit dieser Methode HTTPS zu HTTP umleiten?

  11.   mati sagte

    Hallo, vielleicht ist es etwas spät, aber ich wollte Sie fragen, wie ich Squid dazu bringen soll, die IP des Clients nicht zu ändern, wenn ich eine Verbindung zu einem Webserver im selben Netzwerk herstellen möchte.

  12.   lafat32 sagte

    Behandle mich nicht schlecht, wenn du fragst. Kann das unter Windows gemacht werden?

  13.   Martin sagte

    Diese Informationen waren für mich nützlich. Wie immer kann man euch vertrauen, wenn ich nichts auf Englisch finde, schaue ich normalerweise auf Spanisch. Bei diesen Gelegenheiten komme ich fast immer auf diese Seite. Danke.

  14.   Seba sagte

    Ich habe einen 4G-Router, der ein Client eines Netzwerks ist, das ich nicht verwalte (offensichtlich bin ich ein Client)… dieser Router ist ein Gateway zu diesem entfernten Netzwerk über OpenVPN. Außerdem erfüllt dieser Router im Feld die Funktion der Portweiterleitung auf den Zugangsport 80 des Servers eines dieser Subnetze.

    Dies war die Deklaration, die ich im Router als benutzerdefinierte Firewall-Regel «-t nat -A POSTROUTING -j MASQUERADE» einfügen musste.

    Danke für die Hilfe!