2 Netze verbinden

... eigentlich eine Bridging aufgabe?
Guten Abend HaBo :)
also ich hab hier nen alten Rechner mit mehreren Netzwerkkarten und Debian 4.0 mit minimalistischem KDE3 (kde-core)
Möchte die Kiste als Firewall, so zum Rumspielen benutzen, also das Kabel vom Router in die eth0 einstecken und den Rest des LAN's an eth1
Wie kann ich diese beiden Karten nun so miteinander koppeln dass die beiden Netze wirklich eins sind? also ALLES (incl DHCP) vom Router verwaltet wird und der Rechner zusätzlich die iptables Regeln überprüft?
hab schon das "Bonding" versucht, also eth0 und eth1 zu bond0 zusammen fassen, mh naja dhclient bond0 läuft dann aber ins leere...

Meine Vermutung ist, dass das eigentlich über routing laufen müsste, aber wie lege ich denn Routingregeln für eine Netzwerkkarte an die noch keine IP hat?
IPtables schliesse ich dafür ja auch aus, das filtert ja tatsächlich nur, hatte eigentlich gehofft dass man über -i eth0 -o eth1 das ganze regeln kann, aber das ist ja auch Schwachsinn :D

naja ich denke ich bin hier richtig, ihr könnt mir da sicher weiterhelfen :)
greetz
 
mit iptables kannst du sehr wohl routen.

hier mein firewall-script (was ich auch mal irgendwann irgendwo mit google gefunden und für mich angepasst hab)

Code:
#!/bin/sh
#
# iptables firewall script v0.3
#
# get newer versions at www.zleep.org
# (c)2003 by mr_abe <cg@zleep.org>
#

EXT_DEV=eth4
INT0_DEV=eth0
INT0_NET=192.168.0.0/24
INT1_DEV=eth1
INT1_NET=192.168.1.0/24
INT2_DEV=eth2
INT2_NET=192.168.2.0/24
INT3_DEV=eth3
INT3_NET=192.168.3.0/24
IPTABLES=/sbin/iptables

case $1 in
        start)

            echo "Activate routing"
            # load required modules
            modprobe iptable_nat

            # flush all tables, an set all connections to accept
            $IPTABLES -t filter -F INPUT
            $IPTABLES -t filter -F OUTPUT
            $IPTABLES -t filter -F FORWARD
            $IPTABLES -t filter -P INPUT ACCEPT
            $IPTABLES -t filter -P OUTPUT ACCEPT
            $IPTABLES -t filter -P FORWARD ACCEPT

            # set up routing for internal network
            $IPTABLES -t nat -F POSTROUTING
            echo 1 > /proc/sys/net/ipv4/ip_forward
            $IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT0_NET -j MASQUERADE
            $IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT1_NET -j MASQUERADE
            $IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT2_NET -j MASQUERADE
            $IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT3_NET -j MASQUERADE
            #Anzeigen


            #new
            echo 1 > /proc/sys/net/ipv4/ip_dynaddr

            # accept all connections on localhost
            $IPTABLES -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $INT0_DEV -s 0/0 -d 0/0 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $INT1_DEV -s 0/0 -d 0/0 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $INT2_DEV -s 0/0 -d 0/0 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $INT3_DEV -s 0/0 -d 0/0 -j ACCEPT

            # open some ports
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 21 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 22 --syn -j ACCEPT
            #$IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 23 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 25 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 53 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 53 -j ACCEPT            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 80 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 110 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 143 --syn -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 5060 -j ACCEPT
            $IPTABLES -t filter -A OUTPUT -o $EXT_DEV -p udp --dport 5060 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 5069 -j ACCEPT
            $IPTABLES -t filter -A OUTPUT -o $EXT_DEV -p udp --dport 5069 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 3478:3479 -j ACCEPT
            $IPTABLES -t filter -A OUTPUT -o $EXT_DEV -p udp --dport 3478:3479 -j ACCEPT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 16384:16400 -j ACCEPT
            $IPTABLES -t filter -A OUTPUT -o $EXT_DEV -p udp --dport 16384:16400 -j ACCEPT

            # close some ports :)
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p udp --dport 123 -j REJECT
            $IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 515 -j REJECT
            #$IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 3306 -j REJECT
            #$IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 110 -j REJECT
            #$IPTABLES -t filter -A INPUT -i $EXT_DEV -p tcp --dport 143 -j REJECT

            #Forward this Ports to 192.168.2.2
            $IPTABLES -t nat -F PREROUTING
            $IPTABLES -t nat -A PREROUTING -i $EXT_DEV -p tcp --dport 4662 -j DNAT --to 192.168.2.2
 
            # don't route this ports/ips
            #$IPTABLES -t filter -A FORWARD -p tcp -i eth0 -s 10.10.12.21 -j REJECT
            #$IPTABLES -t filter -A FORWARD -p tcp -i eth0 -s 10.10.12.21 --dport 80 -j REJECT
            #$IPTABLES -t filter -A FORWARD -p tcp -i eth0 -s 10.10.12.21 --dport 7082 -j REJECT
            #$IPTABLES -t filter -A FORWARD -p tcp -i eth0 -s 10.10.12.20 -d www.uboot.com -j REJECT
 
            # set up some logging rules
            #$IPTABLES -t filter -A INPUT -p tcp -j LOG --log-prefix "INPUT: TCP "
            #$IPTABLES -t filter -A INPUT -p udp -j LOG --log-prefix "INPUT: UDP "
 
            echo "Firewall & Routing activated"
        ;;
        stop)
            $IPTABLES -t filter -F INPUT
            $IPTABLES -t filter -F OUTPUT
            $IPTABLES -t filter -F FORWARD
            $IPTABLES -t nat -F POSTROUTING
        ;;

        restart)
            $0 stop && $0 start
        ;;
 
        *)
            echo "Usage: $0 {start|stop|restart}"
        ;;
 
mh Danke, das wusste ich nicht, aber wie stell ich denn die Regeln:
# set up routing for internal network
$IPTABLES -t nat -F POSTROUTING
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT0_NET -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT1_NET -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT2_NET -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o $EXT_DEV -s $INT3_NET -j MASQUERADE
ein wenn (in diesem Fall) $INT0 und $INT1 noch garkeine IP haben?

Das müsste doch auch irgendwie über die MAC oder den Alias (z.B. eth0 usw) funktionieren
 
weil das gleichzeitig nen Schulprojekt ist, auf freiwilliger Basis und ich nur mit Debian unterrichtet werde -> krieg nur ne Note wenn ich Debian benutzt hab, ja ich weiß das klingt unflexibel, aber was kann ich für die Denke der Lehrer/Dozenten?
Mal davon abgesehn, wenn ich den Auftrag vonner Firma bekomme das mit Debian zu machen kann ich auch nicht einfach wechseln oder?
 
also die INT0_NET bis INT3_NET (entspricht bei mir den Geräten eth0 bis eth3) haben feste IP-Adressen (in /etc/network/interfaces konfiguriert), auf all diesen Netzwerkkarten hört mein DHCP-Server und vergibt den Rechnern, die dort ran gehängt werden, dynamisch IPs.

und an eth4 (siehe EXT_DEV im Script) hängt mein Internet, welches die IP vom Provider zugewiesen bekommt.
 
ja soweit hatte ich das verstanden ;)
Wie ist es denn wenn auf der Firewall-Kiste noch nen DHCP Server läuft? wegen dem Router, gibt das keine Konflikte?
zumal ich schon Anfragen aus der Firma meines Vaters habe wo das Netzwerk protokolliert werden soll, nur mal so über 2-3 Tage wenn da mal wieder jemand raubkopiert... Würde halt über ntop nen Diagramm anfertigen lassen. Da die Netzwerke(!) meinem Vater gehören sehe ich da auch keine Datenschutzprobleme, aber das lasst man unsere Sorge sein. Aber weil es ebend mehrere Netze sind wollte ich die Kiste so einrichten dass man das mal da anstöpselt und mal hier und dort ohne was einrichten zu müssen...
So könnte ich von zuhause über SSH drauf und meinem Vater im Netzwerk helfen, um zu gewährleisten dass ich auf den Rechner komme werde ich nen VPN einrichten, naja ich hoffe ihr versteht nun warum ich das so dynamisch einrichten möchte :(
Es ist ein überaus vielseitig verwendbares Projekt, genau deshalb habe ich es gewählt, wenn ich dafür ne gute Note in meiner Info Ausbildung bekomme und damit meinem Vater helfen kann ist das doch im Sinne aller?
Desweiteren sind die Router in den einzelnen NW's ganz schlicht und vom lokalen Provider HLKom Passwort geschützt, so dass wir keinen Zugang zum Router haben, sonst meinen die könnten die keinen reibungslosen Support gewährleisten. Hätte ich die Zugangsdaten zu den Routern könnte ich da natürlich Ports und Seiten wie Rapidshare & co Sperren, da mir das aber verborgen bleibt hab ich nur die Möglichkeit über die HardwareFirewall.
Diese will mein Vater aber auch nicht dauerhaft dort stehen haben, aus Kosten gründen. So scheint mir diese Methode doch am Edelsten :)

Sorry dass es so lang geworden ist, bin schon müde, also bis morgen :)
 
ich glaub, es ist am besten, wenn du mal ne kleine Skizze anfertigst, was alles wie zusammen hängt oder zusammen hängen soll.

Und zwecks Datenschutz:
Wenn dein Vater seine Angestellten "abhören" will, braucht er dazu meines Wissens nach das Einverständnis der Arbeitnehmer.
Weiß nicht, in wie weit sowas schon in den Arbeitsverträgen offen gehalten wurde oder nicht...
 
panoptescustoslr0.jpg


So :)
Hatte schon bissl Sorge dass ihr jetzt aus Datenschutzgründen net mehr helfen wollt ;)
 
na wir haben 2 Internettarife pro Haus :D
naja is alles gewachsen und geplant hat dasn Elektriker damals... Elektriker halt ;) bin ja zur Zeit dabei ma aufzuräumen....
 
naja um das zu erkennen hab ichs ja farbig gemacht...
Also beide LAN's sind im Internet, die 2te Leitung wurde nur wegen Auslastungsproblemen angelegt, das hat also keinen tieferen Sinn
Router1 ist mit LAN1(eth0/1) im WAN sowie Router2 mit LAN2(eth2/3) :)
 
okay, dann schreibst du dir das Firewall-Script so um, dass du 2 interne Devices (eth1 und eth3) und zwei ext. devices (eth0 und eth2) nutzt - die Daten von eth1 werden nach eth0 weiter geroutet, die Daten von eth3 nach eth2.

Alle bekommen ihre feste IP.
IPs für eth0 und eth2 werden so zugewiesen, dass sie zu den jeweiligen Routern passen.
eth1 und eth3 bekommen ebenfalls feste IPs (IP-Bereiche, die halt noch frei sind)
dhcp3-server hört dann nur noch auf eth1 und eth3 - damit der Server nur auf diesen Interfaces läuft, regelst du in der Datei /etc/default/dhcp3-server
 
Soa da bin ich wieder :>
Hab deinen Rat befolgt, allerdings hab ich als DHCP Server dnsmasq benutzt, der ist ziemlich simpel ;-)
Bin jetzt soweit dass ich mit meinem Laptop ins Internet ÜBER den Linux Rechner komme, sprich ich habe eth0 und eth1 dementsprechend konfiguriert.
Hab grad mit eth2 und eth3 nachgezogen, dass es ebend parallel läuft und da fällt mir auf dass der 2 default routen anlegt, die eine über eth0 und die andere über eth2 zum Router. Das Resultat ist ein Konflikt im Forwarding, offentsichtlich gehen die Pings nicht raus. Jetzt ist die Frage wie ich explizit die Route nach draußen für eth0 bzw eth2 GETRENNT definiere.

P.s. ich teste noch beide Leitungen über meinen eigenen Router, habe also keine zwei Leitungen verfügbar, und die default routen zeigen beide auf die fritz.box, ist davon auszugehen dass es mit dieser Config in der Wildnis doch funktioniert?

Ein paar Stdouts damit ihr besser nachvollziehen könnt was ich meine:
ifconfig
route
iptables -t nat -vL

ich hoffe wir kriegen das mal auf die Reihe =)

P.S.
hab mir heute die ganze man(ual) von route und iptables angeschaut, ich will damit nur sagen ich bin wirklich bemüht das Problem auch allein zu lösen, aber daran hänge ich richtig :(


edit:\ Ok es läuft, mit iproute funktioniert das ganze sehr gut :)
 
Zurück
Oben