Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Dial-In (Modem)

[ Dial-In (Modem) ] Dial-In (ISDN) ] CAPI ] Dial-Out/In (CAPI) ] CapiSuite ] Fax (Modem) HylaFAX ] Fax (ISDN) HylaFAX ]


Auch in der Zeit mit schnellen Datenverbindungen, wie z.B. DSL, kann es manchmal sinnvoll sein, am Linux-System, ein analoges Modem als 'Dial-In'-Zugang zu verwenden. Bezogen auf die Microsoft-Welt, kann dieses mit RAS (Remote Access Services) verglichen werden. Gründe, die für einen analogen 'Dial-In'-Server (Einwahl-Server) sprechen sind:

  • Autonome Linux-Systeme, die z.B. nur Steuerungsaufgaben wahrnehmen und über keinen Netzzugang verfügen, können einfach mit einen 'Dial-In'-Zugang aus der Ferne betreut werden.
  • Zumeist ist eine analoge Telefonleitung meist einfacher zu realisieren und für reine Fernbetreuungsaufgaben ausreichend.
  • Bei 'Dial-In'-Rechnern die sich in einen lokalen Netzwerk befinden und so mit dem Internet verbunden sind, kann der 'Dial-In'-Zugang als Einwahlmöglichkeit für Fernbetreuung und zur Internet-Nutzung verwendet werden.
    Notebook-Nutzer können so, z.B. aus der Ferne mittels des DFÜ-Netzwerks unter Windows und dem meist vorhandenen internen analogen Modem des Notebooks, sich wie bei einen öffentlichen Provider anmelden.
  • Es kann durch Wahl des entsprechenden Protokolls eine eigene Zugangsmöglichkeit für Handys oder PDAs geschaffen werden. Dieser Zugang ist meist günstiger, als die von Mobilfunkanbietern. Ist auf dem 'Dial-In'-Server noch ein WEB-Server, so kann leicht ein eigener WAP-Server aufgebaut werden.

Auf der folgenden Seite wird eine Beispiel-Konfiguration eines PPP (Point-to-Point Protocol) 'Dial-In'-Servers mit analog-Modem unter Debian-Linux vorgestellt. Dabei kommen die Programme 'ppp' und 'mgetty' zur Anwendung. 'mgetty' ('mgetty' = modem getty; getty = get teletype) ist ein Programm, welches für Einwähl-Verbindungen entworfen wurde, es ähnelt dem 'getty'-Programm, welches z.B. lokale Terminals verbindet. Bei der Einwahl startet das Programm 'mgetty' den 'ppp'-Dämon, der dann die entsprechenden Parameter einließt, eine Authentifizierung vornimmt und die Verbindung herstellt. Als Authentifizierungs-Protokoll kommen 'PAP' (Password Authentication Protocol) oder 'CHAP' (Challenge Handshake Authentication Protocol) in Frage. Im folgenden Beispiel kommt 'PAP' zur Anwendung, welches für PPP typisch ist.

Die folgende Skizze zeigt schematisch die Kette eines analogen Einwahl-Servers:

Im rechten Bereich befindet sich der Einwahl-Server, ausgestattet mit einen analogen Modem, welches sich typischerweise an der seriellen Schnittstelle ('ttyS0') befindet. Weiterhin besitzt der Einwahl-Server eine normale Netzwerkkarte ('eth0'), über der er z.B. mit dem Internet-Router oder nachfolgenden lokalen Netzwerk verbunden ist. Sofern 'forwarding' (siehe unten) auf dem Server aktiviert ist, können Clients des 'Dial-In'-Servers auf das nachfolgende Netzwerk zugreifen.
Der linke Bereich stellt den Client dar, dieses kann z.B. ein Windows-System sein, welches ebenfalls über ein analoges Modem an der seriellen Schnittstelle (COM1) verfügt und sich so auf den 'Dial-In'-Server einwählen kann.
Damit die folgende Konfiguration besser nachvollzogen werden kann, sind die IP-Adressen jedes Interfaces, bezogen auf das folgende Beispiel, mit angegeben.

Installation

Wie schon erwähnt, werden für den Einwahl-Server elementar die Programm-Pakete 'ppp' und 'mgetty' benutzt, beide Programme müssen auf dem Server installiert sein. Bei der Grundinstallation des Debian-Systems ist 'ppp' im allgemeinen schon installiert, sodass nur noch 'mgetty' mittels 'apt-get install mgetty' nachinstalliert werden muss. Alle Abhängigkeiten sollten bei der Installation aufgelöst werden.

Damit 'mgetty' ankommende Rufe erkennen und annehmen kann, muss das Programm gestartet werden, dieses geschieht jedoch nicht direkt, sondern durch den 'Init'-Dämon. Dazu ist 'mgetty' in der Datei '/etc/inittab' einzutragen:

Auszug aus: /etc/inittab (Einfügen z.B. am Ende der Datei)

...
# modem getty for dial-in
S0:23:respawn:/sbin/mgetty -s 57600 ttyS0

'S0' ist das 'tty'-Device, das durch diesen Eintrag angesprochen werden soll; danach ist der Runlevel, in diesem Fall '23', in denen der Eintrag gestartet wird anzugeben. Durch 'respawn' wird ein Neustart des Programms veranlasst, nachdem die Schnittstelle wieder freigegeben wird. Der letzte Teil enthält das Programmaufruf mit den entsprechenden Parametern; wobei '-s 57600' die Geschwindigkeit der Schnittstelle festlegt. 'ttyS0' ist die Schnittstelle selbst, in diesem Fall die Erste (COM1). Nach Änderungen in der 'inittab' müssen diese durch das Kommando 'init q' neu eingelesen werden.

Die Konfigurationsdateien für 'mgetty' befinden sich im Verzeichnis '/etc/mgetty', das sind die Dateien 'mgetty.config', 'dialin.config' und 'login.config'. Eigentlich sind alle Dateien für den Modem-Betrieb schon vorbereitet und können unverändert übernommen werden. Bei der 'login.config' sollte geprüft werden, ob die Option '/AutoPPP/' aktiviert ist ('#'-Kommentarzeichen muss entfernt sein; siehe gelbe Markierung):

Auszug aus: /etc/mgetty/login.config (ca. Zeile 60)

...
#
# Automatic PPP startup on receipt of LCP configure request (AutoPPP).
# mgetty has to be compiled with "-DAUTO_PPP" for this to work.
# Warning: Case is significant, AUTOPPP or autoppp won't work!
# Consult the "pppd" man page to find pppd options that work for you.
#
# NOTE: for *some* users, the "-detach" option has been necessary, for
# others, not at all. If your pppd doesn't die after hangup, try it.
#
# NOTE2: "debug" creates lots of debugging info. LOOK AT IT if things
# do not work out of the box, most likely it's a ppp problem!
#
# NOTE3: "man pppd" is your friend!
#
# NOTE4: max. 9 arguments allowed.
#
/AutoPPP/ -    a_ppp   /usr/sbin/pppd auth -chap +pap login debug

# alternativ with config-file: 'dialin.ttyS0'
# /AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/dialin.ttyS0
...

Mit der Option '/AutoPPP/' wird der PPP-Dämon mit Parametern aufgerufen. Für den weiteren Ablauf ist der PPP-Dämon dann verantwortlich. Der PPP-Dämon hat neben der Parameterübergabe noch weitere Stellen, woher er seine Konfigurationsparameter bezieht. Das ist zunächst die globale die Konfigurationsdatei '/etc/ppp/options' und eine weitere z.B. 'options.ttyS0' die speziell für die gemeinte Schnittstelle wirkt. Die 'options.ttyS0' muss gegebenenfalls separat erzeugt werden, d.h. ist das Modem an der zweiten Schnittstelle angeschlossen muss die 'options.ttyS1' erstellt werden. Hier eine Beispiel einer Datei 'options.ttyS0' für den 'Dial-In'-Server:

/etc/ppp/options.ttyS0

192.168.10.102:192.168.10.101
netmask 255.255.255.255
ms-dns 192.168.10.10
ms-dns 192.168.10.20
ms-wins 192.168.10.10
auth
login
-chap
+pap
proxyarp

In der ersten Zeile werden die beiden IP-Adressen der Endpunkte festgelegt. Die IP-Adresse vor dem Doppelpunkt ist die lokale Adresse (d.h. serverseitige), die Adresse hinter dem Doppelpunkt wird der Gegenstelle zugewiesen. Alle weiteren Parameter sind quasi selbsterklärend bzw. können der Dokumentation von PPP entnommen werden.

Da eine PAP-Authentifizierung stattfinden soll, müssen die Login-Namen und Passwörter in der Datei '/etc/ppp/pap-secrets' eingetragen werden:

Auszug aus: /etc/ppp/pap-secrets (ca. Zeile 22)

...
# INBOUND connections

# Every regular user can use PPP and has to use passwords from /etc/passwd
# *     hostname    ""      *
# *     *           ""      *
dialin  *           secret  *

# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
# other accounts that should not be able to use pppd!
guest   hostname    "*"     -
master  hostname    "*"     -
root    hostname    "*"     -
support hostname    "*"     -
stats   hostname    "*"     -
...

Die ersten beiden Felder enthalten einen Benutzer- und einen Servernamen, im dritten steht das Passwort. Im vierten Feld kann die IP-Adressen angeben, die für einen bestimmten Host erlaubt sind.
In diesem Beispiel kann der Benutzer: '
dialin' mit dem Kennwort: 'secret' auf den 'Dial-In'-Server zugreifen. Dabei muss der Benutzer 'dialin' auch als Systembenutzer vorhanden sein.
Sollen alle Benutzer auf dem System einen 'Dial-In'-Zugang mit Ihren Login-Daten erhalten, kommt der Eintrag (grüne Markierung) in Frage.
Auch ist es möglich und sinnvoll bestimmte Benutzer von der 'Dial-In'-Möglichkeit auszuschließen, wie z.B. den '
root' (unterer Bereich) des Systems.
Weiterhin ist darauf zu achten, dass die 'Dial-In'-Benutzer, auf dem System als normaler Benutzer vorhanden sind.

Nach Abschluss der Konfiguration sollte das System neu gestartet werden, damit alle Änderungen wirksam werden. Eine Einwählen von einen entfernten Rechner sollte nun möglich sein.

IP-Forwarding

Damit der eingewählte Client auch einen Zugriff auf weitere Rechner im Netzwerk bekommt, oder gar zum Internet, sofern der 'Dial-In'-Server über einen Internet-Zugang verfügt, ist 'IP-Forwarding' zu aktivieren. Ob 'IP-Forwarding' aktiviert ist, kann mit folgende Kommando geprüft werden:

cat /proc/sys/net/ipv4/ip_forward

Ist der Ergebinis '0' so ist 'IP-Forwarding' deaktiviert, bzw '1' ist 'IP-Forwarding' aktiviert. Mit folgenden Kommando kann 'IP-Forwarding' aktiviert werden:

echo "1" > /proc/sys/net/ipv4/ip_forward

Soll beim Hochlauf des Systems 'IP-Forwarding' aktiviert werden, kann dieses in einer Konfigurationsdatei festgelegt werde. Handelt es ich um eine Debian-Version kleiner 4.0 (Etch) so kann dieses in der Datei '/etc/network/options' eingetragen werden:

Auszug aus: /etc/network/options (ca. Zeile 1)

ip_forward=yes
spoofprotect=yes
syncookies=no

Wird der Parameter 'ip_forward' auf 'yes' gesetzt so wird beim Boot des Systems 'IP-Forwarding' aktiviert.

Ab der Debian-Version 4.0 ist 'ip_forwarding' in der Datei '/etc/sysctl.conf' freizuschalten:

Auszug aus: /etc/sysctl.conf (ca. Zeile 23)

..

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.conf.default.forwarding=1

# Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.default.forwarding=1

Die entsprechende Zeile ist auszukommentieren.

Anmerkungen

Ein Beispiel, wie 'Windows XP' als Client, für den 'Dial-In'-Server zu konfigurieren ist, ist unten unter 'Weitere Infos' zu finden.

Aus Sicherheitstechnischen Aspekte sei noch zu erwähnen, das dass Passwort für den PAP-Authentifizierung in Klarschrift in der Konfigurationsdatei steht und auch in Klarschrift bei der Authentifizierung übertragen wird.
Mehr Sicherheit kann bei der Authentifizierung z.B. mit Rückrufmechanismen erreicht werden, entsprechende Anleitungen lassen sich im Internet nachlesen.

Weitere Infos

Linux Modem-HOWTO http://www.linuxhaven.de/dlhp/HOWTO/DE-Modem-HOWTO.html
Linux PPP HOWTO http://www.linuxhaven.de/dlhp/HOWTO/DE-PPP-HOWTO.html
Homepage: mgetty http://mgetty.greenie.net/
Manualseiten zu: inittab man inittab
Manualseiten zu: pppd man pppd
Manualseiten zu: mgetty man mgetty
System-Dokumentation: ppp /usr/share/doc/ppp
System-Dokumentation: mgetty /usr/share/doc/mgetty
RFC: 1661 - The Point-to-Point Protocol (PPP) http://www.faqs.org/rfcs/rfc1548.html
RFC: 1661 - The Point-to-Point Protocol (PPP) http://www.faqs.org/rfcs/rfc1661.html
Beispiele von Log-Dateien beim Auf-/Aufbau der Verbindung. LOG-Files
Beispiel: Konfiguration 'Dial-In'-Zugang unter 'Windows XP' als Client 'Dial-In'-Zugang unter 'Windows XP' als Client

Home ] Nach oben ] [ Dial-In (Modem) ] Dial-In (ISDN) ] CAPI ] Dial-Out/In (CAPI) ] CapiSuite ] Fax (Modem) HylaFAX ] Fax (ISDN) HylaFAX ]

letzte Änderung: 30. Juni 2007

 

Copyright © 2004 Norbert Eusterholz