Anzeige:
Ergebnis 1 bis 12 von 12

Thema: DHCP in zwei gebridgten Netzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14

    [gelöst]: DHCP in zwei gebridgten Netzen

    Hallo allerseits!

    Ich hab da ein kleines Problem, und zwar habe ich mit einem Freund unsere beiden Netze per VPN und Bridging zusammengelegt (heißt also in unserem Fall ist tap1 mit eth0 gebridgt). Ich habe 192.168.1.0/16 und er 192.168.0.0/16, desweiteren betreiben wir beide unabhängig voneinander für unsere Netze DHCP-Server. Nun kommt es allerdings durchaus vor, dass ein DHCP-DISCOVER von einem meiner Rechner von dem DHCP-Server meines Freundes beantwortet wird - ich surfe dann also praktisch über sein Netzwerk. Wenn man bedenkt, dass wir beide Standard 2mbit-DSL haben, kann man sich denken, dass das nicht gewollt ist. Er hat dasselbe Problem aus seiner Perspektive.

    Auch folgende Iptables-Regeln haben keine Abhilfe schaffen können:
    iptables -I OUTPUT -o br0 -p udp --dport bootps -m physdev --physdev-out tap1 -j DROP
    iptables -I INPUT -i br0 -p udp --dport bootpc -m physdev --physdev-in tap1 -j DROP

    Weiß einer vielleicht Rat?

    Gruß
    Geändert von apriori (11.08.06 um 11:19 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jul 2006
    Ort
    Hamburg
    Beiträge
    646
    Wenn ihr schon getrennte Subnetze verwendet, gibt es keinen Grund eine Bridge zu betreiben.
    Mache aus der Bridge einen Router und Ihr seid eure Probleme los.

  3. #3
    Registrierter Benutzer Avatar von bla!zilla
    Registriert seit
    Apr 2001
    Beiträge
    9.884
    Zitat Zitat von Thorashh
    Wenn ihr schon getrennte Subnetze verwendet, gibt es keinen Grund eine Bridge zu betreiben.
    Mache aus der Bridge einen Router und Ihr seid eure Probleme los.
    ACK! Ich sehe da auch keinen Grund drin. Gerade wenn man DHCP über WAN Strecken betreiben will, nutzt man bridging.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14
    Hallo mal wieder!

    Nein, um eine Bridge kommen wir nicht herum, da sich nicht IP-Protokolle eben nicht einfach routen lassen (NetBIOS z.B.) - und wir brauchen genau diese.

    Auch sind es keine wirklich getrennten Subnetze (durch 255.255.0.0(/16) überlappen sie sich), zu klaren Unterscheidung haben wir beschlossen, unterschiedliche IP-Adressen-Netze zu verteilen.

    Gibt es keine Lösung dafür, zu verhindern, dass DHCP-Discovers gesendet oder DHCP-Offers auf dem tap-device empfangen werden?

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jul 2006
    Ort
    Hamburg
    Beiträge
    646
    Funktioniert den iptables überhaupt auf Deiner Bridge?
    Meines Wissens musst Du dafür noch einen Kernel-Patch einspielen.

    Kannst ja mal eine LOG-Rule erstellen und nachsehen.

    BTW: NETBIOS läßt sich normalereweise ohne große Probleme über TCP/IP transportieren.

  6. #6
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14
    (lösch mich)
    Geändert von apriori (09.08.06 um 23:50 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14
    Ich bin jetzt kein großer Iptables-Experte. Folgendes verstehe ich nicht:

    Eine Logrule auf den OUTPUT-Chain der Filtertable ergab nichts, eine solche Regel jedoch auf dem POSTROUTING-Chain der Mangletable ergab Treffer.

    PS: Ich sagte "z.B. NetBIOS" (ok, vielleicht war der Fall falsch). Was ist mit Broadcasts und IPX oder dergleichen?

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jul 2006
    Ort
    Hamburg
    Beiträge
    646
    Kannst Du bitte mal posten, mit welchen Befehlen Du die Bridge einrichtest und welche iptables Regeln Du sonst noch verwendest.
    Geändert von Thorashh (10.08.06 um 00:58 Uhr)

  9. #9
    Registrierter Benutzer Avatar von bla!zilla
    Registriert seit
    Apr 2001
    Beiträge
    9.884
    Zitat Zitat von apriori
    PS: Ich sagte "z.B. NetBIOS" (ok, vielleicht war der Fall falsch). Was ist mit Broadcasts und IPX oder dergleichen?
    Auch Broadcasts lassen sich routen. Ist zwar ekelhaft, aber es geht. Schönes Beispiel ist ein DHCP Relay. DHCP arbeitet ja auch mit Broadcasts. IPX/SPX lässt sich auch problemlos routen, auch über WAN Strecken. Nur muss man sich da mit dem Protokoll mal beschäftigen. IPX-Routing sieht etwas anderes aus als IP-Routing.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14
    Die Blockade der DHCP-Requests scheint jetzt zu funktionieren. Die Bridge ist mit den Startscripts der Gentoo-Distribution eingerichtet, welche brctl verwendet.
    Es wird quasi folgendes ausgeführt:

    brctl addbr br0
    brctl addif br0 eth0
    brctl addif br0 tap1

    Die br0 hat natürlich alle IP-Adressen dieser Devices; jene selbst sind unkonfiguriert.

    Hier kommen die Iptables-Regeln. Ist jetzt von Grund auf neu geschrieben. Falls dicke Fehler drin sein sollten, sagt es mir bitte.

    Code:
    EXT_IF=ppp0
    INT_IF=eth0
    
    #bridged vpn
    VPN_IF=tap1
    #not bridged vpn
    VPN_IF_NB=tap0
    
    ####### TCP BEGIN
    
    # portsentry watched ports
    PORTSENTRY_TCP=( 1 11 15 79 111 119 143 540 635 1080 1524 2000 5742 6667 12345 12346 20034 27665 31337 32771 32772 32773 32774 40421 49724 54320 )
    
    # anywhere
    TCP_OPEN_ANYWHERE=${PORTSENTRY_TCP[*]}
    
    # ssh pache  
    TCP_OPEN_INET=( 15 80 )
    # ssh ftpdata ftp cups rsync distcc proxy webmin
    TCP_OPEN_INTERN=( 15 20 21 631 873 3632 8080 10000 )
    # ssh ftpdata ftp distcc webmin
    TCP_OPEN_VPN=( 15 80 20 21 3632 10000 ) 
    
    ###### TCP END
    
    
    ##### UDP BEGIN
    
    PORTSENTRY_UDP=( 1 7 9 69 161 162 513 635 640 641 700 37444 34555 31335 32770 32771 32772 32773 32774 31337 5432 )
    UDP_OPEN_ANYWHERE=${PORTSENTRY_UDP[*]}
    
    #vpn
    UDP_OPEN_INET=( 1194 )
    #dns dhcpc dhcps proxy
    UDP_OPEN_INTERN=( 53 67 68 8080 )
    #dns
    UDP_OPEN_VPN=( 53 )
    
    ##### UDP END
    
    ##### PRE-Setup BEGIN
    
    for FILE in /proc/sys/net/ipv4/ip_forward /proc/sys/net/ipv4/tcp_syncookies
    do
        if [ -e ${FILE} ]
    	then echo "1" > ${FILE}
        fi
    done
    
    #flushing
    for TABLE in mangle nat filter
    	do
    		for CHAIN in `iptables -L -n -t $TABLE | grep Chain | awk '{ print $2 }'`
    			do	
    				iptables -t $TABLE -F $CHAIN
    		done
    done
    
    #predrop
    
    iptables -P INPUT DROP 
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    # open lo to all
    iptables -A INPUT -p all  -i lo   -j ACCEPT
    iptables -A OUTPUT -p all -o lo   -j ACCEPT
    
    # accept related/already established conns
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    ###### PRE-Setup END 
    
    # ICMP
    
    iptables -A INPUT  -p icmp -j ACCEPT
    iptables -A OUTPUT -p icmp -j ACCEPT
    
    ##### open anywhere BEGIN
    
    for port in ${UDP_OPEN_ANYWHERE[*]}
        do
        	for iface in br0 $VPN_IF_NB
    	     do iptables -A INPUT  -p tcp -i $iface --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	        iptables -A OUTPUT -p tcp -o $iface --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	done
    done
    
    for port in ${UDP_OPEN_ANYWHERE[*]}
        do
        	for iface in br0 $VPN_IF_NB
    	     do iptables -A INPUT  -p tcp -i $iface --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	        iptables -A OUTPUT -p tcp -o $iface --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	done
    done
    
    ##### open anywhere END
    
    ##### open ports to inet BEGIN
    
    for port in ${TCP_OPEN_INET[*]}
        do 
        	iptables -A INPUT  -p tcp -i $EXT_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
    done
    
    for port in ${UDP_OPEN_INET[*]}
        do 
        	iptables -A INPUT  -p udp -i $EXT_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    done
    
    # full inet access to outside (FIXME)
    iptables -A OUTPUT -o $EXT_IF -j ACCEPT
    
    ##### open porst to inet END
    
    	
    #### open ports to internal network BEGIN
    
    for port in ${TCP_OPEN_INTERN[*]} 
        do 
        	iptables -A INPUT  -p tcp -i br0 -m physdev --physdev-in  $INT_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	iptables -A OUTPUT -p tcp -o br0 -m physdev --physdev-out $INT_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    done
    
    for port in ${UDP_OPEN_INTERN[*]} 
        do 
            iptables -A INPUT  -p udp -i br0 -m physdev --physdev-in  $INT_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	iptables -A OUTPUT -p udp -o br0 -m physdev --physdev-out $INT_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    
    done
    
    iptables -A OUTPUT -o br0 -m physdev --physdev-out $INT_IF -j ACCEPT
    
    ##### internal network END
    
    #### open ports to vpn 
    for port in ${TCP_OPEN_VPN[*]}
        do
        	iptables -A INPUT  -p udp -i br0 -m physdev --physdev-in  $VPN_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    	iptables -A OUTPUT -p udp -o br0 -m physdev --physdev-out $VPN_IF --dport $port -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    done
    
    #### vpn END
    
    # routing
    
    iptables -A FORWARD -o $EXT_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -s 192.168.0.0/16 -o $EXT_IF -m state --state NEW -j ACCEPT
    
    # bridging
    # dont send or receive dhcp requests/acks
    iptables -A FORWARD -o br0 -m physdev --physdev-in eth0 --physdev-out tap1 -p udp --dport 67 -m addrtype --dst-type broadcast -j DROP
    iptables -A FORWARD -o br0 -m physdev --physdev-in tap1 --physdev-out eth0 -p udp --dport 68 -m addrtype --dst-type broadcast -j DROP
    
    # allow other out
    iptables -A FORWARD -o br0 -j ACCEPT
    iptables -A FORWARD -i br0 -j ACCEPT
    
    # masquerading
    iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o $EXT_IF -j MASQUERADE
    Gruß
    apriori

  11. #11
    Registrierter Benutzer
    Registriert seit
    Jul 2006
    Ort
    Hamburg
    Beiträge
    646
    Hallo apriori

    Ich hab den passenden Text doch noch weidergefunden.
    Unsichtbarer Schutz mit Linux: Firewall auf Bridge-Ebene Darin findest Du alle notwendigen Informationen.

    Deine Firewallregeln müssten so aussehen. (untested)
    Code:
    #DHCP-Request from your side
    iptables -A FORWARD -m physdev --physdev-in eth0 --physdev-out tap1 -p udp --dport bootps -j DROP
    #DHCP-Reply from the other side
    iptables -A FORWARD -m physdev --physdev-in tap1 --physdev-out eth0 -p udp --dport bootpc -j DROP
    
    #DHCP-Request from the other side
    iptables -A FORWARD -m physdev --physdev-in tap1 --physdev-out eth0 -p udp --dport bootps -j DROP
    #DHCP-Reply to the other side
    iptables -A FORWARD -m physdev --physdev-in eth0 --physdev-out tap1 -p udp --dport bootpc -j DROP

  12. #12
    Registrierter Benutzer
    Registriert seit
    Oct 2005
    Beiträge
    14
    Hallo nochmal!

    Danke für eure Hilfe.. funktioniert jetzt alles.

    @Thorrashh
    Hm, eigentlich sollten deine Regeln doch nicht nötig sein, oder? Ok, keine Frage, sie sind sicherer als meine (keine DHCP-Offers von außen rein lassen). Auch durch das fehlende Addrtype broadcast sind sie allgemeiner = besser; vom Prinzip her aber gleich (67 = bootps, 68 = bootpc).
    Ok, danke, werde sie dann dazu packen bzw. meine ersetzen.
    Geändert von apriori (11.08.06 um 11:24 Uhr)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 30.10.05, 23:02
  2. DHCp Server startet nicht :(
    Von Sveniboy1984 im Forum Linux als Server
    Antworten: 10
    Letzter Beitrag: 18.08.05, 19:32
  3. dhcp failover
    Von andreash im Forum Linux als Server
    Antworten: 7
    Letzter Beitrag: 15.11.04, 07:34
  4. DHCP failed (broadcastAddr option is missing), dennoch richtige IP
    Von Igge im Forum Anbindung an die Aussenwelt
    Antworten: 1
    Letzter Beitrag: 18.05.04, 20:57
  5. dynamic dns und dhcp
    Von -leliel- im Forum Linux als Server
    Antworten: 18
    Letzter Beitrag: 11.06.03, 07:35

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •