.titleBar { margin-bottom: 5px!important; }

OSPF/RIP/BGP Routing mit bird

Dieses Thema im Forum "Freetz" wurde erstellt von griffon, 13 Dez. 2006.

  1. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hallo zusammen

    hat einer von euch schon für die Fritzbox den "bird" Daemon kompiliert? Das DD-WRT Projekt für die Linksys Kisten hat den ziemlich kleinen Routing Daemon via busybox ins Paket mit eingebaut.

    Wenn einer von euch den schon fertig hat (ob static oder busybox) wäre ich für Infos oder Pakete dankbar. Ich hänge derzeit noch am Erstellen der Toolchains zum kompilieren. Ständig bleibt das erstellen der toolchain beim erstellen hängen.

    Ich helfe auch gerne beim erstellen der OSPF Konfig usw.

    Ich hoffe nur das openvpn, bird und asterisk gleichzeitig auf der maschine rennen. (wird wohl knapp)
     
  2. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Die Toolchain läuft soweit zum compilieren, allerdings bekomme ich beim ./configure von bird jetzt einen Fehler mit dem ich nicht wirklich viel was anfangen kann.

    Code:
    $ ./configure --target=mipsel-linux --host=mipsel-linux
    [...]
    checking CPU endianity... not available, we're cross compiling
    configure: error: Cannot determine CPU endianity.
    Kann jemand was mit der Fehlermeldung anfangen? Google hat mir bisher nicht wirklich weitergeholfen. Google hat lediglich den Sourcecode von bird selbst gefunden.
     
  3. knox

    knox Mitglied

    Registriert seit:
    20 Mai 2006
    Beiträge:
    577
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    diese probleme hat man sehr häufig, wenn man etwas mit dem crosscompiler bauen will. generell ist das problem, dass manche configure scripte bestimmte eigenschaften des zielsystems nicht ermitteln können, da sie ja auch einem andern build system ausgeführt werden.

    hier gibt es leider keine "einfache" lösung: schau das configure script genau an und prüfe, was es zu ermitteln versucht - und wie.
    dann führe diese tests auf dem zielsystem manuell durch und übergebe die gewonnenen ergebnisse beim aufruf von configure gleich mit.
    im ergebniss werden die betreffenden tests dann übersprungen und du kannst erfolgreich cross-compilen.
    ich glaube, u.a. bei meinem makefile für tor (tor.mk) kannst du ein schönes beispiel für dieses vorgehen finden.
     
  4. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Danke knox

    Die Stelle hab ich mittlerweile geschafft. Durch eine Testkompilierung und der Test auf der Zielmaschine (Fritzbox) hab ich das ergebnis raus.
    Code:
    bird_cv_c_endian=little-endian
    Aber beim kompilieren stoße ich auf die nächsten Fehlermeldungen von flex bei denen ich nicht weiterkomme.
    Code:
    $ make
    [...]
    flex  -sB8 -ocf-lex.c -Pcf_ cf-lex.l
    flex: option `s' doesn't allow an argument
    Try `flex --help' for more information.
    Jemand der mir noch ein paar Tipps geben kann zum cross compilen?
     
  5. derheimi

    derheimi Mitglied

    Registriert seit:
    4 Juli 2006
    Beiträge:
    347
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplominformatiker
    Ort:
    Leipzig
    #5 derheimi, 14 Dez. 2006
    Zuletzt bearbeitet: 17 Dez. 2006
    Hi

    also der Daemon compiliert schonmal, siehe auch angehängter Patch. Wenn ich das alles richtig verstanden habe, gibts dazu auch noch ein "client"-Tool zum Überwachen und Steuern des Daemon, das braucht aber readline als Lib und die gibts wohl noch nicht für den dsmod, oder hab ich die nur übersehen?
    Was die Konfiguration angeht, hab ich aber noch keinen Plan. Vielleicht kann jmd eine {Minimal,Default}-Konfig erstellen und beisteuern? Ich müsste mich da erstmal einlesen, weil ich kannte bird bis vor wenigen Stunden noch nicht :)
    Wäre aber offensichtlich die Lösung, um mein VPN-Routing etwas übersichtlicher zu machen... :D

    Gruß
    Michael

    EDIT:
    Ha, zu lange zum Schreiben gebraucht, daher das vorangegangene Posting nicht gesehen.
    flex nimmt die Parameter einzeln entgegen, zumindest bei mir unter Debian Sarge, d.h. "flex -s -B -8.."
    (siehe auch Patch im Patch)

    EDIT2:
    Patch & Paket im Anhang entfernt, aktuelle Versionen siehe weiter unten im Thread.
     
  6. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    danke fürs kompilieren, das hat mir schonmal geholfen. Aber beim ausführen vom "bird" auf der Console bleibt es nur bei einem "segmentation fault" :/
     
  7. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    #7 griffon, 14 Dez. 2006
    Zuletzt bearbeitet: 4 Jan. 2007
    @Michael: Hier schonmal vorbab meine VPN Konfig (in Rohform)

    Man nahme einen OpenVPN Server (Bei mir im Server-Bridge Modus), idealerweiße auf einem Rootserver. Dort melden sich alle VPN Clients an und erhalten eine Adresse auf der gemeinsamen VPN Bridge.

    Durch den OpenVPN BridgeModus können nachher alle Clients sich z.b. mit ihrem OSPF Hello sehen.

    Code:
    router id 10.128.1.250
    protocol kernel {
            learn; persist;
            scan time 20;
            import all;
            export all;
    }
    protocol device {
            scan time 10;
    }
    protocol direct {
            interface "*";
    }
    filter ospf_out {
            if net = 0.0.0.0/0 then reject;
            else if net = 192.168.178.0/24 then reject;
            else accept;
    }
    protocol ospf vpn_ospf {
            import all;
            export filter ospf_out;
            area 0.0.0.0 {
                    networks {
                            10.0.0.0/8;
                    };
                    interface "tap0" {
                            cost 100;
                            authentication cryptographic;
                            passwords {
                                    password "DOLLESPASSWORT" {
                                            id 1;
                                    };
                            };
                    };
            };
    }
    Kurn noch ein paar Worte zu der Config. Natürlich gilt das ganze Ein wenig Grundwissen über OSPF, Areas usw sollte man schon haben, dann wird das ganze später einfacher.

    in networks müsstest du alles netzbereiche eintragen in denen du deine Netzwerk Interfaces hast. Auf dem Interface kannst du dann weitere Dinge wie OSPF authentication usw. einstellen.

    der filter "ospf_out" schütz andere Clients. Würdest du einfach alle Routen exportieren die du auf deinem VPN Client hast, würdest du auch die Default Route 0.0.0.0 mitschicken. Dann würden alle Clients diese Route auch lernen weiß beim nächsten Reconnect zu sehr unschönen Effekten führt. Daher erst garnicht exportierne oder besser importieren.
     
  8. derheimi

    derheimi Mitglied

    Registriert seit:
    4 Juli 2006
    Beiträge:
    347
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplominformatiker
    Ort:
    Leipzig
    Das "segmentation fault" kommt vermutlich daher, dass die vorcompilierten binaries gegen eine leicht andere uClibc gelinkt sind (zugegeben, so richtig habe ich das mit dem APIs/ABIs, Linken & Co noch nicht verstanden). Wirst Du vermutlich nur durch ein "make bird-precompiled" oder gar "make precompiled" wegbekommen. "rebuild_uClibc" hast Du ja sicher schon gemacht... (BTW: Welche FB bzw. welche dsmod version nimmst Du?)
     
  9. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    FB 7170 und noch das normale ds-mod-0.2.9 aber ich muss eh nochmal irgendwie von vorne anfangen, da openvpn noch nicht sauber funktioniert wegen der openssl libs.

    Ich hab aber gesehen das du die ds-0.2.9_26-9 version verwendest. Nunja ich fang mal an und schau mal wie ich nochmal sinnvoll anfange mit dem bauen.
     
  10. griffon

    griffon Neuer User

    Registriert seit:
    9 Nov. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Vielen Dank. Nachdem ich mit der aktuellen Labor Firmware und dem passende ds-mod alles nochmal kompiliert habe, funktioniert der bird daemon sowie auch openvpn endlich.

    Jetzt darf ich mich wieder mit meinem vpn problemchen auseinander setzen :)
     
  11. derheimi

    derheimi Mitglied

    Registriert seit:
    4 Juli 2006
    Beiträge:
    347
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplominformatiker
    Ort:
    Leipzig
    #11 derheimi, 15 Dez. 2006
    Zuletzt bearbeitet: 20 Jan. 2007
    Ich hab mal versucht, den birdc mit zu compilieren. Dazu muss man allerdings die libreadline vorher einbinden.

    @griffon:
    Danke für die Bsp-Konfig, das sieht ja gar nicht so schwierig aus, das an die jeweiligen Bedürfnisse anzupassen. Nun ja, morgen ist auch noch ein Tag :)

    EDIT: Patches aktualisiert.
     

    Anhänge:

  12. derheimi

    derheimi Mitglied

    Registriert seit:
    4 Juli 2006
    Beiträge:
    347
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Diplominformatiker
    Ort:
    Leipzig
    #12 derheimi, 13 März 2007
    Zuletzt bearbeitet: 13 März 2007
    Neuer Patch und neues Paket

    Changelog:
    • allgemeine Verbesserungen an den Make-Scripten
    • bash-spezifische Sachen entfernt
    • Debugging-Code lässt sich mit bauen
    • Bird-Konfiguration nun via WebIf möglich (IMHO nun ein "vollwertiges" Paket)
    • Erzeugung einer Defaultkonfiguration (spricht: RIP und OSPF), die vermutlich in den meisten Fällen ausreichend sein wird, wenn keine eigene Konfiguration beim ersten Start gefunden wird

    libreadline-Patch aus vorhergehendem Posting wird immer noch benötigt!

    Bekannte Bugs:
    • Bird startet beim Booten der Box auf den 7170 irgendwie nicht richtig, auf meiner 7141 klappt alles prima. "Händisches" Starten via cron oder per Telnet/SSH klappt dann aber. Noch keine Zeit gehabt, das endgültig zu debuggen...
    • Direkt nach dem Flashen eines neuen Images und anschließendem "Soft-Reboot", findet bird die anderen Router via OpenVPN-Tunnel nicht. Hier hilft nur ein hartes vom Strom trennen, dann klappt es mysteriöserweise wieder.
    • griffon hat berichtet, dass ihm der bird ab und zu beim Berechnen der Routen mit einem Segfault stirbt.
     

    Anhänge: