bugat.at

PPP Zugang unter NetBSD konfigurieren

Es soll ja immer noch Leute geben, die eine ganz normale Modem Dialup Verbindung für die Verbindung zum Internet verwenden (ich bin einer davon :) Prinzipiell kann man pppd Dateien von Linux bzw. FreeBSD unter NetBSD weiterverwenden.

Seis drum, ich hab mir die Mühe gemacht, und meinen AON-Zugang für NetBSD neu konfiguriert. Als erstes habe ich das chatscript direkt übernommen. Das sieht folgendermaßen aus:

ABORT BUSY ABORT 'NO CARRIER' '' AT OK ATDT194040 login: <aon-kennnummer> word: <passwort>

Es liegt in der Datei /etc/ppp/aon_chat. Wer noch Pulswahlverfahren verwendet muss natürlich ATDT durch ATDP ersetzen. Für andere Provider muss das Script logischerweise angepasst werden.

Für Netway beispielsweise habe ich folgendes chatscript:

ABORT BUSY ABORT 'NO CARRIER' '' AT OK ATDT0718912170 way: <login> word: <passwort>

Damit pppd weiß, welches device mit welcher Geschwindigkeit und welchen Optionen verwendet werden soll, gibts die Datei /etc/ppp/options.

/dev/tty01 lock nodetach crtscts 115200 noipdefault defaultroute

/dev/tty01: steht für die Gerätedatei, bei mir die zweite serIelle Schnittstelle.
lock: Ist die lock-Option lockgegeben, legt pppd ein lock-file für die serielle Schnittstelle an, um exklusiven Zugriff zu gewähren.
nodetach: Ohne nodetach startet pppd im Hintergrund, und muss explizit mit kill gestoppt werden, allerdings gibts so eine freie virtuelle Konsole mehr :)
crtscts: stellt Hardware-Datenflußkontrolle der seriellen Schnittstelle ein.
115200: die Baudrate
noipdefault: ohne diese Option versucht pppd die lokale IP zu verwenden.
defaultroute: fügt die ppp-Verbindung als defaultroute in die Routing- Tabelle ein und setzt die andere Seite als Gateway.

Für weitere Optionen und genauere Erklärungen bietet die pppd-manpage Informationen.

Als nächstes muss das Verzeichnis /etc/ppp/peers erstellt werden. Dieses enthält die für pppd relevanten Informationen. Bei mir liegt darin nur die Datei aon, wer jedoch mehrere Provider hat, kann natürlich auch weitere Dateien (zB netway, uta, etc.) plazieren. Die Dateien in diesem Verzeichnis teilen pppd mit, welches chatscript zu verwenden ist und geben zusätzlich Optionen an. Meine /etc/ppp/peers/aon sieht so aus:

connect '/usr/sbin/chat__f_/etc/ppp/aon_chat/index.html'
noauth

noauth unterbindet pppd's Verhalten, die Gegenseite (also den Provider) zur Authentifizierung zu zwingen.

Wenn nur root sich einwählen dürfen soll, ist es empfehlenswert, pppd's Dateien nur für root lesbar zu machen:

chmod og-r *

Wer named nicht rennen hat, muss noch die DNS-Server in /etc/resolv.conf eintragen.

nameserver 195.3.96.67
nameserver 195.3.96.68

Dies sind die AON DNS-Server, andere tuns genauso.

Nun, jetzt dürfte einem fröhlichem herumsurfen mit NetBSD nichts mehr im Wege stehn :) Oder war da noch etwas? Ach ja, wie lange waren wir denn online und wieviel haben wir gesaugt? Diese Aufgabe lässt sich mit Hilfe der Logfiles und awk lösen. Als Hauptteil dient hier das Script /etc/ppp/pppcnt.sh:

#!/bin/sh
(cat /var/log/messages && zcat /var/log/messages.*) | awk '
BEGIN {
if (ARGV[1]=="") print "You may change the unit with passing the time and byte parameters. Example:\n# sh pppcount.sh time=h byte=kb\n"
byte="b"
time="m"
}
/pppd\[[0-9]*\]: Sent/ {
a+=$10
b+=$7
}
/pppd\[[0-9]*\]: Connect time/ {
c+=$8
}
END {
div1=1
tm1=1
if (byte=="b") div1=1
if (byte=="kb") div1=1024
if (byte=="mb") div1=1024*1024
if (time=="m") tm1=1
if (time=="h") tm1=60
if (time=="d") tm1=60*24
if (time != "m" && time != "h" && time != "d") {
print "Warning! Unknown time unit. Defaulting to minutes."
time="m"
}
if (byte != "b" && byte != "kb" && byte != "mb") {
print "Warning! Unknown byte unit. Defaulting to bytes."
byte="b"
}
print "Connect time: " c/tm1 " " time
print a/div1 " " byte " Recieved"
print b/div1 " " byte " Sent"
print (a+b)/div1 " " byte " Total"
}
' $1 $2

Der erste Abschnitt holt sich aus dem syslog die Zeilen, die von pppd stammen und Sent enthalten, darin steht nämlich wieviele Bytes in der Verbindung übertragen wurden. Der 7. und der 10. Teil der Zeile enthält die Anzahl der gesendeten bzw. empfangenen Bytes. Diese werden zu den Variablen a und b addiert.
Der zweite Teil macht das selbe wie der erste, nur mit der Verbindungszeit. Im END-Block werden dann die Ergebnisse ausgegeben, die Bytes werden noch auf Megabytes umgerechnet.

Aufgerufen wird das ganze dann mit:

cd /var/log /etc/ppp/pppcnt.sh time=h byte=mb

Die Einheiten time und byte können angepasst werden, Stunden und Megabyte sind aber die gebräuchlichsten Einheiten.

Bei mir sieht das zum Zeitpunkt des Schreibens so aus:

Connect time: 30.667 h
110.949 mb Recieved
7.54659 mb Sent
118.496 mb Total

Da es bei bestimmten Providern, ohne jetzt Namen zu nennen wollen, besonders häufig zu Verbindungsabbrüchen kommt, ist es unangenehm, ständig manuell pppd zu starten. Abhilfe schafft ein kleines Skript namens /etc/ppp/ppp_loop.sh:

#!/bin/sh
pppd call $1
/etc/ppp/ppp_loop.sh &

Aufgerufen wird das Skript mit dem Providernamen als Paramter:

/etc/ppp/ppp_loop.sh aon
Sobald pppd beendet wird (aus welchem Grund auch immer), startet eine neue Instanz des Skripts, gleichzeitig wird die alte beendet. Dadurch läuft das ganze immer nur einmal gleichzeitig.

Beide Skripts können von unserer Downloadseite heruntergeladen werden.

Copyright ©2000 Philipp Huber uebs@gmx.at
BSD Usergroup Austria