Traffic von Port an neuen Server weiterleiten

    • Offizieller Beitrag

    Trotz guter Planung und der Verwendung von DNS Einträgen statt IP Adressen lässt es sich bei einem Serverumzug oder einer Migration bei der die IP des neuen Host ändert fast nicht vermeiden dass ein Teil des Traffics vorübergehend noch auf dem alten Server landet. Um die Folgen davon zu eliminieren bzw. abzuschwächen kann dieser Traffic mittels iptables weitergeleitet werden.


    Den Ausschlag diese kleine Anleitung zu schreiben hat der Umzug unseres Teamspeak 3 Servers auf einen neuen Host gegeben. Da der TS3 Server mit einer NPL Lizenz zwar grundsätzlich auf mehreren authorisierten IP Adressen läuft, aber jeweils nur auf einer gleichzeitig konnte der präferenzierte Plan mit einem Parallelbetrieb in einer Übergangsphase nicht umgesetzt werden. Deshalb soll der TS3 Server nur noch auf der neuen Infrastruktur laufen und für Clients welche auf die alte IP verbinden wird der Traffic automatisch vom alten Host zwischen TS3 Client und neuem TS3 Server "durchgeschleust".

    Was dabei beachtet werden muss:

    - Der User bemerkt nicht dass er weitergeleitet wurde, ihm wird im Teamspeak 3 Server immer noch die alte IP auf welche er connected hat angezeigt
    - Für den neuen Host haben alle weitergeleiteten Pakete den alten Host als Absender und nicht die des Endusers


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


    oder

    Code
    sysctl net.ipv4.ip_forward=1


    Code
    iptables -A PREROUTING -t nat -i eth0 -p udp --dport 9987 -j DNAT --to-destination 10.10.100.100:9987
    iptables -A FORWARD -p udp -d 10.10.100.100 --dport 9987 -j ACCEPT
    iptables -A POSTROUTING -t nat -j MASQUERADE


    Bei mehreren Ports einfach Zeilen 1+2 ensprechend angepasst erneut ausführen.


    Für andere Dienste/Anwendungszwecke müssen In- und Output Adressen ggf. angepasst werden. Statt eth0 als Input kann z.B auch eine IP verwendet werden oder der Traffic auch auf einen Zielport welcher ungleich dem Quellport ist weitergeleitet werden. Das Protokoll, in diesem Fall UDP muss natürlich auch stimmen. Es kann auch komplett aller Traffic portunabhängig weitergeleitet werden, aber aufpassen dass ihr euch nicht selber aussperrt dadurch 8)



    Falls Kernel Module fehlen:

    Code
    Networking Support -> Networking Options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration ->  -*- Netfilter Xtables support (required for ip_tables)


    und

    Code
    Networking Support -> Networking Options -> Network packet filtering framework (Netfilter) -> IP: Netfilter Configuration -> <*> IP tables support (required for filtering/masq/NAT)


    Dies äussert sich durch Fehlermeldungen wie

    Code
    iptables v1.6.1: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.


    beim anlegen der Rules.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!