View previous topic :: View next topic |
Author |
Message |
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Thu Aug 03, 2006 1:43 pm Post subject: Routing mit Gentoo |
|
|
Hi,
ich hab hier ne Aufgabenstellung, zu der ich im Forum keine Lösung finden konnte oder aber sie übersehen hab. Und zwar hab ich einen Gentoo Router, der zum einen eine 2MBit-Standleitung für´s Internet bedient. Zum anderen hängt an einem weiteren Interface ein LanCom DSL-Teil, welches der Default Gateway ins Web ist via DSL.
Es ist nun so, daß über die 2MBit-Leitung von Extern Aufrufe an unser Intranet erfolgen. Diese laufen nun ins Leere. Ich kann und darf als Default Gateway nicht den Router an der 2MBit nutzen, er muß das Lancom bleiben. Das ist ne spezielle Konstellation.
Ist nun Source Routing die Lösung? Pakete, die von der 2MBit für´s Intranet hereinkommen, sollen auf der gleichen Leitung wieder rausgehen. Wie ist das unter Gentoo zu bewerkstelligen? iproute2? extended routing? Oder was gibt es da?
Ich bitte dringend um Hilfe. |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3529 Location: Berlin
|
Posted: Thu Aug 03, 2006 4:23 pm Post subject: |
|
|
Kenne mich in der Materie überhaupt nicht aus, würde aber mal nachsehen, ob man vielleicht Shorewall nutzten kann. Ich nutze Shorewall auf meinem Rechner, der als Router für 2xLan fungiert. |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Thu Aug 03, 2006 5:08 pm Post subject: |
|
|
Hmm, da geht es Dir wie mir. Ich versuch mich, so schnell wie möglich in die Thematik einzuarbeiten. Hier allerdings etwas Neues zu installieren, ist problematisch. Dieser Server steht an ner heiklen Stelle. Und routet viele Wege. Hat ne Menge Interfaces. |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3529 Location: Berlin
|
Posted: Thu Aug 03, 2006 5:18 pm Post subject: |
|
|
Shorewall kann bis drei Interfaces verwalten. |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Thu Aug 03, 2006 6:03 pm Post subject: |
|
|
ich hab deren fünf. Und die sind noch unterteilt. |
|
Back to top |
|
|
think4urs11 Bodhisattva
Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Thu Aug 03, 2006 6:08 pm Post subject: |
|
|
Klingt irgendwie verdächtig nach lartc
HTH
T. _________________ Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself |
|
Back to top |
|
|
makenoob Apprentice
Joined: 19 Aug 2004 Posts: 272 Location: /Germany/Düsseldorf
|
Posted: Thu Aug 03, 2006 6:55 pm Post subject: Re: Routing mit Gentoo |
|
|
Mister.Sax wrote: | Hi,
ich hab hier ne Aufgabenstellung, zu der ich im Forum keine Lösung finden konnte oder aber sie übersehen hab. Und zwar hab ich einen Gentoo Router, der zum einen eine 2MBit-Standleitung für´s Internet bedient. Zum anderen hängt an einem weiteren Interface ein LanCom DSL-Teil, welches der Default Gateway ins Web ist via DSL.
Es ist nun so, daß über die 2MBit-Leitung von Extern Aufrufe an unser Intranet erfolgen. Diese laufen nun ins Leere. Ich kann und darf als Default Gateway nicht den Router an der 2MBit nutzen, er muß das Lancom bleiben. Das ist ne spezielle Konstellation.
Ist nun Source Routing die Lösung? Pakete, die von der 2MBit für´s Intranet hereinkommen, sollen auf der gleichen Leitung wieder rausgehen. Wie ist das unter Gentoo zu bewerkstelligen? iproute2? extended routing? Oder was gibt es da?
Ich bitte dringend um Hilfe. |
öhm, kannst du das mal zeichnen? also es gibt zwei interfaces, die beide ne verbindung zum internet haben. defaultmässig, sollen anfragen über den router gehen. wenn nun allerdings anfragen, über die andere standleitung reinkommen, sollen sie da auch wieder drüber zurückgehen? welchen sinn hat dann der router an der dsl-leitung? was geht denn über die dsl-leitung? klingt für mich irgendwie nach nem paketfilter, der anfragen, die auf dem internen interface starten, über das dsl-interface gebrochen werden sollen, und nur bestehende verbindungen, auf die standleitung antworten können sollen, und ansonsten jeglichen traffice blocken; weil nach bgp hört sich die ganze sache auch nicht an. gehen die anfragen nur an bestimmte server, die nen eigenes netz haben? ist es wieder ein anderes netz, was nur über den router per dsl rausgeht? nbischen mehr info wäre nicht schlecht.
wtf macht ihr da, wenn ich fragen darf? |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Thu Aug 03, 2006 6:55 pm Post subject: |
|
|
Ich schaus mir mal an. So nach dem ersten Überfliegen könntest Du recht haben. |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Thu Aug 03, 2006 7:31 pm Post subject: für makenoob |
|
|
ich skizzier dir das morgen mal genauer. |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Tue Aug 08, 2006 10:03 am Post subject: |
|
|
Es soll anhand der Quelladresse/-anfrage entschieden werden, welchen Weg das Datenpaket zurück ins WWW nimmt. Also der allgemeine Traffic über das Default Gateway, die Replies auf Anfragen an den Intranet-Server den Weg über die 2 MBit-Leitung. |
|
Back to top |
|
|
think4urs11 Bodhisattva
Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Tue Aug 08, 2006 10:31 am Post subject: |
|
|
wie schon gesagt das ist ziemlich genau http://lartc.org/howto/lartc.rpdb.multiple-links.html _________________ Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Tue Aug 08, 2006 10:38 am Post subject: |
|
|
Muß ich mich doch mal draufstürzen. |
|
Back to top |
|
|
kurt Guru
Joined: 25 Aug 2003 Posts: 403 Location: Arni (AG); CH
|
Posted: Tue Aug 08, 2006 12:36 pm Post subject: |
|
|
hallo,
mach doch einfach zwei interne subnetze, und apache etc. läst du einfach doppelt laufen und bindest sie an die jeweiligen ports.
gruss
kurt |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Tue Aug 08, 2006 12:42 pm Post subject: |
|
|
Ganz so einfach geht das nicht. Unser Netz ist wesentlich komplexer. Die Aufgabenstellung bezieht sich nur auf einen ganz kleinen Teil des Netzes. Kennst Du Dich mit Advanced Routing aus? |
|
Back to top |
|
|
kurt Guru
Joined: 25 Aug 2003 Posts: 403 Location: Arni (AG); CH
|
Posted: Tue Aug 08, 2006 12:59 pm Post subject: |
|
|
hallo,
dir bleibt warscheinlich nichts anderes übrig als in den nächsten bücher laden zu gehen und ein entsprechendes handbuch zuzulegen.
zb. TCP/IP NetzwerkAdministration von Oreilly
meins ist übrigens aus dem jahre 1995 und der grossteil darin hat immer noch gültigkeit, ok in dem alten buch ist iproute2 noch nicht enthalten
aber in einer neueren ausgabe warscheinlich schon. es ist auch mit dem alten iproute lössbar.
gruss
kurt |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Tue Aug 08, 2006 1:32 pm Post subject: |
|
|
Ist mit Sicherheit nicht die schlechteste Idee. Mal sehen, was wir hier im Bücherschrank haben. |
|
Back to top |
|
|
Freiburg Guru
Joined: 19 Jun 2004 Posts: 504 Location: Freiburg
|
Posted: Tue Aug 08, 2006 3:42 pm Post subject: |
|
|
Wie wäre es denn mit Connection marking, du kannst per iptables jeder Verbindung eine Nummer geben, also z.B. eine Webseiten Aufruf bekommt immer die Nummer 8. Mit iproute2 kannst du dann alle Packete die eine bestimmte Nummer haben in einen Table schieben und dort kannst du dann bestimmen über welches Interface sie raus gehen... |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Wed Aug 09, 2006 7:18 am Post subject: |
|
|
Hallo Freiburg,
kannst Du mir das mal etwas näher erklären? Bin noch nicht so fit, daß ich das in allen Einzelheiten durchschau. |
|
Back to top |
|
|
Freiburg Guru
Joined: 19 Jun 2004 Posts: 504 Location: Freiburg
|
Posted: Wed Aug 09, 2006 7:47 am Post subject: |
|
|
per iptables kannst du packete und Verbindungen manipulieren (stichwort statefull firewall) eine funktion ist das man Packete und Verbindungen anhand von Regeln mit Nummern versehen kann, das braucht man z.B. auch beim Traffic shaping um den Traffic in die Richtige Klasse einzuordnen.
Unter ip kannst du eigene Routen angeben da gibts als
Code: | SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK ]
[ dev STRING ] [ pref NUMBER ] |
Du könntest also in den Iptables sagen alle Packete die über eth1 kommen bekommen die Nummer 10m das gilt dann für die komplette Verbindung, wegen des Statefull firewalls, sprich eine ftp-Verbindung wird dank Connection tracking komplett erkannt. Danach mußt du dir nurnoch eine Regel schreiben die Sagt wenn das Packet die Nummer 10 hat und aus dem Lokalen Netz kommt dann schick es doch bitte über eth1 raus, den Rest über die Defaultroute.
Ich denke mal das ist ja so im groben was du machen wolltest oder? |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Wed Aug 09, 2006 7:56 am Post subject: |
|
|
Es müssen gar nicht alle Pakete markiert werden. Nur die, die auf eth5 hereinkommen und mittels https auf unser Intranet zugreifen. Und diese sollten den Weg, auf dem sie hereinkommen, auch wieder nach aussen nehmen. Plus Pakete, die aus einem bestimmten Teil unserer Firma kommen. Der Rest geht über eth0 und einen im Netz dahinter befindlichen Lancom-Router.
Also wenn ich Dich richtig verstanden hab, ist das nicht nur iproute2, sondern auch iptables. |
|
Back to top |
|
|
Freiburg Guru
Joined: 19 Jun 2004 Posts: 504 Location: Freiburg
|
Posted: Wed Aug 09, 2006 8:03 am Post subject: |
|
|
richtig die iptables regel müßte so in der Art aussehen:
Code: | iptables -A INPUT -t mangle -i eth5 -p tcp --dport 443 -j Mark --set-mark 10
iptables -A INPUT -t mangle -s $int_net -m mark 10 --set-mark 11 |
Ok die erste Zeile sorgtdafür das die komplette Verbindung mit 10 markiert wird, allerdings gilt das in beide Richtungen, was natürlich nicht gut ist. Desshalb werden alle Packete die aus dem internen Netz kommen und mit 10 markiert sind mit 11 markiert. Die 11 kannst du dann mit ip benutzen. Alternativ kannst du die Herkuftsip auch in ip filtern kann ist die zweite Zeile natürlich überflüssig. Am besten du schaust mal was performanter ist, |
|
Back to top |
|
|
Mister.Sax n00b
Joined: 06 Jul 2006 Posts: 47 Location: im wilden Süden
|
Posted: Wed Aug 09, 2006 8:18 am Post subject: |
|
|
Hm, die externe IP, von der das Paket kommt, dürfte schwer zu filtern sein, sie ist ja ne Variable. Ausser ich betrachte die IP von eth5 (ist ne offizielle), die dem Alias unseres Intranetservers zugeordnet ist, als die solche. Und das interne Netz, hm, ich denk das müßte dann das Netz sein, in dem sich der Intranet-Server bewegt. Oder kann es sein, daß ich diese Regel mehrfach für alle internen Netze, die den Intranet-Server ansprechen, hinterlegen muß? Die Abteilung, die ohnehin über diese Leitung Uploads macht, kann ich die in der Betrachtung aussen vor lassen?
Und was ist mit dem restlichen Netztraffic? Der sollte unberührt weiterlaufen. Bislang ist auf der Gentoo-Kiste keine Firewall-Funktionalität implementiert. Nicht daß ich da dann was aussperre. |
|
Back to top |
|
|
schmutzfinger Veteran
Joined: 26 Oct 2003 Posts: 1287 Location: Dresden/Germany
|
Posted: Wed Aug 09, 2006 10:53 am Post subject: |
|
|
Der Link der hier schon ein paar mal gepostet wurde ist schon genau richtig. Man kann das Problem mit advanced routing über iproute2 lösen. Ich habe das schon mal gemacht und zwar nach diesem Howto http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.squid.html.
Bei mir werden http(s) Anfragen unter bestimmten Umständen nicht aus dem LAN rausgelassen. Die Nutzer sehen dann auf ihrem Rechner ne Webseite, die ihnen sagt warum sie nicht ins Netz kommen. Dieses Umbiegen auf einen Webserver im LAN wird vom Router mit NAT gemacht. Dummerweise hat der Webserver immer direkt geantwortet weil er ja im selben LAN steht. Und wenn die Antwort des Webservers nicht wieder rückwärts über den Router geht dann kann dieser die Absenderadresse nicht umschreiben und der Client wird die Webseite nicht sehen, weil er ja keine Pakete vom Webserver im LAN sondern von dem Webserver erwartet den er eigentlich aufrufen wollte.
So sieht das ganze ohne advanced routing aus:
192.168.0.10 (www.google.de:80) -> router -> 192.168.0.1:8081 (mein http Server der so tut als wäre er www.google.de)
192.168.0.1:8081 -> 192.168.0.10
wie schon gesagt wird der Client das gefälschte google.de nicht anzeigen weil die Antwort von der falschen IP kommt. Wenn mein Webserver allerdings über den Router antwortet dann kann der Router die IP "fälschen" und der Client sieht das falsche google.de.
Das ganze passiert mit advanced routing. Auf dem Webserver wird alles von port 8081 ins LAN soll nicht direkt verschickt sondern eben nochmal durch die Firewall geschoben.
192.168.0.1:8081 -> router (www.google.de:80 -> 192.168.0.10) -> 192.168.0.10
Bei mir hat das keineswegs auf Anhieb geklappt, besondere Probleme haben mir icmp_redirects bereitet, weil ich das HowTo nicht richtig gelesen hatte . Ich habe das im laufenden Betrieb gemacht, weil ein kurzer Ausfall nicht schlimm gewesen wäre und die Route eh nur eine relativ unkritische Sache betrifft. Aber wenn du sowas noch nie gemacht hast und nicht weißt wie du solche Routen zB mit tcpdump debuggen kannst dann übe es auf einem kleinen Netz bevor du das große kaputt machst .
Ach ja, die IP's in meinem Post stimmen nicht mit den echten überein. Ich habe ein echtes Klasse C Subnetz, also nix mit 192.168... . |
|
Back to top |
|
|
schmutzfinger Veteran
Joined: 26 Oct 2003 Posts: 1287 Location: Dresden/Germany
|
Posted: Wed Aug 09, 2006 11:07 am Post subject: |
|
|
Ach ja, vielleicht sollte ich noch ein wenig code mitgeben.
Code: |
iptables -t mangle -A OUTPUT -p tcp --sport 8081 -d 192.168.0.0/24 -j MARK --set-mark 1
#debug
#iptables -t mangle -A POSTROUTING -m mark --mark 1 -j LOG --log-prefix "POSTROUTING fwmark 1: "
# route hinzufügen und gucken ob sie da ist
ip route add default via 192.168.0.1 table disabled
ip route list table disabled
#routingcache leeren
ip route flush cache
# regel für routing einstellen
# grep disab /etc/iproute2/rt_tables
#201 disabled
ip rule add fwmark 1 table disabled
# auf route icmp redir abschalten
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
|
das ganze sieht in shorewall so aus:
/etc/shorewall/tcrules
Code: |
1 fw 192.168.0.0/24 tcp - 8081
|
/etc/shorewall/tcstart
Code: |
# route hinzufügen wenn sie nicht schon da ist
/sbin/ip route add default via 192.168.0.1 table disabled
# alle pakete mit fwmark 1 in die neue route stecken, @see tcrules
/sbin/ip rule show | /bin/grep disabled > /dev/null || /sbin/ip rule add fwmark 1 table disabled
# routingcache leeren
/sbin/ip route flush cache
/bin/echo "Alternative route for disabled users set up."
|
|
|
Back to top |
|
|
Freiburg Guru
Joined: 19 Jun 2004 Posts: 504 Location: Freiburg
|
Posted: Wed Aug 09, 2006 11:33 am Post subject: |
|
|
Mister.Sax wrote: | Hm, die externe IP, von der das Paket kommt, dürfte schwer zu filtern sein, sie ist ja ne Variable. Ausser ich betrachte die IP von eth5 (ist ne offizielle), die dem Alias unseres Intranetservers zugeordnet ist, als die solche. Und das interne Netz, hm, ich denk das müßte dann das Netz sein, in dem sich der Intranet-Server bewegt. Oder kann es sein, daß ich diese Regel mehrfach für alle internen Netze, die den Intranet-Server ansprechen, hinterlegen muß? Die Abteilung, die ohnehin über diese Leitung Uploads macht, kann ich die in der Betrachtung aussen vor lassen?
Und was ist mit dem restlichen Netztraffic? Der sollte unberührt weiterlaufen. Bislang ist auf der Gentoo-Kiste keine Firewall-Funktionalität implementiert. Nicht daß ich da dann was aussperre. |
Das ganze bezieht sich nur auf die Markierung der Packete, schaut man sich einen http request an dann besteht er aus einer Anfrage und einer Antwort, die Anfrage kommt bei dir über eth5 und die Antwort aus dem internen Netz. Soweit so gut, mit einen Statefull firewall ist es möglich dies zu erkennen, d.h. der Firewall sieht nicht nur aha ein Packet vom https port sondern aha eine Antwort vom https port gehört zu der Verbindung. Das heißt für dich das wenn du einer Verbindung am Anfang ein Mark zuweißt das dies über die gesammte Verbindungsdauer gültig ist. Da du nun aber nur die Antwortpackete umleiten willst, sprich diese sollen nicht über die default route rausgehen sondern über eth5 markierst du alle Packete die aus dem internen Netz kommen und vom Firewall als zu einer https Anfrage von eth5 zugehörig erkannt und somit mit 10 markiert sind mit 11. Damit hast du alle Packete die als Antwort vom Webserver auf einer Anfrage die über eth5 kam markiert und kannst diese bequem im routingtable umleiten... |
|
Back to top |
|
|
|