Arcor Internet-by-Call mit ISDN unter Linux

Es ist garnicht so schwer, Arcor Internet-by-Call unter Linux zu nutzen. Ich gehe jetzt davon aus, daß Du schon ISDN-Support in den Kernel eingebaut hast, andernfalls findet man auf den ISDN-Seiten von Bernhard Hailer sicherlich viele Anregungen. Auch in der isdn4linux-FAQ und im ISDN4Linux Tutorium solltest Du viele Hinweise finden, wie das System zu konfigurieren ist.

Parameter der Verbindung

Authentifizierung:
PAP
Level 2 Protokoll:
HDLC
Level 3 Protokoll:
transparent
Encapsulation:
SyncPPP

PPP-Konfiguration

Im wesentlichen wird PPP über die Datei /etc/ppp/options (bei neueren Versionen /etc/ppp/ioptions) konfiguriert. Da ich persönlich es nicht mag, daß eine einzige Datei für alle PPP-Verbindungen, also auch für die analog betriebenen, zuständig ist, ist diese Datei bei mir komplett leer und alle Optionen werden dem pppd bzw. ipppd direkt beim Aufruf mitgegeben.

Authentifizierung

Die Authentifizierung geschieht mittels PAP. Hierzu legt man die Datei /etc/ppp/pap-secrets an, die folgenden Inhalt haben sollte:
# Secrets for authentication using PAP
# client        server  secret                  IP addresses
arcor           arcor   internet                -

Sowohl Username (arcor) als auch Passwort (internet) sind für alle User identisch, hier braucht man also keine persönlichen Anpassungen vornehmen. Da die IP-Nummer dynamisch zugewiesen wird, geben wir die hier nicht an.

Nameserver

Wie beim Connect per Modem üblich, muß auch per ISDN der verwendete Nameserver in /etc/resolv.conf definiert werden:

nameserver 145.253.2.11
nameserver 145.253.2.75

Aufbau der Verbindung

Um die Verbindung aufzubauen sind einige Schritte durchzuführen, am besten in einem kleinen Shell-Skript, das man von Hand oder mit isdnbutton startet.
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# Interface erzeugen:
isdnctrl addif      ippp0

# Telefonnummern des Servers konfigurieren:
# Die zuletzt angegebene Nummer wird zuerst ausprobiert. Wenn man dort
# keinen Connect bekommt, werden die anderen Nummern verwendet.
isdnctrl addphone   ippp0 out 010700192070

# Eigene MSN (ohne Vorwahl!) dem Device zuordnen:
isdnctrl eaz        ippp0 1234567

# Nach 60 Sekunden "Funkstille" Verbindung automatisch beenden:
isdnctrl huptimeout ippp0 60

# Dafuer sorgen, dass sich niemand von unberechtigt bei uns einwaehlt:
isdnctrl secure     ippp0 on

# Protokoll definieren:
isdnctrl l2_prot    ippp0 hdlc
isdnctrl l3_prot    ippp0 trans
isdnctrl encap      ippp0 syncppp

isdnctrl dialmode   ippp0 auto

# Das Interface konfigurieren (mein.rechnername sollte der Name des
# eigenen Rechners sein, er tut nichts zur Sache, es muss also nichts
# mit arcor oder so im Namen sein):
ifconfig ippp0 mein.rechnername metric 1

# Default-Routing auf das Device setzen:
route add default ippp0

# ipppd starten:
ipppd /dev/ippp0 \
  remotename arcor    \
  user arcor   \
  ipcp-accept-local    \
  ipcp-accept-remote   \
  noipdefault          \
  -vjccomp             \
  -ac                  \
  -pc                  \
  -bsdcomp             \
  -vj                  \
  defaultroute
Wie schon oben gesagt, gebe ich dem ipppd alle Optionen direkt mit, statt sie in /etc/ppp/options (alter ipppd) bzw. /etc/ppp/ioptions (neuer ipppd) global zu definieren. Hier ist zu beachten, daß der remotename mit dem in /etc/ppp/pap-secrets angegebenen Namen übereinstimmt und daß der Username korrekt angegeben wird. Falls Probleme mit dem Handshake auftreten, empfiehlt es sich, zusätzlich noch die Option debug anzugeben, dann sollte man allerdings sehr vorsichtig mit seinen Logfiles umgehen, da dann auch das Passwort unverschlüsselt im Logfile zu sehen ist.

Weiterhin sollte man beim Testen beachten, daß der ipppd sich nicht einfach mittels

killall ipppd
beenden läßt, sondern daß ein
killall -9 ipppd
notwendig ist. Andernfalls muß man damit rechnen, daß zwei ipppd gleichzeitig laufen, von denen immer der falsche die Anfragen beantwortet und man sich wundert, warum die veränderte Konfiguration völlig ignoriert wird.

Abbau der Verbindung

Am einfachsten ist die Verbindung abzubauen, indem man wartet, bis huptimeout abgelaufen ist und isdn4linux daher automatisch "auflegt". Dabei sollte man aber bedenken, daß isdn4linux dial-on-demand unterstützt, d.h. sobald irgendein IP-Paket den Rechner über die default-Route verläßt, wird automatisch wieder eine Verbindung aufgebaut und das kann schnell ins Geld gehen.

Daher verwende ich hier ein Shell-Skript, das die Verbindung brutal abbricht:

#!/bin/sh

# Route loeschen:
/sbin/route del default

# Interface loeschen:
/sbin/ifconfig ippp0 down
/sbin/isdnctrl delif ippp0

# ipppd beenden:
/usr/sbin/killall -9 ipppd