OSPF/RIP/BGP Routing mit bird

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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)
 

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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.
 

knox

Mitglied
Mitglied seit
20 Mai 2006
Beiträge
577
Punkte für Reaktionen
0
Punkte
0
griffon schrieb:
allerdings bekomme ich beim ./configure ... einen Fehler
Code:
not available, we're cross compiling
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.
 

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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?
 

derheimi

Mitglied
Mitglied seit
4 Jul 2006
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
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.
 
Zuletzt bearbeitet:

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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" :/
 

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
@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.
 
Zuletzt bearbeitet:

derheimi

Mitglied
Mitglied seit
4 Jul 2006
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
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?)
 

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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.
 

griffon

Neuer User
Mitglied seit
9 Nov 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
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 :)
 

derheimi

Mitglied
Mitglied seit
4 Jul 2006
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
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

Zuletzt bearbeitet:

derheimi

Mitglied
Mitglied seit
4 Jul 2006
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
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

Zuletzt bearbeitet: