PPTP Server auf der Fritzbox funktioniert

Hi,

ich hab mal einige Änderungen im SVN vorgenommen.

Was gehen sollte:
- folgende Dateien über WebIF ändern: pptpd.conf, options.pptpd, chap-secrets (und noch options.pptp, pap-secrets, options, welche aber nicht für pptpd interessant sind)

Was fehlt:
- rc.pptpd Init-Skript (das aus dem Addon wird nicht funktionieren) und WebIF für pptpd-Konfiguration (Starttyp, etc)
- das entsprechende Routing (keine Ahnung, was da notwendig ist)

Da ich auf dem schon vorhandenen pppd-Paket von Oliver aufbaue, sind die Dateien nicht in /tmp/flash, wie sie im Addon sind. Also müsst Ihr nochmal von vorne konfigurieren.

Die Auswahl für pppd, pptpd und pptp erscheint nun übrigens nur, wenn man "Replace Kernel" vorher ausgewählt hat.

EDIT:
Es sollte möglich sein, den pptpd auf der Konsole dann zu starten:
Code:
modprobe arc4
modprobe sha1
modprobe ppp_generic
modprobe ppp_async
modprobe ppp_deflate
modprobe ppp_mppe_mppc

pptpd -c /etc/ppp/pptpd.conf

Beste Grüße,
Whoopie

PS: alles theoretisch, aber wäre für Feedback dankbar.
 
Zuletzt bearbeitet:
Ich werde mir mal die Tage die Sache angehen lassen denn bei mir lief pptpd mit freetz in Test anders. OK aber das War noch in der REV.1748 oder änlich.....
 
Die ganzen COnfig Dateien und Menüeinträge finde ich ziehmlich verwirrend. Anscheinend wurde der ppp-Client und -Server durcheinenader geworfen. Beim Verbindungsaufbau zu meiner 3020, auf der sonst fast nichts installiert ist, bekomme ich
Code:
kernel does not support PPP filtering
 
@cuma: könntest Du das vielleicht ein wenig ausführlicher beschreiben? Danke.
 
Hallo, welche Infos brauchst du denn noch? Meine Testbox ist eine 3020 mit 186x Release von Freetz. An Paketen ist nur SSH und FTP drinnen. Replace kernel natürlich und ein paar andere Patches aus menuconfig. Die Konfig hab ich grössenteils aus dem Addon entommen. Verbinungsaufbau klappt aber nicht:
Code:
kernel: [tiatm] DSL in training!
kernel: CSLIP: code copyright 1989 Regents of the University of California
kernel: PPP generic driver version 2.4.2
kernel: [tiatm] DSL in training!
kernel: PPP Deflate Compression module registered
kernel: MPPE/MPPC encryption/compression module registered
pptpd[738]: MGR: Manager process started
pptpd[738]: MGR: Maximum of 100 connections available
kernel: [tiatm] DSL in training!
kernel: [tiatm] DSL in training!
pptpd[739]: CTRL: Client 192.168.23.43 control connection started
pptpd[739]: CTRL: Starting call (launching pppd, opening GRE)
pppd[740]: pppd 2.4.3 started by root, uid 0
pppd[740]: Using interface ppp0
pppd[740]: Connect: ppp0 <--> /dev/pts/1
pppd[740]: kernel does not support PPP filtering
pptpd[739]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
pptpd[739]: CTRL: Reaping child PPP[740]
pppd[740]: LCP terminated by peer
pppd[740]: Modem hangup
pppd[740]: Connection terminated.
pppd[740]: Exit.
pptpd[739]: CTRL: Client 192.168.23.43 control connection finished
 
Was zeigt denn ein lsmod? Da fehlt doch bestimmt ein Modul.

MfG Oliver
 
Ich revidiere meine letztes Posting, schäme mich und behaupte das Gegenteil!
Ein Fehler in der Konfiguration, durch den eine Datei nicht gefunden wurde und eine falsche Verschlüsselung gewählt wurde! Jetzt geht es, auch wenn die "kernel does not support PPP filtering" Meldung noch immer erscheint.
Beispiel Konfiguration:
/etc/ppp/chap-secrets
Code:
BENUTZER     router  PASSWORT    *

/etc/ppp/chap-secrets
Code:
options.pptpd
name router
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
mppe required
ms-dns IP_EUERES-DNS-SERVERS
proxyarp
lock
nobsdcomp
novj
novjccomp

/etc/ppp/pptpd.conf
Code:
#bcrelay lan
localip IP-EUERER-FRITZBOX
option /etc/ppp/options.pptpd
ppp /usr/sbin/pppd
remoteip IP-BEREICH-FÜR-VPN
#remoteip 192.168.23.230-239

Danach noch ein "chmod 600 /etc/ppp/chap-secrets"
Starten dann wie gehabt mit "pptpd -c /etc/ppp/pptpd.conf"

Da man ja nur 3 Dateien für den Server braucht, könnten doch die ganzen anderen doch von der Weboberfläche entfernt werden? Den VPN-Client benutze ich nicht

Alles in allem aber prima Arbeit, jetzt brauch' ich kein Addon mehr!
 
Hi,

ich habe trunk1887 mal aufgespielt.
Bekomme aber keine pptp verbindung mehr auf die box.
lt Log:
Code:
FritzBox "<30>Feb 20 20:59:11 pptpd[755]: MGR: Maximum of 100 connections reduced to 9, not enough IP addresses given
FritzBox "<30>Feb 20 20:59:11 pptpd[757]: MGR: Manager process started
FritzBox "<30>Feb 20 20:59:11 pptpd[757]: MGR: Maximum of 9 connections available
FritzBox "<30>Feb 20 20:59:27 pptpd[758]: CTRL: Client 192.168.1.1 control connection started
FritzBox "<30>Feb 20 20:59:27 pptpd[758]: CTRL: Starting call (launching pppd, opening GRE)
FritzBox "<27>Feb 20 20:59:27 pppd[759]: The remote system is required to authenticate itself
FritzBox "<27>Feb 20 20:59:27 pppd[759]: but I couldn't find any suitable secret (password) for it to use to do so.
FritzBox "<27>Feb 20 20:59:27 pptpd[758]: GRE: read(fd=8,buffer=42195c,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
FritzBox "<27>Feb 20 20:59:27 pptpd[758]: CTRL: PTY read or GRE write failed (pty,gre)=(8,9)
FritzBox "<31>Feb 20 20:59:27 pptpd[758]: CTRL: Reaping child PPP[759]
FritzBox "<30>Feb 20 20:59:27 pptpd[758]: CTRL: Client 192.168.1.1 control connection finished
Die Configs habe ich wie cuma angepasst.
Nur bei mir liegen sie unter /var/tmp/flash/ppp
Der pppd schein Probleme zu haben.
Muß da noch etwas anderes außer die 3 Dateien für pptpd eingestellt sein.
zur Info: mein root-User hat für Dropbear ein Passwort

Aber mal was anderes.
Der pptpd ist doch der Server. Ist dann der pptp der Client?
Und dann gibt es noch pppd. Diesen benötigt man doch für pptpd und pptp.
Wofür sind die 3 Komponenten denn genau da(Aufgabe).
Arbeitet der pppd nur im Hintergrund? Wiso kann man ihn dann übers WebIf einzeln starten?

Ich glaube da müssen wir noch einiges anpassen.

mfg
Wonderdoc
 
Hallo,

pptpd ist der Tunnelserver, pptp ist der Tunnelclient, pppd macht die PPP Verbindung. Letzteres braucht man z.B. auch für Modem oder ISDN Verbindungen.

Es sieht so aus, als hättest du deinen Benutzer in der chap-secrets nicht sauber angelegt. Übrigens solltest du nicht root dafür benutzen - je nach Systemeinstellungen darf der sich nicht unter allen Umständen einloggen.
 
Hallo,
Übrigens solltest du nicht root dafür benutzen - je nach Systemeinstellungen darf der sich nicht unter allen Umständen einloggen.
Danke erstmal für die Info.
In der chap-secrets verwende ich nicht root, sondern frei gewählten User+Pass.
Muß der User(ppp einwahl) lokal im Linux vorhanden sein?
In dem Addon ging es doch auch so.

EDIT: so, jetzt klappt es.
pppd sucht nach einer chap-secrets unter /etc/ppp/ bzw /mod/etc/ppp/
Es wird ein symlink beim start des pppd übers WebIf dahin angelegt.
Da man pptpd aber momentan noch über Console starten muß, kam hat dieses Problem auf.
Muß man den pppd eigentlich sep. konfigurieren?
Oder benötigt man für pptp+pptpd(VPN über LAN/WAN) den pppd nur als Brücke(zw. Server-Client), den man nicht sep. konfigurieren muß?

mfg
Wonderdoc
 
Zuletzt bearbeitet:
Jo, du hast recht.
Da man über die Fritz aber doch keine Modem oder ISDN Verbindungen aufbauen kann,
würde es doch reichen, den pptpd(Server) und pptp(Client) per WebIf konfigurierbar zu machen.
Der pppd würde ja dann nur als binary benötigt, der nicht sep. konfiguriert werden muß.
Liege ich da jetzt richtig?
Für pptpd wird ja nur chap-secrets, options.pptpd und pptpd.conf benötigt.
(der pppd wird ja autom. vom pptpd gesteuert)
Mit den pptp(Client) habe ich noch keine Erfahrungen gemacht.
(könnte aber so ähnlich sein)

mfg
Wonderdoc
 
Der Nutzer braucht lokal nicht vorhanden zu sein. Minimalkonfiguartionsbeispiel (ich hasse deutsch) siehe Post #267
 
OK,
habe nun auch eine Clientverbindung auf meinen PC(win32) hinbekommen,
kann es aber nicht weiter testen, da ich auf mich selber verbinde.
/etc/ppp/chap-secrets
Code:
BENUTZER     router  PASSWORT    *

/etc/ppp/options.pptp
Code:
lock
noauth
nobsdcomp
nodeflate

/etc/ppp/peers/pptp.conf
Code:
pty "pptp IP_DEINES_SERVERS --nolaunchpppd"
name BENUTZER
remotename router
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
mppe required,stateless
ipcp-accept-local
ipcp-accept-remote
file /etc/ppp/options.pptp
ipparam pptp.conf

Gestarte habe ich die Verbindung über Telnet mit
Code:
pppd call pptp.conf

Die Datei /etc/ppp/options für den pppd wird also nicht sep. benötigt.
pptpd und pptp verwenden ihre eigene Config-Dateien.

mfg
Wonderdoc
 
Die Weboberfläche ist noch etwas durcheinander. Es werden die 3 Dateien benötigt, aber nur 2 sind dort editierbar. Ich benutze halt die selbst angelegten. In Der Konfiguration die GROSSEN Worte an die eigene Umgebung anpassen!!
zB
Code:
wonderdoc     router  kennenurich    *
ms-dns 192.168.178.1
localip 192.168.178.1
remoteip 192.168.178.222-229
Wenn du dann lokal per VPN verbunden bist, solltest du dann eine IP aus dem "remoteip"-Bereich haben
 
@cuma
Bezieht sich dein letztes Posting auf den pptpd(Server) oder auf den pptp(Client)?

Ich habe mir mal ein paar Gedanken gamacht und würde folgene Vorgehensweise vorschlagen.
1.) das pppd-Package unter make menuconfig wird ja schon in Abhängigkeit vom pptpd und pptp-Package automatisch ausgewählt.
--> pppd sollte aber nicht sep. ohne pptpd und pptp auswählbar sein,
daher sollte es im menuconfig komplett ausgeblendet und deaktiviert werden,
wenn weder pptpd noch pptp ausgewählt sind.
2.) das pppd-Package sollte dann nur die pppd-bin bauen.
3.) das pppd-Package sollte über die rc.pppd nur für die Einbindung der chap-secrets
da sein, da sie für pptpd+pptp benötigt werden.
(ggf falls doch benötigt auch für das options-File des pppd)
4.) der pppd sollte nicht sep. über die Dienste-Seite des WebIfs aufgeführt werden.
5.) das pptpd und pptp-Package bekommen eine sep. Package-Seite im WebIf und sollten sep. unter Dienste per WebIf startbar sein.
6.) über die rc.pptpd und rc.pptp sollten jeweils nur die für das Package benötigte Konfig-Files in den Mod/WeBIF eingebunden werden.
(bei pptp die options.pptp+pptp.conf und bei pptpd die options.pptpd+pptpd.conf)
7.) die benötigten kernel-Module solllten in Abhängigkeit von Zustand des pptpd und pptp in deren rc.
geladen und entladen.
z.B. wird pptpd gestartet, dann werden sie geladen, startet man danach pptp, dann werden sich nicht doppelt geladen.
Die Module werden erst entladen, sobald beide packages beendet werden.
8.) für das auto. Setzen von Routen müßte man sich auch noch gedanken machen.
Es sollte aber doch reichen, wenn dies nur beim pptp(Client) geschieht.
Dort wo der pptpd läuft, sollten die Routen ja schon fest vorhanden sein.
Es sei denn man verwendet wie bei bei OpenVPN eine Tunnel-Netz, welches dann lokal auf das richtige Netz geroutet werden soll.
Bsp 1: ohne Server-Routing, bei Client muß Routing für LAN(192.168.1.0) gesetzt sein
LAN(192.168.1.0) -> Fritzbox(192.168.1.100) - lokaleIP pptpd(192.168.1.100) <- client(192.168.1.200)
Bsp 2: Server mit Tunnel, bei Client und Server muß Routing gesetzt sein um auf LAN zu kommen
LAN(192.168.1.0) -> Fritzbox(192.168.1.100) - lokaleIP pptpd(10.0.0.1) <- client(10.0.0.2)

Bitte korrigiert mich wenn ich einen Gedankenfehler gemacht habe, oder wenn etwas fehlt, oder es für einen Punkt eine bessere Lösung gibt.

mfg
Wonderdoc
 
@wonderdoc:

Ich find's gut. So in der Richtung hatte ich mir das auch vorgestellt.

Aber natürlich sind Patches jederzeit willkommen. ;)

EDIT: Hab mal einige Sachen geändert, bitte testen.
 
Zuletzt bearbeitet:
@Whoopie
Supper, konntest wohl nicht bis zum WE abwarten? :groesste:
Ich habe trunk 1891 noch nicht installiert, ich habe aber gesehen, dass in der rc.pptp
und rc.pptpd die Module beim Start geladen und beim Beenden entfernt werden.
Was ist aber, wenn Server und Client parallel laufen.
(Ist dieses überhaupt möglich?)
Würden die sich da nicht gegenseitig die Module abschießen?
Ich hatte da bei mir auch mal 2 Packages, welche die selben Module benutzen.
Ich würdes es z.B. wie folgt in der rc.pptp lösen.
Unter start()
Code:
echo "Starte PPTP-Client..."
      if [ -z "$(pidof "$DAEMON")" ]; then
        touch /var/run/pptp.pid
        if [ ! -f "/var/tmp/.pppmodule" ]; then
          touch /var/tmp/.pppmodule
          modprobe xxxxx
          sleep 1
          echo "PPP-Module geladen"
        else
          echo "PPP-Module sind bereits geladen"
        fi  
        ......
        ......
      else
        echo 'PPTP-Client ist bereits gestartet'
      fi
Unter stop()
Code:
echo "Stoppe PPTP-Client..."
...
...
      if [ -f "/var/tmp/.pppmodule" ]; then
        if [ ! -f "/var/run/pptpd.pid" ]; then     [COLOR="Red"]<-- Hier prüfen, ob pid-File vom pptpd vorhanden ist.[/COLOR]
          rmmod xxxx
          rm -f /var/tmp/.pppmodule
          sleep 1
          echo "PPP-Module entladen"
        else
          echo "PPP-Module bleiben aktiv für weitere PPP-Anwendung"
        fi
      fi
      rm -f /var/run/pptp.pid
Die Prüfung beim Stop könnte mal auch mit mit "if [ -z "$(pidof "pptpd")" ]; then" bewerkstelligen.

EDIT:
Ich sehe geraden, dass in der rc.pptpd der Eintrag für die pptpd.conf komplett fehlt und einen kleinen Fehler hat
In der rc.pptp hab ich auch mal einen kleinen Fehler beseitigt.
Den gegenseitigen Modul-Prüfung ist noch nicht drin.

Patches für rc.pptp und pptps nun im Anhang

mfg
Wonderdoc
 

Anhänge

  • ppp_patch_trunk1891.zip
    1,021 Bytes · Aufrufe: 1
Zuletzt bearbeitet:
Die Mühe mit den Modulen ist unnötig.

Wenn ein Modul bereits geladen ist, wird es nicht doppelt geladen, der Aufruf von modprobe stört daher nicht weiter.
Wenn ein Modul in Verwendung ist, kann es auch nicht entfernt werden. rmmod bringt dann eine Fehlermeldung.

Die einzige Gefahr wäre, wenn ein Skript die Module lädt und ein anderes Skript die Module entlädt, bevor sie verwendet werden. Das ist aber sehr unwahrscheinlich.

Noch einfacher wäre es, die Module geladen zu lassen, da sie nicht übermäßig groß sind.
 
OK,
aber um sicher zu gehen, kann man die Abfrage doch einbauen.

Wie du schon sagst, könnte man die Module auch in der Load des rc.pppd laden
und in der Unload wieder entladen.
Somit sind sie dann zwar immer geladen, man müßte sich aber in der rc.pptp und rc.pptpd dann keinen Kopf mehr machen.
Man muß dann nur sicherstellen, daß die rc.pppd beim Boxstart vor den beiden anderen(rc.pptp+rc.pptpd) geladen wird.

Oder man läd alle module mit Modprobe in der rc.pptp+rc.pptpd und läßt das rmmod einfach weg,
so dass sie auch dauerhaft geladen sind.

@Whoopie
der pppd taucht im Webif unter Dienste noch auf.
Der Link in für pppd_options verweist in der Package-Ansicht pptp+pptp auf das File options, damit wird ein Fehler ausgegeben.
Konfiguration in der aktuellen Sicherheitsstufe nicht verfügbar!
Fehler: Unbekannter Typ ''
Außerdem muß im pptpd-Ansicht noch der Link für pptpd.conf eingeflegt werden.(hatte ich in dem Patch vergessen)

Weitere Tests folgen.

mfg
Wonderdoc
 
Zuletzt bearbeitet:
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.