Es geht: FBF ohne dsld aber mit DSL

MaxMuster

IPPF-Promi
Mitglied seit
1 Feb 2005
Beiträge
6,932
Punkte für Reaktionen
3
Punkte
38
Hallo zusammen,

dieser Post ist eine Premiere (für mich), denn meine Box ist zwar per DSL im Internet, aber ohne dsld ;-)

So gehts: Die Auswahl von "Remove dsld" lässt ja netterweise die eigentlichen DSL-Treiber und Firmware im Image. Mittels PPPoE und Co. kommt man so ins Internet wie alle Opensource-Router.

Das habe ich gemacht: pppd gewählt und die Module für PPPoE gebaut und ins Image gepackt. Dafür war zumindest bei mir "replace kernel" Voraussetzung, sonst lief ppp nicht.
Für die Module habe ich direkt beim Kernel PPPoE ausgewählt:
"make kernel-menuconfig" in Device-driver -> Network device support: PPPoE
Das erforderliche "br2684" war schon ausgewählt.
Dann ein "make kernel-precompiled" zum Bauen der Module.
(Frage dazu: Kann man aus dem Freetz heraus die zu Kernel-Config irgendwie beeinflussen?!?)

Um den pppd zu nutzen, muss vorher das DSL-Modem in die Box gebrückt werden mit br2684. Das Config-Programm dafür (br2684ctl) habe ich nicht so kompiliert bekommen, deshalb im openwrt ein statisches Binary gebaut und genutzt.

Ich habe ein paar Rudimentäre Dateien (zu freetz-1.0) angehängt. Die "GUI" ist wirklich minimal und die Eingabe vom PW in Klartext sicher nicht optimal. Aber es sollte ja erstmal ein "Proof of Concept" sein...

BITTE BEACHTEN: Die Box ist danach direkt mit dem Internet verbunden. Keine AVM-Firewall, nix schützt euch!

Um eine Firewall zu haben und um das Internet aus den angeschlossenen Netzen nutzen zu können, benötigt ihr iptables!!!

Viel Spaß und schönes Wochenende!

Jörg

EDIT : Neuer Patch, ich hatte das Config.in im obersten Ordner vergessen...
 

Anhänge

  • pppoedsl.tgz
    49.8 KB · Aufrufe: 64
  • PPPoEDSL.png
    PPPoEDSL.png
    117.3 KB · Aufrufe: 467
  • pppoedsl.patch2.gz
    1 KB · Aufrufe: 36
Zuletzt bearbeitet:
Schau mal ob du mit diesem Changeset was anfangen kannst?

br2684 ist bei mir fest im Kernel drin. Da sollte es kein Modul brauchen.

MfG Oliver
 
... beim br2684 hatte ich mich dumm ausgedrückt. Das war tatsächlich fest "fest ausgewähl", ich wusste nur nicht, ob das immer so ist.
Da war ich zunächst drüber gestolpert, denn im openwrt wurde da vorher das Kernelmodul geladen, was dann bei "unserem" Kernel natürlich unnötig war...

Das neue Changeset sehe ich mir an, aber vermutlich erst morgen, vorgestern und gestern war ich doch etwas zu lange dran ;-)

Vielen Dank!


Jörg

EDIT Erste Rückmeldung: Baut br2684ctl, aber das braucht zumindest noch "libresolv"... Ich schaue später nochmal, muss jetzt weg.
EDIT Ein zusätzliches "select" und es geht (oder müsste es eigentlich als select in die libatm?!?) Hier ein diff zur Revision 2340, das "pppoedsl"-Paket von oben muss natürlich noch etwas geändert werden ;-)
 

Anhänge

  • svndiff.gz
    983 Bytes · Aufrufe: 11
  • pppoedsl_2340.tgz
    2.3 KB · Aufrufe: 14
Zuletzt bearbeitet:
Ich gebe zu, ich bin noch ein noob auf dem Gebiet. Aber was bringt es, den dsld duch was anderes zu ersetzen?
 
Zum Beispiel ein besseres Verständnis oder besser Kontrolle darüber, was in der Box vorgeht. Oder einfach ausprobieren, ob es möglich ist.
 
Einfach mal, dass man nicht mehr auf Closed Source von AVM angewiesen ist, sondern selber eingriff in die Verbindungssachen hat.
 
Ich denke das Max Muster uns das genau erklären wird
in diesem Moment rätselt jeder
aber wir sollten MaxMuster das Wort geben was er sich dabei gedacht hat
und ich bin überzeugt das es bestimmt wieder etwas dolles für Freetz ist

gruss ichego1
 
Zuletzt bearbeitet von einem Moderator:
@ichego1

Ich bitte dich noch einmal, nicht das halbe Posting in die Überschrift zu stecken. Das ist nicht förderlich für den Lesefluss, und hebt dein Posting über die technisch relevanten hinaus.
 
... hm, was soll ich da noch erklären?!? Wie geschrieben kann ich damit per DSL ins Internet, ohne auf den proprietären "dsld" von AVM angewiesen zu sein, der z.B. eine "ZwangsNAT" macht usw. Natürlich mit dem Nachteil, das man alles das, was die Box "von sich aus macht" eben nachbilden muss, z.B. mit iptables.

Folgendes ist mein Stand:

  • Internet geht
  • DNS muss ich von Hand in /etc/resolv.conf eintragen (das könnte man nach einer Verbindung des pppd's sicher noch aus der Augabe herausziehen; der Eintrag "usepeerdns" macht das scheinbar nicht...)
  • Der Box-DHCP verteilt scheinbar immer die Box-IP als DNS, das klappt aber nicht, da müsste auch der Externe DNS vergeben werden. Anderen DHCP nutzen?
  • Mit Portweiterleitung klappt auch VoIP (nur rausgehend getestet), die Status-Anzeige sagt aber immer "nicht verbunden", weil die Box nicht weiß, dass sie im Internet ist ;-)
  • Hier mal meine Iptables Grundkonfig, Kommentare und Anregungen gern gesehen:
    Code:
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
    -A INPUT -p tcp -i ppp0 -d 0.0.0.0/0 --dport 22 -j ACCEPT
    -A INPUT -p tcp -i ppp0 -d 0.0.0.0/0 --dport 5060 -j ACCEPT
    -A INPUT -p udp -i ppp0 -d 0.0.0.0/0 --dport 5060 -j ACCEPT
    -A INPUT -p udp -i ppp0 -d 0.0.0.0/0 -j DROP
    -A INPUT -p tcp -i ppp0 -d 0.0.0.0/0 -j DROP
    -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  • Langzeitstabilität mit iptables ist nicht getestet.

Jörg

EDIT Der pppd schreibt bei "usepeerdns" die DNS nach /etc/ppp/resolv.conf, da muss man sie dann noch kopieren.
Die Tatsache dass User und PW im Klartext in der Seite sind, ist auch noch blöd. Da könnte man eigentlich noch die Daten aus dem AVM-Interface aus der ar7.cfg nehmen und darauf in der Seite verzichten. Die VPI VCI Sachen stehe auch drin, also eigentlich könnte ich mir die "GUI" schenken und direkt aus der ar7.cfg auslesen.

Auch wie lange der pppd sich normalerweise einwählt, was bei der Zwangstrennung passiert usw, alles das ist noch offen.
 
Zuletzt bearbeitet:
Hallo,

die VPI/VCI Konfig holst du also aus der ar7.cfg? Hast du schon Erfahrung mit einer 2. PVC? Unterstützung von VLAN Tags?

Theoretisch müsste es doch auch möglich sein, mit dem Verfahren über ein externes Modem die PPPOE Verbindung aufzubauen. Ich bin bislang nämlich gescheitert, 2 PVCs über ein externes Modem zu etablieren, da der dsld irgendwie keine 2 PPPOE Verbindungen über ein externes Modem triggern will. Versuche, manuell eine Aufteilung auf VLAN IDs zu erzwingen, sind bislang gescheitert. Bei einem extra dafür angeschafften Modem (AR860) kann man nämlich mehrere VPI/VCI Paare getrennt über VLAN Tags ansprechen. Jetzt fehlt mir nur noch die PPPOE Unterstützung dafür auf der anderen Seite ...
 
Hi Frank,

das war nur eine Idee, wie man das in Zukunft machen könnte/sollte; noch trage ich die Daten manuell ein.

Im Prinzip gibt es ja zwei Möglichkeiten: Die Werte aus der ar7.cfg nehmen, oder aber aus den ermittelten Werten in /proc/avalanche/avsar_channels arbeiten.

Getestet habe ich es nicht, da aber mein pppd Aufruf das Interface nas0 nimmt, sollte ethx auch möglich sein. Mit zwei Aufrufen sollte es gehen, wenn ich die VLANS als unterschiedliche "Interfaces" ansprechen kann.
Für die interne Lösung sollte das auf jeden Fall gehen: für den zweiten Channel mit seinen VPI/VCI ein weiteres Bridge-Interface bauen und darüber eine weitere PPPoE-Session machen. Falls ich da heute Abend mal zu komme, werde ich das zumindest mit dem internen Modem mal testen (ich weiß aber nicht, warum ich eigentlich 2 Channels habe, da ich bei Versatel nur meine DSL-Flatrate und Telefon über echtes ISDN habe.) Ob das also überhaupt funktionieren kann???

Jörg

EDIT Nein, ich müsste die Daten aus /proc/avalanche/avsar_pvc_table nehmen, da hebe ich nur einen PVC, kann ich also nicht testen...
 
Zuletzt bearbeitet:
Klingt hochinteressant, nur wie genau spielt der avm-dsld mit der avm-telefonie-software zusammen? Ich beschäftige mich erst seit Kurzen mit der Fritzbox, aber ich bin schon auf erheblichen Widerstand gestossen als ich versucht habe herauszufinden wo die avm-telefonie-software hinverbindet und wie ich mit einem asterisk dort hin komme.

Aber vielleicht is gerade das austauschen vom avm-dsld das was man tun muss damit es funktioniert?
 
Mit den oben geposteten iptables Einstellungen konnte ich meinen VoIP-Account zumindest zum raustelefonieren nutzen.

Wie die AVM-Spezialitäten (VoIP über einen anderen DSL-PVC ... ) funktionieren, weiß ich nicht...

Jörg
 
...jetzt auch ohne multid ;-)

So, noch ein wenig gebastelt, nun klappt es auch ohne multid (bei mir zumindest).

Multid wurde noch für das Bridging und das Zuweisen der IPs benötigt, den Part habe ich versucht nachzubauen.

Die PPPoE Oberfläche kann nun die Daten aus der ar7.cfg übernehmen, beim Starten des Netzwerkes werden auch die Schnittstellen aus der ar7.cfg "gefüttert". Es werden jetzt auch inadyn und dnsmasq hinzugewählt, um eine "Näherung" zur Originalfunktion zu haben. Mit pppd 2.4.4 scheint es auch zu laufen.

Zum OpenVPN habe ich auch noch ein kleines Update gebaut, damit ein gebrücktes VPN-Interface automatisch zum LAN hinzugefügt wird. Scheinbar schaut der multid sonst ständig, ob ein neues Bridge-Interface dazugekommen ist und fügt das dann ein und es sollte ja nun auch halbwegs dem "Original" entsprechen ;-)...

Natürlich wieder der Hinweis: Seeeehr experimentell, und auch nur auf meiner "alten" Eumex getestet...

Grüße

Jörg

EDIT: Kleine Anmerkung, die mir gerade noch einfiel: Da ist noch meine "Backuplösung" mit drin. Auch bei "allen in einem Netz" habe ich das USB-Netzinterface aus der Bridge herausgenommen und fest auf 192.168.178.1 gesetzt. Das müssten Tester ggf. noch rausnehmen...
 

Anhänge

  • pppoedsl_20080703.tgz
    4.4 KB · Aufrufe: 24
  • openvpn_20080703.diff.gz
    322 Bytes · Aufrufe: 7
  • svndiff_20080703.gz
    1.1 KB · Aufrufe: 12
Zuletzt bearbeitet:
Ich finde das eine sehr schöne Sache, die wir wenn möglich auch in Freetz aufnehmen sollten. Dazu muss das Ganze natürlich ziemlich 'out of the box' funktionieren.
 
Ja, in der Tat, eine Freetz-Integration wäre schick ;-)

Dafür wären natürlich noch ein paar Dinge nötig, an erster Stelle mutige Tester auf anderen Boxen ;-)

Die Frage wäre, wie man weiter vorgeht, um die Konfiguration hinzubekommen: Entweder (so habe ich das momentan gemacht) die Daten möglichst vollständig aus den AVM-Infos (ar7.cfg) herauszuziehen. Das ist natürlich erstmal praktisch und teilweise unumgänglich, um nach dem ersten Booten eine funktionierende Box zu bekommen (wenn z.B. der multid weg ist, hätte man sonst keine IPs).

Es bliebe die "Merkwürdigkeit", dass ich Änderungen in der AVM-GUI machen müsste, um "Freetzteile" zu konfigurieren.
Als hohes Ziel stellte ich mir eigentlich vor, die AVM-GUI nur noch für die notwendigen Dinge (z.B. Telefonie) zu nutzen und alle anderen Einstellungen (IPs, Zugangsdaten, Bridging...) in eigene Seiten auszulagern. Dabei bliebe dann die weitere Frage, ob man die ar7.cfg weiterhin zur Datenspeicherung nutzt oder die Infos in eigene "Konfigurationen" abspeichert.

Man könnte sich da sicher an die OpenWRT Seiten anlehnen, aber das würde wohl ein wirklich großes Projekt, dafür reichen meine Kapazitäten nicht aus...


Jörg
 
Ich sehe das eigentlich genau so wie Du. Das Freetz-Webinterface wird sowieso demnächst umstrukturiert werden (das ist auf der Mailingliste schon besprochen worden), ich komme nur momentan nicht dazu. Das problematischste, was ich an der ganzen Sache sehe, ist, daß diese ganze Implementierung optional bleiben soll, da viele User möglichst wenig an den AVM-Sachen drehen möchten.
 
Diese Modifikation benötigt "replace kernel", deshalb muss die optional bleiben.

MfG Oliver
 
Das das optional bleiben muß ist schon klar, da sehe ich auch nicht so das ganz große Problem drin.

Meine Vorstellung wäre ganz grob, dass die Auswahl (wenn man dann mal soweit ist) einen Teil der AVM-GUI "entsorgt" und dafür eigene Config-Seiten einbindet. Beim ersten Start kann man dann die Dinge aus der ar7.cfg in die eigenen config-Dateien übernehmen, die ar7.cfg könnte dann auch (alternativ zu festen Werten) die Grundlage für "Default"-Einstellungen sein...

Momentan fehlt mir etwas der Antrieb, mich an ein Paket zu machen, denn "eigentlich" geht es ja und ich "habe das ja auch garnicht gewollt", sondern ich wollte nur die Frage beantworten, was man machen könnte, um komplett eigene Firewall- und Portforwardingregeln nutzen zu können;).

Jörg
 
Statusupdate

Hier vorm Urlaub mal mein Status:

Um die Größe des Images noch etwas kleiner zu bekommen habe ich jetzt folgenden Ansatz:

Der rausgepatchte multid wird "ersetzt" durch die Busybox-Tools "brctl" und "udhcpd" (deutlich kleiner als die bridge-tools bzw dnsmasq), die Config wird aus der ar7.cfg generiert, Unterschied ist, dass die Box als DNS den "echten" ProviderDNS weitergibt. Für "dyndns.org" wird beim Aufbau der DSL-Verbindung per wget der Name aktualisiert (Daten auch aus ar7.cfg).

Durch die Möglichkeit auf inadyn, dnsmasq und die bridge-utils verzichten zu können brauche ich zusätzlich zu den benötigten Paketen pppd und br2684ctl (und der größeren Busybox) nur noch iptables. Wenn ich das mit GUI wähle, habe ich eine resultierende Imagegröße die immerhin noch 30k kleiner ist ;-)

"Original:"
Code:
replacing busybox
  replacing busybox-4mb_26
  installing symlinks
replacing kernel
  replacing kernel-4mb_26-04.49 (iln6)
  installing modules
  generating modules.dep
installing packages
  dropbear-0.51
  openvpn-2.1_rc7
  haserl-0.9.24
  modcgi-0.2
invoking custom script
done.

STEP 3: PACK
  Checking for left over Subversion directories
squashfs blocksize
  root filesystem: 65536
packing var.tar
creating filesystem image
merging kernel image
  kernel image size: 3758848 (max: 3866624, free: 107776)
packing 300ip_as_fon_04.49-freetz-devel-2371M.en_20080710-104209.image
done.

"Remove dsld + remove multid + iptables mit GUI"
Code:
replacing busybox
  replacing busybox-4mb_26
  installing symlinks
replacing kernel
  replacing kernel-4mb_26-04.49 (iln6)
  installing modules
    arc4.ko
    sha1.ko
    ppp_deflate.ko
    ppp_mppe_mppc.ko
    slhc.ko
    pppoe.ko
    pppox.ko
    ppp_generic.ko
    ppp_async.ko
    crc-ccitt.ko
    ipt_state.ko
    ipt_multiport.ko
    ipt_MASQUERADE.ko
    iptable_filter.ko
    ipt_iprange.ko
    ipt_REDIRECT.ko
    iptable_nat.ko
    ip_conntrack.ko
    ipt_mac.ko
    ipt_LOG.ko
    ip_conntrack_ftp.ko
    ip_tables.ko
  generating modules.dep
installing packages
  iptables-cgi-1.0.4
  dropbear-0.51
  pppd-2.4.4
  openvpn-2.1_rc7
  br2684ctl-20040226
  haserl-0.9.24
  modcgi-0.2
  pppoedsl-1_alpha
invoking custom script
done.

STEP 3: PACK
  Checking for left over Subversion directories
squashfs blocksize
  root filesystem: 65536
packing var.tar
creating filesystem image
merging kernel image
  kernel image size: 3730176 (max: 3866624, free: 136448)
packing 300ip_as_fon_04.49-freetz-devel-2371M.en_20080710-105423.image
done.

Bliebe noch als Frage, warum das Bauen der Busybox mich nun nach einem Config-Parameter beim udhcpc (also beim Client, den ich garnicht gewählt habe) fragt und wie ich aus dem freetz-Lauf einen Busybox Configparameter (CONFIG_DHCPD_LEASES_FILE=) setzen kann...

Vielleicht findet sich ja noch ein Mutiger, der es auch mal auf einer anderen Box wagt...


Jörg
 

Anhänge

  • pppoedsl.tgz
    5 KB · Aufrufe: 15
  • svndiff_20080710.gz
    1.6 KB · Aufrufe: 10
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.