Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Bash, Shell, PHP, Python, Perl, CGI
tangenta
Posts: 36
Joined: 2006-12-15 11:20

Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-12 22:16

Hallo,

ich möchte den Webspace von einem s4y Server auf einen anderen umziehen, da der momentane Server ein paar Macken hat und ich am besten eine Neuinstallation machen werde.
Auf dem "beschädigten" Server ist aber Webspace eines sehr wichtigen Kunden gehostet der imer erreichbar sein sollte. Deshalb mein Plan:

Au dem anderen Server WWW und e-mail Accounts 1:1 einrichten. Die Passwörter für die e-mail Accounts habe ich alle, also ist das kein Problem.

Wenn ich jetzt den Nameserver umstelle dauert das immer eine gewisse Zeit bis es im gesammten Internet "bekannt" ist. Deswegen mach ich am besten zusätzlich vom aktuellen Server auf den zukünftigen Server ein Portforwarding vom Port 80 (www) - Port 110 (pop3) - Port 25 (SMTP)
FTP ist dazu nicht nötig, da nicht beutzt!
Somit sollte die Umstellung ohne Ausfall möglich sein. Gehe ich da richtig in der Annahme?


Wie machet man das Portforwarding dann?

Systematisch sollte es ungefährt so aussehen:
iptables $IP $PORT FORWARD TO $IPNEW $PORTNEW

Habe einen Tipp bekommen das es mir rinetd gehen soll, aber soweit ich das sehe kann man damit nur einen einzigen Port forwarden und nicht mehere, also nicht so sinnvoll...

dtdesign
RSAC
Posts: 395
Joined: 2006-09-05 21:12
Location: Berlin

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by dtdesign » 2007-07-12 23:28

DNS-Wechsel meist innerhalb von 24 Stunden (12 Stunden i.d.R). Sonntags um 21 Uhr überträgst du den Domain, so dass der Montags gegen Nachmittag drüben ist. Die E-Mails die noch nicht abgeholt worden sind (wegen DNS-Wechsel) schickst du einfach an das entsprechende Postfach auf dem neuen Server weiter.

Forwarding halte ich ein wenig zu kompliziert dafür...

timeless2
Posts: 416
Joined: 2005-03-04 14:45
Location: Paris

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by timeless2 » 2007-07-13 09:33

Du kannst vorher eine Subdomain www2 für den neuen Server einrichten und das im Vhost als ServerAlias (neuer Server) setzen. Beim alten Server machst du einfach einen Redirect auf www2.example.com und die Anfragen landen automatisch am neuen Server. Nach ca. 24h landen die Anfragen direkt beim neuen Server.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 09:33

Mit der Antwort kann ich jetzt nichts anfangen.
Ich sollte wissen wie das mit dem forwarding geht.

Den Nameserver stelle ich selbst um, aber die Updates in den caching nameserver kann ich nicht beeinflussen und wann die ganzen Leute ihre Rechner rebooten oder die clients sich eine neue Nameserverabfrage holen kann ich auch nicht beeinflussen.
Auch Sonntagnacht nicht!

Ich suche einfach eine Lösung fürs forwarding, weil so funktionierts 100% ohne Ausfälle.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 09:36

www Serverredirect ist kein Problem. Die Schwierigkeit liegt bei POP3 und SMTP, wie mache ich da ein redirect?

Wenn das irgendwie geht ist das Problem gelöst!

Mit einem www redirect wird der neue Webspace aufregrufen und dort versendete Mailformulare liegen auch im Posfach auf dem neuen Server, aber abgeholt werden sie noch vom alten...

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 10:15

Man was sind das für besserwisserische Antworten.
WIe wichtig meine Kunden sind muss ja hier egal sein. Einen einen guten DNS Anbieter habe ich schätzungseise auch.
Aber DNS anfragen werden im Rechner zwischengespeichert und nicht bei jedem www Aufruf im Browser neu ausgeführt. Auch bei E-Mail abrufen mit dem Client werden die nicht jedesmal neu ausgeführt.

Warum lasst ihr nicht das Antworten wenn hier keine die Antwort auf meine Frage weis?

Warum muss man hier auf eine einfache Frage so ein riesen Zaubermachen mit vielen möglichen Lösungsansätzen die ich wohl kenne, aber die für diesen Zweck nicht geeignet sind.

Portforwading ist das Zauberwort, aber wie?

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 10:41

Also dann lasse ich mal die ganze Geschichte im Zusammenhang weg.

Nur die Frage, wie machet man das Portforwarding?

Systematisch sollte es ungefährt so aussehen:
iptables $IP $PORT FORWARD TO $IPNEW $PORTNEW

Und ich weis das es "man iptables" gibt, wäre aber trotzdem sehr hilfreich wenn mir jemand die Lösung verrät.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 14:27

Bin jetzt auf einen möglichen Lösungsansatz gekommen, was jedoch beim testen auch nicht wirklich funktioniert.

/usr/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 1.2.3.4 --dport 80 -j DNAT --to 5.6.7.8:80
/usr/sbin/iptables -A FORWARD -p tcp -i eth0 -d 5.6.7.8 --dport 80 -j ACCEPT

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

--------------

habe auch das mal pobiert was auch nicht funktioniert:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to 5.6.7.8:80

Das sind jetzt alles nur Beispiele zum testen mit Port 80 was auch mit dem rinetd gehen würde, aber wenn ich was finde wie es funktioniert, kann man das noch erweitern für die anderen Ports die ich zusätzlich benötige.

duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by duergner » 2007-07-13 14:39

Das Problem ist nicht die Hinrichtung, sondern die Rueckrichtung. D.h. du musst sicherstellen, dass die Antworten auch wieder ueber den ersten Server gehen. Kommen die Antworten direkt vom anderen Server dann passen die IP Adresse in Anfrage und Antwort nicht zusammen und werden nicht akzeptiert. (Wenn mich jetzt nicht alles taeucht und ich korrekt verstanden habe was du vorhast.)

Und auch wenn du es nicht hoeren willst, dann rate ich dir nochmal zu der Loesung mit entsprechenden HTTP Redirects zwischenzeitlich, ankommende Emails kannst du selbst entsprechend weiterleiten und POP3/IMAP wuerde ich einfach offline nehmen fuer den Zeitraum und die Kunden darauf hinweisen. Sollten deren Emails wirklich so wichtig sein, dann haben sie ja sowieso Zugriff ueber Webmail.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by Joe User » 2007-07-13 14:39

tangenta wrote:echo 1 > cat /proc/sys/net/ipv4/ip_forward
Das kann nicht funktionieren...

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-13 14:56

Joe: stimmt, das cat hatte ich wohl übersehen und gelöscht. Aber funktioniert trotzdem nicht...

duergner: sicher, die Pakete sollen dan natürlich nicht vom anderen Server zum Empfänger gehen, sonder wieder über den 1. Server und dann zum Empfänger.
So wie bei einem Firewall, da geht ja auch alles durch und wird nicht vom Sender direkt zum Empfänger geschickt, sondern immer über den Firewall.
Aber das hat mich jetzt auf eine neue Idee gebracht, das es vielleicht mit dem -j MASQUERADE funktionieren könnte.
Mal testen...

duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by duergner » 2007-07-13 15:11

Das sollte theoretisch auch gehn. dazu braucht man halt einen transparenten Proxy dazwischen.

duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by duergner » 2007-07-13 15:19

Hast du denn eigentlich auf dem 2. Server auch iptables Regeln eingerichtet, so dass dieser die entsprechenden Packete ueber den 1. Server wieder zurueck schickt? Wenn nicht wird das nicht gehn ausser ich habe da einen zu grossen Denkfehler drinnen.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-14 11:14

Auf dem zweiten Server ist nichts eingerichtet.
Das sollte funtionieren wie ein Gateway, so das alle anommenden Anfragen weitergeleitet werden. Ein Einwahlrouter macht das ja auch...
Genau so sollte es im Prinzip funktionieren.

Vom Grundsatz dürfen alle Ports bis aus 22 weitergeleitet werden, denn sonst ist der Server nicht mehr administrierbar.

Nach ein paar Tagen ist die Nameserverumstellung dann überall durch und das forwading kann wieder entfernt werden.

elch_mg
Posts: 302
Joined: 2006-01-23 19:14
Location: 41063

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by elch_mg » 2007-07-14 11:38

matzewe01 wrote:Ich kenne mich ja grundsätzlich nicht aus. Ober ist es nicht so, dass ein Server z.B. SMTP oder POP3 Verbindungen über Port 25 110 annehmen um danach einen freien Port mit dem Gegenüber auszuhandeln um über diesen Port zu sprechen.
Unsinn. Das ist bei aktivem FTP "so", jedenfalls so ähnlich. Aber sonst ist diese Firewall-unfreundliche Praxis meines Wissens nirgendswo im Einsatz.

Wenn du lediglich auf dem erstem Server die Weiterleitung einrichtest, werden alle Pakete an Nummer zwei weitergeleitet - mit der Quell-IP des anfragenden Rechners. Dein neuer Server wird also die Antwort-Pakete direkt an den anfragenden Rechner schicken, nur dass dieser mit der Quell-IP nix anfangen kann. Eine TCP-Verbindung ist eben nicht nur durch die Sequenz- sondern auch durch IP- und Port-Nummern festgelegt ;)

Abhilfe, und ab hier wirds dann so richtig fies:

Code: Select all

iptables -t nat -A POSTROUTING -o eth0 -d zwei.ter.ser.ver -j MASQUERADE
Quell-IP aus Sicht des neuen Servers ist dann der alte, die Antworten gehen dahin zurück, und der alte Server leitets dann weiter an den Client. Du musst nichts auf dem neuen Server verändern, d.h. sobald sich die DNS-Änderung rumgesprochen hat, läufts ohne weiteres.

Ich weiss noch nicht ganz, ob mir sowas gefallen würde.. Aber ich gehe davon aus, dass es die tatsächlich einzig praktikable Lösung ist.

P.S: Alle Ports bis auf 22 weiterleiten kannst du auch haben:

Code: Select all

iptables -t nat -A PREROUTING -p tcp --dport ! 22 -j DNAT --to neu.er.ser.ver

iptables -t nat -A PREROUTING -p udp -j DNAT --to neu.er.ser.ver
Bitte validieren, kann sein dass da nochn Fehler drin ist..

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-14 11:59

Hallo Elch_mg,
genau so hatte ich mir das gedacht!

Ich hab mir da heute Nacht was zusammengestellt. Ich denke das könnte so funktionieren, oder liege ich da jetzt falsch?

Code: Select all

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.2.3.4:80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 1.2.3.4:110
iptables -t nat -A POSTROUTING -p tcp --dport 110 -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 1.2.3.4:25
iptables -t nat -A POSTROUTING -p tcp --dport 25 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward
Laut deiner ersten Zeile braucht man nur das POSTROUTING und das PREROUTING kann man weglassen. Bin jetzt irgend wie verwirrt ob das funktioniert.
Testweise hats mit www Anfragen gestern schon funktioniert.

Aber die Lösung, "alles forwarden ausser SSH" würde ich bevorzugen, da es em sinnvollsten wäre.

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by snowball » 2007-07-14 13:03

Eine weitere Möglichkeit wäre rinetd.

Habe ich letzte Woche mit meinem Eigenen s4y Server auch gemacht.

1.) Neuen Server aufsetzen und Daten kopieren.
2.) Auf dem alten Server rinetd einrichten und die eigentlichen Dienste stoppen. Damit gehen dann alle Anfragen auf dem Port an die neue IP.
3.) DNS ändern.
4.) 24 bis 48 Stunden später kannst du denn alten dann abschallten.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-14 15:09

Das hatte ich im allerersten Posting zur Eröffnung des Themas bereits geschrieben:
Habe einen Tipp bekommen das es mir rinetd gehen soll, aber soweit ich das sehe kann man damit nur einen einzigen Port forwarden und nicht mehere, also nicht so sinnvoll...
Hast du da eine Möglichkeit wie man mehere Dineste weiterleiten kann? WWW, POP, SMTP :?:

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by snowball » 2007-07-14 15:16

tangenta wrote:Das hatte ich im allerersten Posting zur Eröffnung des Themas bereits geschrieben:
Habe einen Tipp bekommen das es mir rinetd gehen soll, aber soweit ich das sehe kann man damit nur einen einzigen Port forwarden und nicht mehere, also nicht so sinnvoll...
Hast du da eine Möglichkeit wie man mehere Dineste weiterleiten kann? WWW, POP, SMTP :?:
Ja, ist ganz einfach... einfach mehrere Zeilen angeben. Meine Konfig sieht z.B. so aus.

Code: Select all

0.0.0.0 25 [NEUEIP] 25
0.0.0.0 80 [NEUEIP] 80
0.0.0.0 110 [NEUEIP] 110
0.0.0.0 143 [NEUEIP] 143
0.0.0.0 443 [NEUEIP] 443
Allerdings hatte ich auch am Anfang Probleme mit aktivem FTP. Weil ich keine Lust hatte lange zu basteln, habe ich mir einfach die proxy-suite von suse installiert. in der FTP-Konfig einfach den Eintrag:

Code: Select all

DestinationAddress    [NEUEIP]
DestinationPort        21
machen und auch FTP wird an den neuen Server weiter geleitet. Waren alles in allem ca. 4 Minuten Arbeit. Also nicht zu kompliziert und für einen einfachen Umzug meiner Meinung nach ganz gut geeignet.

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-14 18:49

Die Weiterleitung der Daten funktioniert wunderbar mit rinetd!
WWW, SMTP, IMAP, POP3

Nur leider bleibt der rinetd Prozess ca. alle 5-10 Minuten stehen. Warum, kann ich nicht nachvollziehen?
Wenn ich ihn aber wieder starte funktioniert die Weiterleitung wieder anstandslos...
Gibt es eine Möglichkeit ständig zu kontrollieren ob ein Prozess noch aktiv ist und im Bedarfsfall den Prozess neu starten?

dtdesign
RSAC
Posts: 395
Joined: 2006-09-05 21:12
Location: Berlin

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by dtdesign » 2007-07-14 19:23

Absolute Notlösung Marke "Eher schlecht als recht":

Per Cronjob alle 5 Minuten den Dienst restarten.

elch_mg
Posts: 302
Joined: 2006-01-23 19:14
Location: 41063

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by elch_mg » 2007-07-14 19:31

Findet IMAP bestimmt sehr lustig. Lässt sich denn nicht herausfinden, worans liegt?

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-14 19:34

JA per script und cron geht das wohl schon, aber dann jede Minute 1 mal..
Die Lösung habe ich mir auch gedacht. Aber wenn dann jede Minute.
Ist aber nicht gut, weill wenn in Sekunde 1 der Dienst ausfällt und in Sekunde 0 wird gebprüft ob er noch läuft und neu gestartet, dann ist 59 Sekunden nichts da. Sehr schlecht...

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by Roger Wilco » 2007-07-14 23:34

Ein entsprechender Eintrag in der /etc/inittab funktioniert auch...

tangenta
Posts: 36
Joined: 2006-12-15 11:20

Re: Portforwarding meherer Ports von einem auf einen anderen public Server im Internet

Post by tangenta » 2007-07-15 00:35

Problem gelöst!

Llag wohl daran, dass das Logfile 2GB groß war. Habs gelöscht und das Logging abgeschalten und jetzt läufts bisher ohne Unterbrechung...