Re: DSL Verbindung richtig beenden?

From: Andreas Braukmann <braukmann(at)tse-online.de>
Date: Mon, 16 Aug 2004 22:45:43 +0200

Moin,

--On Montag, 16. August 2004 20:56 Uhr +0200 Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:

> Andreas Braukmann <braukmann(at)tse-online.de> wrote:

>>> Ih habe jetzt in meine ppp.conf folgendes eingetragen:
>>>
>>> ,----
>>>| set server /var/run/internet "" 0177
>>> `----
>>
>> Das sieht ok aus;
>
>
> Aber ich verstehe nicht, was das bedeutet:
>
> aus der manpage:
>
> ,----[ man ppp 8 ]
>| set server|socket TcpPort|LocalName|none|open|closed [password [mask]]
> `----
>
>
> nehmen wir das Beisopiel oben
>
> Param1: /var/run/internet
> Param2: ""
> Param3: 0177
>
> Und welche Parameter werden dabei hier gesetzt:
> set server|socket TcpPort|LocalName|none|open|closed [password [mask]]

Da es sich um einen absoluten Pfadnamen handelt, kann es
sich nur um den "LocalName"-Fall handeln. Damit ist ein
"Unix Domain Socket" gemeint. "Unix Domain Sockets" sind
nicht an eine Netzwerk-Adresse gebunden, sondern werden
ueber eine (spezielle) Datei im lokalen Dateisystem ange-
sprochen.

> Ist "/var/run/internet" nun der "TcpPort" oder der "Localname"?

LocalName; ein TcpPort waere entweder numerisch oder der
Name eines Netzwerk-Services (wie in /etc/services defi-
niert). Damit waere der ppp-Daemon dann auch uebers Netzwerk
fernbedienbar.

> Und was ist der LEERSTRING? steht der für none|open|closed|...

Nein. "none", "open", "closed" stuenden an Stelle des
LocalName oder des TcpPorts. Alles drei sind Kommandos,
die man nur bei interaktiver Bedienung des ppp-Programms
verwenden wuerde. Wenn man z.B. mit "set server ..."
einen Kontroll-Socket fuer den Daemon eingerichtet hat,
so kann man diese Konfiguration mit "set server none"
wieder loeschen. (Siehe z.B. Formulierung in der manpage:
    "The word ``none'' instructs ppp to close any existing
     socket and clear the socket configuration. The word
    ``open'' instructs ppp to attempt to re-open the port.
    The word ``closed'' instructs ppp to close the open
    port."

Der Leerstring steht fuer ein (hier nicht vergebenes) Passwort,
welches dann fuer den Zugriff ueber den Kontrollsocket auf das
laufende PPP benoetigt wuerde.

> Die 0177 seheh wie dateirechte aus, aber ...

So ist es denn auch.

> 1) Ich füge also diese Zeile in meine ppp.conf:
> set server +3000 meinpasswort
>
> 2) ich starte ppp:
> -su-2.05b# ppp -auto tdsl
> Working in auto mode
> Using interface: tun0
>
> 3) ich rufe pppctl 3000:
> -su-2.05b# pppctl 3000
> pppctl: cannot connect to socket 3000: Connection refused

Das sollte eigentlich funktionieren (gerade mal getestet).
Spuckt das ppp fuer den missglueckten Vebindungsaufbau
etwas ins Logfile?

> Laut manpage sollte das so funktionieren. aber ich bekomme "connection
> refused."

Da geht irgendetwas anderes schief.

>>> Okay. nun starte ich ppp - so:
>>> ,----
>>>| ppp -auto dtsl
>>> `----
>>
>> Wenn Du "-auto" benutzt, wird die Verbindung doch eh
>> automatisch auf- und abgebaut?
>
> Okay, das stimmt, ich benutze auch eher "-ddial", also dauerhafte
> Verbindung.

ok. In dem Fall ist das Senden des passenden Signals (per kill)
die dokumentierte und durchaus saubere Variante, dem PPP den
Wunsch zum Verbindungsabbau mitzuteilen. Da "ddial" eine unter-
brochene Verbindung sofort wieder aufbaut, musst Du "HUP", "TERM"
oder "QUIT" senden.

Allerdings ist "ddial" explizit fuer "standleitungsaehnlichen"
Betrieb vorgesehen. Das widerspricht schon irgendwie Deiner
Idee, die Verbindung nur bei Bedarf zu aktivieren ;-)

Entweder Du nimmst die Anregung von Patrick Hess auf, oder
Du nimmst die "auto"-Betriebsart und setzt einen passenden
Waehlfilter. Ein explizites Beenden der Verbindung ist im
auto-Betrieb (abgesehen vom automatischem Timeout) ja auch
per Signal (INT) oder per Kontroll-Verbindung (s.o.) moeg-
lich.

> ich möchte ppp sauber benenden, ohne killall.

Dann nimmst du halt nicht das "dreckige" killall, sondern
ein ganz sauberes "kill" und suchst Dir die PID des zu
benachrichtigenden ppp-Prozesses aus /var/run/<interface>.pid
(Das ist eine regulaere Datei, welche eine Textzeile ent-
haelt, in der die gewuenschte PID steht.)

Wenn Dein PPP-Interface "tun0" ist, hiesse die Datei folg-
lich: /var/run/tun0.pid
Das INT-Signal koenntest Du dann z.B. so absenden:
bash$ kill -INT `cat /var/run/tun0.pid`

> Aber gerade das scheint mir die einfachste Lösung zu sein.
>
>>> Nun versuche ich das Teil zu steuern:
>>>
>>> ,----
>>>| pppctl /var/run/internet close
>>> `----
>>
>> Wie sieht die Ausgabe aus, wenn Du das Kommando absetzt?
>> Welche Ausgaben gibt es in /var/log/ppp.log?
>
> Ah jetzt ja (es scheint, das die Verbindung sofort wieder hergestellt wird):

also macht das "close" doch das erwartete. Wenn Du die Verbindung
im "ddial"-Modus gestartet hast, wird sie auch (wie vorgesehen)
sofort wieder aufgebaut.

>
>>> ,----
>>>| pppctl /var/run/internet dial
>>> `----
>>
>> Hier dieselbe Frage?
>
> -su-2.05b# pppctl /var/run/internet dial
> Warning: Manual dial is only available for auto and interactive links
> Warning: dial: Failed 1
>
> Okay, das Teil wurde mit -ddial gestartet. Das passt.

genau.

>> Mit dem passenden "dial filter" kommt man auch schnell
>> zu einer Loesung, die in der Praxis dem ausschliesslich
>> explizitem Verbindungsaufbau entspricht, aber dennoch
>> den Vorteil des automatischen Verbindungsabbaus bietet.
>
> Ich fürchte, das ist noch ein langer Weg für mich... ;-/

;-) mag sein. Aber freundliche Fragen finden hier auch
fast immer freundliche Antworten. Fuer Dein aktuelles
ppp-Problem solltest Du Dich nun fuer eine der beschriebenen
Varianten entscheiden und versuchen, diese "hinzubekommen".
Bei Problemen postest Du halt wieder ...

Nimm ruhig erstmal den Vorschlag von Patrick auf; er ist
anfaengerfreundlicher (wenn auch IMVHO nicht sehr elegant;
Patrick: nein, bitte nicht schlagen, ist nicht persoenlich
gemeint ;-)).
Mit "auto" und "Dial-Filtern" kannst Du Dich immer noch
beschaeftigen. Ein ungeschickter Dial-Filter kann die
Telefonrechnung in astronomische Hoehen treiben. (Ja, das
hab ich - wenn auch nicht mit FreeBSD, sondern einem Bin-
tec-Router - auch schon vollbracht ...)

-Andreas

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 16 Aug 2004 - 22:46:03 CEST

search this site