Teilweises weiterleiten auf internen Webserver

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Teilweises weiterleiten auf internen Webserver

Beitrag von s!sko » 30.03.2004 14:50:13

Hallo,

ich habe hier einen Woody 2.4.18 Webserver der zwei NICs hat, wobei die einte davon ins Intranet zeigt und die andere über eine feste IP ins Internet. Wobei zwischen den beiden NICs kein Forwarding (Routing) betrieben wird.

Nun gibt es im Intranet noch einen Windows Webserver, von diesem sollte nun auch eine bestimmte Seite vom Internet her zugänglich sein.

Meine Idee wahr nun das ich auf dem Woody Webserver dies mittels Iptables realisieren könnte, d.h. das anfragen vom Internet z.B. auf den Port 9090, weitergeleitet werden an den internen Webserver.

Leider bin ich noch ein newbie im umgang mit Iptables, ist dies so machbar oder gibt es eine bessere lösungen?

Danke und Gruss,
Yves

flow666
Beiträge: 29
Registriert: 02.02.2003 16:01:18
Wohnort: Diepholz
Kontaktdaten:

Beitrag von flow666 » 30.03.2004 15:24:35

Also so wie ich dich verstehe, soll wenn man auf http://webserver:80 zugreift die Seite verfügbar sein, die auf dem Debian-Server liegt und wenn ich dann auf http://webserver:80/seite/ gehe soll ich auf den Windows Webserver kommen, ja?
Da wäre es sinnvoll, das Apache Proxy Modul zu benutzen, das ist ein Modul, welches es ermöglicht Apache als Proxy einzusetzen, der Anfragen auf /seite/ auf einen - in deinem Fall - intenen Host weiterleitet. Wie genau das geht, kann ich dir leider auch nicht sagen, ich hab mit dem Proxy Modul noch nie gearbeitet.

Mfg,
flow

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 30.03.2004 15:43:44

Wenn eth1 Deine NIC ist, die ins Internet zeigt, und die IP Deiner Windoof-Büchse wäre zum Beispeil 192.168.0.100, dann:

Code: Alles auswählen

iptables -A PREROUTING  -t nat -i  eth1 -p tcp -s --dport 9090 -j DNAT --to 192.168.0.100:9090
Damit die Pakete aber auch wieder den Weg zurück ins Internet finden, sollte der Windoof-Rechner die Default-Route (Standard-Gateway) auf den Linux-Rechner haben.
Wenn das nicht geht, kann man noch was Gemeines machen (wenn beispielsweise Dein Linux-Rechner die IP 192.168.0.1 auf eth0 hat) :

Code: Alles auswählen

iptables -A PREROUTING  -t nat -i  eth1 -p tcp -s --dport 9090 -j DNAT --to 192.168.0.100:9090
iptables -A POSTROUTING -o eth0 -p tcp --dport  9090 -j SNAT --to 192.168.0.1
Wenn man das so macht, dann sieht es für den Windoof-Rechner so aus, als wenn eine Anfrage auf Port 9090 direkt vom Linux-Rechner kommt und nicht von aussen. Weil die beiden Rechner ja im gleichen Netz sind, braucht der Windoof-Rechner keine Default-Route auf den Linux-Rechner (und somit ins Internet).

Bei beiden Varianten werden http-Anfragen auf Port 9090, die Dein Linux-Rechner erreicht, auf die Windoof-Kiste weitergeleitet. Mit --dport kann man natürlich auch einen anderen Port definieren.

Gruss, mistersixt.

s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Beitrag von s!sko » 30.03.2004 15:46:58

Also so wie ich dich verstehe, soll wenn man auf http://webserver:80 zugreift die Seite verfügbar sein, die auf dem Debian-Server liegt und wenn ich dann auf http://webserver:80/seite/ gehe soll ich auf den Windows Webserver kommen, ja?
Deine variante hört sich gut an, was ich meinte in meiner Frage wahr eher so gemeint, wobei das Ziel das gleiche ist:

auf der Seite von http://webserver:80 hatts einen Link auf http://webserver:9090 wenn man diesen aufruft sollte man die Seite des internen webservers bekommen.

Werde die sache mit dem Apache Proxy mal ansehen.

Danke, Yves

s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Beitrag von s!sko » 30.03.2004 16:35:58

Deine Variante mistersixt scheint ja genau das zu sein was ich brauche :wink: ... hab das natürlich gleich ausprobiert mit folgenden befehlen, wobei bei mir: eth2 -> Internet, eth0 -> Intranet, 172.30.40.2 -> Windows-Server, 172.30.40.7 -> eth0:

Code: Alles auswählen

iptables -A PREROUTING -t nat -i eth2 -p tcp --dport 9090 -j DNAT --to 172.30.40.2:80
iptables -A POSTROUTING -t nat -o eth0 -p tcp --dport 9090 -j SNAT --to 172.30.40.7
Ich konnte die Option -s wie du es geschrieben hast nicht mit geben, da dann immer ein Fehler kam, ist dies nötig? Leider funktioniert es so leider noch nicht :cry: Anbei noch der aktuelle zustand:

Code: Alles auswählen

www-gibw01:~# iptables -L -t nat -vn
Chain PREROUTING (policy ACCEPT 864 packets, 95821 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:9090 to:172.30.40.2:80

Chain POSTROUTING (policy ACCEPT 8 packets, 734 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0          tcp dpt:9090 to:172.30.40.7
Danke, Yves

flow666
Beiträge: 29
Registriert: 02.02.2003 16:01:18
Wohnort: Diepholz
Kontaktdaten:

Beitrag von flow666 » 30.03.2004 16:43:22

Also bei mir tuts das mit den folgenden Befehlen:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 29900 -j DNAT --to-destination 10.100.0.8:29900
iptables -A FORWARD -d 10.100.0.8 -j ACCEPT

(Wobei: ppp0 == Internet Connection, 10er-Netz == internes Netz)

s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Beitrag von s!sko » 30.03.2004 18:02:51

Jup, jetzt funktioniertes auch bei mir... Habe den PREROUTING Eintrag wie von euch vorgeschlagen gesetzt und auf der Windows Kiste den Standardgateway geändert.

Noch einen schönen Abend, Yves

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 31.03.2004 08:30:35

s!sko hat geschrieben: Ich konnte die Option -s wie du es geschrieben hast nicht mit geben, da dann immer ein Fehler kam, ist dies nötig?
Danke, Yves
Ja, sorry, mit -s kann man noch angeben, dass diese Weiterleitung nur von bestimmten Source-Adressen passieren soll. Sprich, wenn man will, dass die Weiterleitung nur von http://www.debianforum.de passieren soll, gibt man "-s http://www.debianforum.de" an. Ansonsten das -s einfach ganz weglassen.

Wie auch immer, Du hast es ja auch so hinbekommen ;) !

Gruss, mistersixt.

s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Beitrag von s!sko » 31.03.2004 11:14:58

Noch ne kleine Frage: wenn ich die FORWARD policy auf DROP schalte und nur nachfolgende Einträge in den Iptables habe funktioniert das Port-Forwarding nicht mehr:

Code: Alles auswählen

iptables -A PREROUTING -t nat -i eth2 -p tcp --dport 9090 -j DNAT --to 172.30.40.2:80
iptables -A FORWARD  -d 172.30.40.2 -j ACCEPT
Brauchte es noch andere Einträge in der FORWARD chain?

Gruss, Yves

Antworten