Port auf anderen server umleiten mit sichtbarere client-ip

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
demux
Posts: 77
Joined: 2002-06-17 11:39

Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

Ich möchte gerne einen port umleiten. Das funktioniert mit portfwd auch ganz gut, aber der zielrechner (zudem ich umleite) sieht immer die IP des umleit-servers, und nicht des users im internet.

Kennt jemand eine möglichkeit, das ich das so hinbekomme, das der zielserver die IP des users sieht?

Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by Roger Wilco »

Demux wrote:Kennt jemand eine möglichkeit, das ich das so hinbekomme, das der zielserver die IP des users sieht?
Sofern es portfwd unterstützt, könnte die ursprüngliche IP-Adresse in HTTP_FORWARDED_FOR stehen, ansonsten hast du vermutlich Pech.

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

Roger Wilco: portfwd ist ein allgemeiner TCP/UDP Forward-Proxy und ist nicht auf HTTP beschraenkt.

Demux: Warum nicht iptables FORWARD nehmen?

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

dodolin wrote: Demux: Warum nicht iptables FORWARD nehmen?
Sagen wir es mal so: Ich habe es nicht hinbekommen :-( Portfwd ist extrem genial.

Wenn du mir eine regel mit iptables machen würdest, wäre super.

Beispiel: http://www.domain1.de:88 -> 123.123.123.123:89

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

Du suchst DNAT. Schau dir mal das NAT Howto an: http://www.iptables.org/documentation/H ... HOWTO.html

Insbesondere Kapitel 3 und 6.2. Wenn dann noch Feinheiten fehlen, sollte die manpage weiterhelfen.

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

So, nachdem ich mich schon früher viele stunden mit der sache beschäftigt hatte. Habe ich es nun nochmal probiert und jede möglichkeit durchprobiert.

Wenn ich also "123.123.123.123:888" eingebe, sollte ich auf 122.122.122.122:80 landen.

Hier der iptables code:

Code: Select all

iptables -t nat -A PREROUTING -p tcp -i eth0  
               -d 123.123.123.123 --dport 888 -j REDIRECT --to 122.122.122.122:80 --verbose
Geht aber leider nicht. :-(

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

Hast du /proc/sys/net/ipv4/ip_forward schon auf 1 gesetzt?

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

dodolin wrote:Hast du /proc/sys/net/ipv4/ip_forward schon auf 1 gesetzt?
Ja, ist auf 1. Man sieht die regel auch nicht, wenn wenn man iptables --list eingibt. Müsste die nicht dann aufgelistet werden?

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

iptables -t nat -L
iptables -L

Am besten mal beides hier posten.

Nachdem ich mir deine Regel jetzt mal genauer angesehen habe: Du benutzt REDIRECT. Das kann ja gar nicht gehen, denn das ist nur zur lokalen Umleitung gedacht (siehe Doku!). Ich sagte doch, du suchst DNAT.

http://www.iptables.org/documentation/H ... html#ss6.2

3. Beispiel. Was weiter unten unter "Redirection" steht trifft auf dich NICHT zu.

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

Ich habe jetzt diese regel erstellt:

Code: Select all

iptables -t nat -A PREROUTING -p tcp --dport 88 -i eth0 
               -j DNAT --to 123.123.123.123:80 --verbose
Und das zeigt "iptables -t nat -L"

Code: Select all

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere           tcp dpt:kerberos to:123.123.123.123:80

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Geht aber immer noch nicht :-(

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

Du hast iptables -L immer noch nicht gepostet. Ist FORWARD auf policy accept und sonst leer?

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

Sorry, ich habe es nicht gepostet, weil nichts drinnsteht.

Code: Select all

iptables  -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

So, nachdem ich mich nun wieder stundenlang damit beschäftigt habe, und es mit iptables NICHT funktioniert, wäre es genial wenn mir jemand sagen könnte, wie ich mein oben geschildertes "problem" im griff bekomme.

danke!

dopefish
Posts: 142
Joined: 2003-02-06 12:57
Location: Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dopefish »

dazu müsste man wissen was genau bei dir scheifläuft. schnapp dir mal tcpdump und schau ob die pakete richtig umgeschrieben werden, ob sie am neuen ziel ankommen, ob die antwortpakete vom ziel auch abgeschickt werden,....
schreibst du die antwortpakete auch um? die cleints wissen ja nichts davon, dass du mitten drin den zeil änderst, wenn du kein SNAT machst auf die antwortpakete dann schickt dein client ein paket an server A und bekommt antwortpakete von server B (den er natürlich verwirft).

deshalb hat es auch mit portfwd geklappt, der hat den absender auch umgeschrieben damit die antwortpakete auch an ihn zurückkommen damit er sie wieder an den client schicken kann.

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by dodolin »

schreibst du die antwortpakete auch um?
Das macht iptables automatisch ohne separate Regel. Der Rest deiner Aussage ist daher ob dieser falschen Annahme obsolet.

Der Tipp, mit tcpdump zu schauen, was reinkommt und was rausgeht ist aber sicher ganz hilfreich, wenn man ansonsten keine Ideen mehr hat. Ich wuerde dann auch auf dem neuen Ziel (123.123.123.123) sniffen, um dort zu sehen, ob und was ankommt.

demux
Posts: 77
Joined: 2002-06-17 11:39

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by demux »

Ich habe jetzt wie wild per tcpdump gesnifft. Direkte pings kommen an, nur leitet er nicht um. Kein ahnung wieso. Irgendwie klappen die regeln nicht.

Gibt es keine besseren beispiele? Wie schaffe ich es z.b. auf einen port zu pingen um die umleitung zu testen?

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by captaincrunch »

ICMP (oder wie du so schön sagst "ping") kennt keine Ports. Warum testest du nicht per telnet z.B. auf Port 80?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

darkman
Posts: 104
Joined: 2004-03-24 14:09

Re: Port auf anderen server umleiten mit sichtbarere client-ip

Post by darkman »

Hallo,

das kann alles garnicht funktionieren, solang nicht folgendes
gegeben ist: Der Server zu dem Du umleitest, schickt alle bzw.
mindestens diese umgeleiteten Pakete wieder ueber den Umleit-Server
zurueck. Grund: Die umgeleiteten Pakete werden natuerlich veraendert
vom Umleitserver (damit sie ein neues Ziel haben), diese Aenderung
kommt dann so auf Deinem Zielserver an. Wenn der Zielserver jetzt
antwortet, kommt die Antwort von einem ganz anderen Server als der,
mit dem der Client eine Verbindung hat, ergo er verwirft sie.
Wuerde der Umleitserver jetzt die Antwort durchreichen, wuerde er sie
automatisch umschreiben so das alles wieder stimmig ist.
2 moegliche Loesungen:
1. default-route ersetzen (der totale Overkill)
Du baust ein VPN von dem echten Server zum Umleitserver und schickst
da alles durch (quasi defaultroute ersetzen)
-> Problem: viel Traffic quer duchs Netz, Fehleranfaellig, der Umleitserver muss ggfs. alles NAT-en und die echte IP des Zielservers
ist quasi nicht mehr nutzbar

2. Traffic-Based-Routing (bisschen aufwand, koennte bei gutem Setup
aber ideal sein)
Du hast wieder das VPN zw. den beiden Servern und machst ein neues
Routingtable (geht mit dem iproute2 Zeug) und arbeitest mit iptables
MARKing Support um alle Antwortpakete zu markieren und anschliessend
ueber den Umleitserver rauszurouten.

Das ganze faellt dann weg, wenn der Zielserver per "default" eh ueber
den Umleitserver geht (z.B. wenn der "Umleitserver" die Firewall/das
Gateway ist).

Wenn all das nix fuer Dich ist, bleibt nur Deine Portfwd-Loesung,
nur dabei verlierst Du halt die ClientIP.

Gruss,
Darkman