Wie fälscht man eine IP für eine Anwendung, die diese bestimmte IP benötigt?

Wie fälscht man eine IP für eine Anwendung, die diese bestimmte IP benötigt?

Im Allgemeinen gibt es ein solches Problem bei einem RHEL 6.4 Server-System mit einem Paar Netzwerkschnittstellen, die durch Bonding zu einer einzigen kombiniert wurden. Die IP-Adresse dieses Systems lautet: 10.7.7.1. Als nächstes läuft auf dem System eine Anwendung, die eine Verbindung zum MySQL-Server 10.7.7.2über Port 3306 herstellen muss. Und tatsächlich läuft MySQL auf 10.7.7.3. Die Verbindungseinstellungen in der Anwendung sind fest codiert und können daher nicht geändert werden. Das kann man hören durchiptablesAdressübersetzung durchführen. Wie kann man erreichen, dass, wenn die Anwendung versucht,10.7.7.2:3306 iptableswird abgefangen und eine Anfrage an gesendet 10.7.7.3:3306, eine Antwort zurückerhalten und diese an die Anwendung weitergeleitet?

Antwort1

Dies kann mit NAT-Regeln in iptables erfolgen.

Wenn sich der MySQL-Server auf demselben Host befindet, verwenden Sie eine REDIRECT-Regel. Leiten Sie alle Verbindungen an Port 3306 (und nicht an 10.7.7.3) zur erforderlichen Adresse um.

Wenn sich der MySQL-Server nicht auf demselben Host befindet, verwenden Sie eine DNAT-Regel.

Antwort2

Vorausgesetzt, dass

  • .1, .2 und .3 sind unterschiedliche Maschinen
  • Sie können die IP-Adressen von .2 und .3 nicht tauschen
  • .2 läuft unter Linux

Folgendes müssen Sie zu .2 hinzufügen:

-t nat -A PREROUTING  -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3
-t nat -A POSTROUTING -d 10.7.7.3 -p tcp --dport 3306 -j SNAT --to-source      10.7.7.2

JEDOCH...

Wenn Sie aus irgendwelchen Gründen keine iptables-Regeln auf .2 erstellen können und/oder den Datenverkehr auf .1 abfangen möchten, müssen Sie auf .1 nur Folgendes tun:

-t nat -A POSTROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3

verwandte Informationen