Archiv verlassen und diese Seite im Standarddesign anzeigen : bridging mit Iptables???
Hallo zusammen,
habe ein problem, und zwar wollte ich fragen ob es möglich ist mit Iptables Bridging zu machen? Vielleicht gibt es auch eine andere Möglichkeit für mein Problem.
Und zwar habe ich hinter meiner Firewall mehrere Webserver stehen (also müssen über Port 80, 443 ... usw erreichbar sein). Jetzt kann ich ja mit DNAT den Port 80 zB an die IPadresse 141.52.X.Y weiterleiten. Bloss habe ich nun mehrere Webserver die den Port 80 brauchen, was mach ich nun? Ich habe überlegt ob es mit bridging funktioniert?! Kann mir da jemand weiterhelfen???
Danke schon mal im Vorraus
Gruss Sascha
Original geschrieben von Duffy1905
Hallo zusammen,
habe ein problem, und zwar wollte ich fragen ob es möglich ist mit Iptables Bridging zu machen? Vielleicht gibt es auch eine andere Möglichkeit für mein Problem.
Und zwar habe ich hinter meiner Firewall mehrere Webserver stehen (also müssen über Port 80, 443 ... usw erreichbar sein). Jetzt kann ich ja mit DNAT den Port 80 zB an die IPadresse 141.52.X.Y weiterleiten. Bloss habe ich nun mehrere Webserver die den Port 80 brauchen, was mach ich nun? Ich habe überlegt ob es mit bridging funktioniert?! Kann mir da jemand weiterhelfen???
Danke schon mal im Vorraus
Gruss Sascha
du hast leider pro ip nur einen port tcp port 80 :(
Ja das ist mir auch klar, aber mit DNAT kann ich nicht einen Port an mehrere IPs weitergeben!!! Meine Firewall selbst hat ja auch noch eine IP (eigentlich auch ein Risiko).
Ich glaube du hast mein Prob nicht verstanden.
Ich habe mehrere Webserver hinter der Firewall. Möchte jetzt jemand vom Inet auf einen der Webserver zugreifen gelangt er ja als erstes zur Firewall.
jetzt habe ich zB 4 Webserver:
-141.52.X.W1
-141.52.X.W2
-141.52.X.W3
-141.52.X.W4
jetzt kann ich mit de Dnat sagen, gebe alle anfragen an den Port 80 weiter an die IP 141.52.X.W1.
Was ist jetzt aber mit den anderen Servern, ich kann ja nicht einen Port an mehrere IPs weitergeben?!
mach doch einfach mehrere regeln, und ergänze sie um die destination mit -d
dnat kann randomly ziel-ips für ein und den selben port vergeben
wenn alle webserver das gleiche "anbieten" wäre das eine art load-balancing
ansonsten kannst du, wenn du verschiedene inhalte anbietest, doch mit dem string match arbeiten und die pakete entsprechend forwarden
greez
jo also ich probier das jetzt mal mt Dnat. Trage für jede IP meine gewüschten Ports ein. Also ihr meint das geht? Wird dann das paket etwa an jede IP geschickt über den Port 80?
ne geht nicht, bringt ne Fehlermeldung:
unknown arg `--to-destination'
Bad argument `80'
habe das jetzt mal mit Harrys generator gemacht.
Die DNAT regeln sehen dann so aus:
Für X steht immer bsw 60 beim nächsten 61 dann 62 dann 63 ist en bißle blöd gemacht von mir
also sind immer 4 verschiedene Server. Ich gebe für alle 4 server Port 80, 443 und 22 frei
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
# NAT fuer HTTPS
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 443 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 443 -j ACCEPT
# NAT fuer HTTPS
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 443 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 443 -j ACCEPT
# NAT fuer HTTPS
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 443 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 443 -j ACCEPT
# NAT fuer HTTPS
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 443 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 443 -j ACCEPT
# NAT fuer SSH
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 22 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 22 -j ACCEPT
# NAT fuer SSH
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 22 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 22 -j ACCEPT
# NAT fuer SSH
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 22 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 22 -j ACCEPT
# NAT fuer SSH
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 22 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 22 -j ACCEPT
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d --dport 80 -j ACCEPT
ich grüble noch, wer von euch am thema vorbei schliddert ;)
mal grundsätzlich:
1.) vier regeln hinteinander für ein und denselben port wird dir nix bringen
2.) sind die vier server dahinter gleich? bieten sie alle das selbe?
cu/2 iae
Ja bieten alles den selben dienst an, sind alles Webserver, also ich brauche auf den Servern, port 80, 443, 22, und den SMTP.
Wie kann ich das dann umsetzten???
also möchtest du soetwas wie loadbalancing machen?
dann siehe nat-howto:
6.3.1. Auswahl von mehrere Adressen in einer Reihe
Wenn eine Reihe von IP-Adressen gegeben ist, wir diejenige
ausgewaehlt, die im Moment am wenigsten fuer IP-Verbindungen, von
denen die Maschine weiss, benutzt wird. Dies macht primitives 'load-
balancing' moeglich.
oder auch random, alle vier einträge mit random 25% versehen ... unsauber aber sieht lustig aus ...
fortgeschrittene lösungen:
http://www.linuxvirtualserver.org/
was solls seein?
mom ich glaube du meinst was anderes.
Ich habe mehrere Webserver (nur webserver!!!)
bsw 4 Stück!!! Aber auf jeden Server liegen andere Inhalte!
ei siehst, das ist was anderes
nur mal visualisiert
stell dir vor:
wenn du den botschafter von <land> besuchen willst, wie gehst du vor?
du fährst nach <stadt>
du fährst in die <name>-Str.
gehst zu Haus <Nr.>
gehst in <zimmer>
und da sitzt er.
wenn du vier verschiedene WebServer, wahrscheinlich auch noch mit vier verschiedenen domains betreiben willst, wird das nix mit einer ip-adress und einem port. wenn dann mußt du entweder drei server virtualisieren, also einer wird DEIN webserver, oder du holst dir vier ip-adressen ODER arbeitest mit vier verschiedenen ports, womit du viele proxy's ausschließt.
cu/2 iae
ps: ich dacht das wären netzwerkgrundlagen? wer schafft es vier webserver ohne diese grundlagen zu betreiben?
ich glaube ich habe mich vorhin falsch ausgedrückt, sorry!!!
Ich habe vier Webserver und jeder Webserver hat seine eigene IP (nach außenhin sichtbare!!!)
was denn nun?
zählen wir mal
- vier Webserver
- vier öffentliche IP-Adressen
- ein Router
und jetzt möchtest Du die vier öffentlichen IP-Adressen vier verschiedenen IP-Adressen im LAN, in Deinem Fall die vier WebServer zuordnen.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 141.52.248.X
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
auf eth0 sind die öffentlichen Adressen gebunden?
141.52.248.X sind die privaten Adressen?
dann fehlt dir als erstes mal die IP-Adress, auf welcher die Anfragen für die einzelnen WebServer ankommen, Du mußt also
vier Regeln
mit jeweils verschiedenen öffentlichen-Ip-Adresse:Port auf vier interne IP-Adresse "natten"
Das snat raus, sonst liest im log nur noch anfragen vom router
cu/2 iae
mom, noch mal ganz von vorne, ich habe ja nicht gesagt das ich das alles mit DNAT machen will, ich habe gefragt ob das damit machbar ist.
Also ich habe 4 Webserver die öffentliche IPs besitzen und auch beibehalten sollen.
Diese Webserver sind momentan über einen Router mit dem Internet verbunden, aber ungeschützt. Ich habe jetzt eine Firewall mit IPtables aufgesetzt. Diese funktioniert nicht. Der Grund ich habe 4 Webserver, jeder Server muss über die Ports 80,443 ... angesprochen werden. Ansonsten sollen sie aber geschützt sein! Und jetzt will ich wissen wie ich das umsetzen kann?!?!?! Verstehst du mein Prob???
(sorry bin ein totaler newbi bei Linux und Iptables)
*räusper*
hm vielleicht sollte man die überschrift lesen ;) da steht ja bridging.
think future fällt mir spontan ein, und da meine frau mir gesagt hat, ich soll ihr das denken überlassen, hab ich einfach google gefragt und der gab mir das
http://www.think-future.de/DOCUMENTATION/Ethernet-Bridge-netfilter-HOWTO_de/other_formats/Ethernet-Bridge-netfilter-HOWTO_de.txt
stand auch gleich an erster stelle ;)
damit solltest du eigentlich weiter kommen
cu/2 iae
nunja, wers dennoch mit iptables machen will:
wie oben schon gesagt: mit dnat wirst du da nicht glücklich, weil dabei die ziel-ip´s random verteilt werden !
nun gänge es noch mit der string extension (modul laden)
da sicher jeder deiner webserver versch. DNS namen hat, kannst du danach filtern und naten
greez
Such auch mal nach Proxy-ARP. Die Installation klingt schwerer als sie ist. Einfach im Kernel Proxy-ARP aktivieren (echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp) (auch für eth1), damit spart man sich die Pflege der ARP-Tabelle. Dann noch die Routing-Tabelle anpassen - fertig. Danach kannst Du mit einen Firewallskript ganz normal filtern.
Gruß Swen
Der Rechner braucht dann natürlich 2 Netzwerkkarten mit 2 öffentliche Adressen!
sorry freunde das ich mich hier so einmisch.... hab nämlich nur ne frage zum Thema ;)
Eine bridge gibt "alles" einfach mal weiter oder? Lieg i da richtig? Deshalb kann man wenn das so looft alle 4 Webserver danach erreichen und ich kann auf der Bridge auch filtern.
Hab i des jetzt kapiert?????
;)
Gruß Temp
Original geschrieben von Temp
Eine bridge gibt "alles" einfach mal weiter oder?
was verstehst du unter "alles"
Deshalb kann man wenn das so looft alle 4 Webserver danach erreichen und ich kann auf der Bridge auch filtern.
was heißt looft? wahrscheinlich ist noch zu früh für mich ...
cu/2 iae
ps: wer is "i"?
sollte normal so funktionieren!!!!!!!!
Danke noch mal für eure Tips! Teste es jetzt mal in der
Praxis, werde nacher noch mal Posten
Ich glaube nicht, dass Bridging hier die gesuchte Funktionalität war. Es wird hier wohl eher die Möglichkeit gesucht den Router als kombinierten Router/Paketfilter zu verwenden.
Wenn der Router bereits eine Linuxkiste war, sollte es sich um ca. 8 iptables-Zeilen handeln.
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 141.52.248.X --sport 80 -j ACCEPT
[hier die anderen 6 Regeln einsetzen]
Naja, evtl kann man das mit subnetzen verbessern.
HTH
aha, jo bridging kommt seid ca 5 minuten auch nicht mehr in Frage!
Und zwar wurde mein Netz in zwei netze geteilt. Jetzt soll die FW zwischen
Netz 1 und 2 stehen.
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
Geht das wirklich??? Ich habe mehrere Server die über den Port erreichbar sein müssen!!! Das ist doch wieder DNAT?!
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 141.52.248.X --sport 80 -j ACCEPT
Original geschrieben von Duffy1905
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
Geht das wirklich??? Ich habe mehrere Server die über den Port erreichbar sein müssen!!! Das ist doch wieder DNAT?! Ja sowas geht.
Nein, das ist kein DNAT. NAT=Network Address Translation, wenn du nun in dieser Zeile eine Adress Veränderung findest bist du entweder wahnsinnig, oder wahnsinnig gut ;)
Das ist eigentlich ganz simples Routing (vorausgesetzt die Route ist bekannt und stimmt).
also aus einem netz mach zwei? wieso erst die arbeit mit der bridge? hier habt ja komsiche "entschieder" ;)
eben, es ist jetzt simples routing geworden ... hört sich gut an.
wenn die webserver ihre ip's behalten (sofern sie unterschiedlich bleiben) und die firewall ihre eigene ip hat ( da sinds schon fünf ) ... hm, wie geht die firewall ohne virtuelle interfaces mit den vier anderen öffentlichen IP's um?
cu/2 iae
Original geschrieben von Jinto
iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 141.52.248.X --dport 80 -j ACCEPT
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -p tcp -s 141.52.248.X --sport 80 -j ACCEPT
HTH
also soll ich diese beiden Zeilen eintragen, jeweils für meine ganzen Webserver ...
dann les dir mal den Beitrag von EMBA durch bitte, der hat geschrieben das das nicht ginge weil dabei die ziel-ip´s random verteilt werden! Aber ich probiers jetzt mal schnell.
nein, so werden sie nicht random verteilt, so nicht ;)
cu/2 iae
sie werden nur beim DNAT random verteilt, wie ich klar und deutlich geschrieben habe
mit den von dir geposteten rules bekommst du es immer noch nicht hin!
wieso machst du es nicht über strings?
greez
mal visualisiert:
---- webserver1 (141.52.248.1) ------ |
|
---- webserver2 (141.52.248.2) ------ |
|-------( xxx.xxx.xxx.xxx)-FW-(141.52.248.5)-- ROUTER
---- webserver3 (141.52.248.3) ------ |
|
---- webserver4 (141.52.248.4) ------ |
<edit>
Router und Fw stehen rechts, webserver links ....
</edit>
ist das soweit richtig?
es gibt meines erachtens zwei möglichkeiten. folgende würde ich für die sauberste halten:
du änderst die öffentlichen IP-Adressen der WebServer von 141.x.x.x auf 10.x.x.x, das interne Interface der Firewall ebenso.
Alle öffentlichen IP-Adressen als virtInterface auf die Firewall
eth0 141.52.248.5
eth0:1 141.52.248.1
eth0:2 141.52.248.2
eth0:3 141.52.248.3
eth0:4 141.52.248.4
dementsprechend den input erlauben und das forward zB von 141.52.248.1 auf 10.52.248.1, dementsprechend natürlich auch den output.
cu/2 iae
ps: die bridging-lösung hätt mir besser gefallen. du hättest nicht am router oder an den webserver umkonfigurieren müssen, hättest sie transparent rein und raus nehmen können ... und vieles mehr ...
hmm das wird ja hier richtig kompliziert wenn ich mir die obigen posts so anseh ;)
ahjo
Eine bridge gibt "alles" einfach mal weiter oder?
da dacht ich mir den kompletten iptraffic an das "interne" netz (intern=das hinter der FW) gibt er weiter.....
Gruß Temp
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.