Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Routing klappt bei Reboot nicht

  1. #1
    Becks-Trinker Avatar von I-Master
    Registriert seit
    Nov 2002
    Ort
    OWL
    Beiträge
    670

    Routing klappt bei Reboot nicht

    Nabend.

    Ich hab da so nen etwas eigenartiges Problem. Ich hab mir per Shell Skript von firestarter ne Firewall zusammenbasteln lassen.

    Das wird auch ordnungsgemäß bei einem Verbindungsabbruch durch die ip-up.local neu eingelesen.

    Nur wenn ich den Server reboote kommen die Clients nicht mehr ins Internet. Kein Ping, kein surfen. Der Server ist online.

    In den /var/log/messages finde ich keinen Fehler.

    Ich könnte mir höchstens denken, dass im Shell-Skript Variablen für das Netzwerk gesetzt werden, die beim hochfahren des Interfaces ppp0 noch nicht zur Verfügung stehen und deswegen murcks bei rauskommt.

    Habs jetzt erstmal so gemacht, dass in /etc/rc.d/rc.local die Firewall-Regeln nochmal neu geladen werden. Dann gehts. Aber ist ja auch irgendwie nicht Sinn der Sache. Hier mal die meiner Meinung nach wichtigsten Settings aus dem Firewall Skript:

    Code:
    IF=ppp0
    INIF=eth1
    IP=`/sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \  -f 1`
    MASK=`/sbin/ifconfig $IF | grep Mas | cut -d : -f 4`
    NET=$IP/$MASK
    
    INIP=`/sbin/ifconfig $INIF | grep inet | cut -d : -f 2 | cut -d \  -f 1`
    INMASK=`/sbin/ifconfig $INIF | grep Mas | cut -d : -f 4`
    INNET=$INIP/$INMASK
    
    #Forward Int/Ext & Ext/Int Traffic before Masquerading
    $IPT -t filter -A FORWARD -d 0/0 -s $INNET -o $IF -j ACCEPT
    $IPT -t filter -A FORWARD -d $INNET -j ACCEPT
    #Masquerade outgoing traffic
    $IPT -t nat -A POSTROUTING -o $IF -j MASQUERADE
    Sollte ich statt Variablen vielleicht mal direkt

    Code:
    NET=194.180.242.0/255.255.255.0
    hinschreiben oder hat jemand vielleicht sonst ne Idee wie ich dem Fehler auf die Spur kommen kann?

  2. #2
    Moderat0r Avatar von geronet
    Registriert seit
    May 2001
    Ort
    Grainau
    Beiträge
    6.099
    Huhu,

    am besten ist es wenn du dieses Script gleich beim booten starten lässt und nicht mit -d die dynamische IP-Adresse von ppp0 verwendest, sondern den Interfacenamen mit -i.
    Damit ist die Sache erstens sicherer und zweitens gibts keine Probleme mit der ip-up, da mit dieser Datei auch Verbindungen von anderen Wählleitungen gesteuert werden.
    Ausserdem erhältst du keine Fehlermeldungen von ip-up (und .local), weil die Standartausgabe und -fehlerausgabe sonstwo hinzeigt wo sie keiner sieht.

    Grüsse, Stefan
    Nur Puffin verleiht dir die Kraft und Ausdauer die du brauchst!

  3. #3
    Becks-Trinker Avatar von I-Master
    Registriert seit
    Nov 2002
    Ort
    OWL
    Beiträge
    670
    Mmmh. Also

    IF=eth0
    INIF=eth1
    IP=`/sbin/ifconfig $IF | grep inet | cut -i : -f 2 | cut -i \ -f 1`
    MASK=`/sbin/ifconfig $IF | grep Mas | cut -i : -f 4`
    NET=$IP/$MASK

    INIP=`/sbin/ifconfig $INIF | grep inet | cut -i : -f 2 | cut -i \ -f 1`
    INMASK=`/sbin/ifconfig $INIF | grep Mas | cut -i : -f 4`
    INNET=$INIP/$INMASK

    -i schmeisst mir nämlich Fehlermeldungen wegen ungültiger Parameter aus.

    Aber man könnte ja auch die feste IP des Interfaces eth0 nehmen.

    Ich kann das Skript zwar beim booten starten lassen, aber dann werden die Regeln bei einem Verbindungsabbruch nicht neu gesetzt.

    Allerdings frage ich mich, ob das überhaupt nötig ist weil die IP ja dann gleich bleibt. Mmmmh.... Bin noch nie darauf gekommen NICHT die Dyn-IP zu nehmen.

    Weisst Du echt nicht, wo die Fehlermeldungen der ip-up hinkommen?

  4. #4
    Moderat0r Avatar von geronet
    Registriert seit
    May 2001
    Ort
    Grainau
    Beiträge
    6.099
    Warscheinlich werden diese zum pppd weitergeleitet, aber das ist nur eine Vermutung.

    Es ist sowieso Grampf die dyn. IP von ppp0 mit Hilfe von ifconfig herauszufinden wenn sie dem ip-up Script schon als Parameter übergeben wird.

    Mir fällt grad auf dass du die Variable $IPT gar nicht gesetzt hast...
    Code:
    EXT_IF=ppp0
    INT_IF=eth1
    IPT="/usr/sbin/iptables"
    
    # enable ip-forwarding
    echo "1" > /proc/sys/net/ipv4/ip_forward
    
    #Forward Int/Ext & Ext/Int Traffic before Masquerading
    $IPT -A FORWARD -i $INT_IF -o $EXT_IF -j ACCEPT
    $IPT -A FORWARD -o $INT_IF -j ACCEPT
    
    #Masquerade outgoing traffic
    $IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
    So sieht das schon besser aus, klein aber fein.
    Jetzt kannst du es mal zum testen direkt so starten, und wenn es funktioniert in ein boot-script eintragen (/etc/rc.local, /etc/boot.local oder sonstwas in sysvinit)

    Eine Firewall ist das zwar noch nicht, du maskierst nur und hast alles auf ACCEPT.

    Grüsse, Stefan
    Nur Puffin verleiht dir die Kraft und Ausdauer die du brauchst!

  5. #5
    Becks-Trinker Avatar von I-Master
    Registriert seit
    Nov 2002
    Ort
    OWL
    Beiträge
    670
    Ich werds mal ausprobieren.

    Allerdings ist das schon ne "richtige" Firewall. Ich hab hier nur nen kleinen Auszug gepostet weil IMHO das Problem im Forwarding / Masquerading liegt.

    Allerdings würde es doch eigentlich auch reichen, wenn ich

    IF=ppp0

    durch

    IF=eth0

    ersetze oder?

    *edit: Die Variable IPT wird auch gesetzt

  6. #6
    Moderat0r Avatar von geronet
    Registriert seit
    May 2001
    Ort
    Grainau
    Beiträge
    6.099
    Wenn eth0 die Netzwerkkarte ist, an der dein DSL-Modem hängt, dann brauchst du in deinem Script niemals eth0 zu verwenden da dieses Interface keine TCP/IP Pakete überträgt und somit Filterregeln wirkungslos sind. Alleine auf ppp0 kannst du die Firewall aufsetzen und damit funktioniert das auch.
    Nur Puffin verleiht dir die Kraft und Ausdauer die du brauchst!

  7. #7
    Becks-Trinker Avatar von I-Master
    Registriert seit
    Nov 2002
    Ort
    OWL
    Beiträge
    670
    Aha. Das erklärt, warum ich auch nie auf die Idee gekommen bin.

    Dann hatte ich Dich falsch verstanden.

Lesezeichen

Berechtigungen

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