Unter iptaples wäre(!) das nur ein Befehl für so eine pauschale Weiterleitung. Allerdings gibt es da ein paar Probleme:, die dafür sorgen, dass so eine Weiteleitung nix bringt:
- Du kannst auf den alten Server nicht mehr zugreifen kannst (z.b. auch nicht mit ssh), weil ja schließlich alles weitergeleitet wird. (kleineres Problem)
- Du musst genauso alle Pakete rückwärts über deine IP1 routen bzw. die Absenderadresse von Pakten IP2->Client auf IP1 setzen, weil sonst Server und Client von unterschiednlichen Verbindungen reden.
Hintergrund ist folgender: Jede Verbindung wird als 5 Tupel identifiziert: (Client-IP, Client-Port, Server-IP, Server-Port, verwendetes Transportprotokol).
Wenn du nur Pakete von Server-IP1 zu Server-IP2 weiterleitest, hast du aus Sicht deines Clients eine Verbindung (Client-IP, Client-port, Server-IP1, Server-Port, verwendetes Transportprotokol), weil der Client ja denkt, dass er mit der IP1 kommuniziert.
Der neue Server hat aber eine Verbindung (Client-IP, Client-port, Server-IP2, Server-Port, verwendetes Transportprotokol), weil dieser ja nicht mitkriegt, dass das Paket weitergeleitet wurde.
TCP-Verbindungen (verbindungsorientiert) könnten so schonmal gar nicht zustande kommen. Allein der Aufbau schlägt schonmal fehl.
Bei UDP-Verbindungen bin ich mir grad etwas unsicher. Der Client Socket würde die Pakete zwar annehmen, aber ich kann mir nicht vorstellen, dass irgendeine Application akzeptiert, dass die UDP-Datagrams zu einer Adresse x rausgehen und von einer Adresse y zurückkommen.
- Du kriegst sowieso durch die Weiterleitung ein höheres Delay, was auch nicht so toll ist, da du vermutlich viele Streams hast (wegen UDP)?
Die Sache ist also etwas komplizierter, weshalb es z.B. auch rinetd gibt.
Dennis