PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dial-In-Server



Alpha
05.10.99, 22:44
Hallo,
ich möchte gerne unter SuSE 6.1 und mit ISDN einen Dial-In-Server realisieren. DIe Howtos die ich gelesen habe, sagen alle was anderes.
Hat jemand von euch sowas schon mal hinbekommen oder hat jemand Ideen? Wie kann ich mit einer ISDN-Karte einen B-Kanal für die Verbindung zum ISP und den anderen zum Einwählen nutzen? Ich habe gehört, und kann es nur bestätigen, dass die YaST-Lösung so nicht klappt. Welche Dateien muss ich anpassen und wie?

Danke,
Andreas

------------------

krueckel
06.10.99, 07:48
Ich denke du brauchst dazu sowieso zwei isdn-modems.

Dial in und callback ist mit mgetty egal mit welchem modem in der regel kein problem sowol mit analog als auch mit isdn modems. Meine erfahrung bezihen sich jedoch nur auf externe modems, sollte aber weitgehend auch auf modem karten sovern von linux unterstützt ebenfalls zutreffen.
Im volgenden ist meine beschreibung des dial-in und callback servers den ich in meiner Firma unter linux realisiert habe angeführt.

Den abschnitt über die Digiboard Xeve Schnittstellenkarten kannst du, glaube ich ignoriern (interresiert diech jedoch vielleicht).


Der Linux RASSERVER.

1. Die Hardware

Im Rasserver sind zwei Digiboard Xeve 8.fach Schnittstellenkraten installiert. Diese Stellen Hardwareseitige die 16. com Devices zur Verfügung.

Ab dem Linux kernel 2.2.x wird die Digiboard Xeve Schnittstellenkarten auch als Modul unterstützt, dies ist notwendig da dieser Treiber als built-in nur eine Schnittstellenkarte unterstützt.

Um die Schnittstellenkraten mittels des Kernelmoduls zu Initialisieren und zu Konfigurieren müssen folgende Zeilen in die Datei /etc/conf.modules eingefügt werden.

options pcxx io=0x100,0x110 numports=8,8

alias char-major-22 pcxx
alias char-major-23 pcxx


Desweiteren sind die folgenden Zeilen im Verzeichnis /sbin/init.d/boot.d unter dem Dateiname S00_INSTALL_DIGIBOARD abzuspeichern.

MODULES_DIR=/lib/modules/`uname -r`

if test -f $MODULES_DIR/misc/pcxx.o ; then
ECHO_RETURN=$rc_done_up
echo Loading pcxx module
modprobe $MODULES_DIR/misc/pcxx.o | | ECHO_RETURN=$rc_failed_up
echo -e "$ECHO_RETURN"
fi

Diese Zeilen dienen mehr der Kosmetik, da beim erstmaligen Initialisieren der Modems durch mgetty der Treiber erst durch den Kernel geladen wird und dieser jedoch einige zeit benötigt die Digiboard Xeve Schnittstellenkraten zu Initialisieren, bekommt mgetty ein Timeout und schreibt eine Fehlermeldung nach STDOUT. In weiterer folge sind die Schnittstellenkarten Initialisieren und mgetty kann auf die Modems erfolgreich zugreifen. Um eben diese Fehlermeldung zu verhindern wird das betreffende Modul vorab geladen.


Um das IP-Forwarding zu erlauben ist es notwendig dies im Kernel 2.2.x händisch einzuschalten. Hierzu muß im Kernel das PROC-Filesystem enthalten sein, um das IP-Forwading zu aktivieren setzt man auf der Shell „echo „1" > /proc/sys/net/ipv4/ip_forward" ab. Ab Version SuSE 6.0 kann dies im YAST unter Administration des Systems -> Konfigurationsdatei verändern -> IP_FORWARD erledigt werden, indem man den Derzeitigen Wert von no auf yes setzt.



2. Der Dialoutserver

Der Dialautserver besteht aus 3. Teilen

a. Die Perlscripts für die einzelnen Modempool's im Verzeichnis /usr/sbin
b. Einträge für die einzelnen Perlscripts in die Datei /etc/inetd.conf
c. Einträge für die einzelnen Perlscripts in die Datei /etc/services

I. Die Strucktur des Perlscripts modemd

#!/usr/bin/perl
@portmodems = (0,8);
$lock = "/var/lock";
$laenge = @portmodems;
$aktuell = 0;

while ($laenge > $aktuell) {
until (-e "$lock/LCK..ttyD$portmodems[$aktuell]") {
select((select(STDOUT), $| = 1) [$[]);
select((select(STDIN), $| = 1) [$[]);
$ausfueren = "cu -s 115200 -eo -l /dev/ttyD$portmodems[$aktuell]";
exec $ausfueren;
die '$0: Cant exec cu: $!\n';
}
$aktuell += 1;
}

Dieses Script stellt die Verbindung zwischen einem anfragen Client und einem Modem des Servers her. Die Modem befinden sich auf den Deviceschnittstellen /dev/ttyD0 bis /dev/ttyD15, diese zeigen Hardwareseitig auf die zwei Digiboard Xeve 8.fach Schnitstellenkarten.

Die dem Modem-Pool angehörenden Modems werden in einem Array definiert:
@portmodems = (0,8); ( Für jeden Pool ist ein eigenes Perlscript (siehe oben) notwendig). In der Klammer werden nur die Devicenummern (/dev/ttyDx) der zu benutzenden Modems in einer beliebigen reihenfolge durch ein komma getrennt eingetragen. Das Perlscript liest die Anzahl der Felder des Arrays aus ($laenge = @portmodems http://www.linuxforen.de/ubb/wink.gif und ermittelt in einer while schleife das erste freie Modem, indem es nach dementsprechenden locks im Verzeichnis /var/lock scant. Wurde ein freies Modem gefunden wird mittels des zwei select Statements die Clientsoftware mit dem Modem verbünden und mit dem Programm cu (Bestandteil des UCCP Pakets) das entsprechende Device initialisiert. Vom Programm cu wird im Verzeichnis /var/lock eine Lockdatei angelegt und das Modem hiermit gesperrt.

II. Der Eintrag in der Datei /etc/inetd.conf

In der Datei inetd.conf muß für jeden Modempool die volgende Zeile sinngemäß eingefügt werden:

modemd stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/modemd

Unter sinngemäß ist zu verstehen, das die Strings modemd jeweils an den Modem-Pool-Dateiname des Perlscripts im Verzeichnis /usr/sbin anzupassen ist.

III.Der Eintrag in der Datei /etc/services

In der Datei services ist nun die Portnummer unter dem der Modem-Pool zu erreichen ist zu definieren.

Die folgende Zeile ist sinngemäß einzufügen:

modemd 2000/tcp modemd

Unter sinngemäß ist zu verstehen, das die Strings modemd jeweils an den Modem-Pool-Dateiname des Perlscripts im Verzeichnis /usr/sbin anzupassen ist.
Des weiteren ist zu achten, das die vorgesehene Portnummer nicht durch einen anderen Netzwerk Service Dienst belegt wird.

Im Anschluß ist die PID-Nummer des Superdämon inetd mittels des Befehl ps x (auf der Konsole) zu ermitteln und unter Verwendung dieser PID-Nummer wird nun der Superdämon inetd mittels des Befehl kill -HUP PID veranlaßt sein Konfigurations File /etc/inetd.conf neu einzulesen.

1. Der Dialinserver und Callbackserver

Die Dialinserver Komponente wird realisiert durch mgetty.
Die Callbackserver Komponente wird realisiert durch callback das in den Sourcen von mgetty enthalten ist.

Um zwischen normalen Digitalen Modems und ISDN Modems unterscheiden zu können, wurden zwei voneinander unabhängige mgetty's am Modemserver installiert. Hierzu wurde die Sourcen von mgetty in zwei unabhängige Verzeichnisse entpackt. Eines für das mgetty welches die Digitalen Modems versorgt und eins für das mgetty welches die ISDN Modems versorgt.

Im mgetty Verzeichnis für Digitale Modems:

Bei der mgetty Version für Digitalen Modems wurde in der Datei makefile folgende Variablen geändert:

CONFDIR=/etc/mgetty+sendfax

CFLAGS=-O2 -Wall -pipe -DAUTO_PPP

und im Anschluß mit make und make install Compiliert und installiert. Der Parameter -DAUTO_PPP dient für die Automatische Erkennung des Aufbaus einer PPP-Verbung durch den Client. Das Callbackprogram muß händisch (Unterverzeichnis von mgetty Sourcen) vom Verzeichnis ./callback nach /usr/sbin/callback kopiert werden (cp ./callback/callback /usr/sbin)

Im mgetty Verzeichnis für ISDN Modems:

Bei der mgetty Version die die ISDN Modems zu bedienen hat wurde in der Datei makfile folgende Variablen angepaßt:

LIBDIR=$(prefix)/lib/mgetty+sendfax_isdn

CONFDIR=/etc/mgetty+sendfax_isdn

CFLAGS=-O2 -Wall -pipe -DAUTO_PPP

und im Anschluß mit make Compiliert zu werden. Der Parameter -DAUTO_PPP dient für die Automatische Erkennung des Aufbaus einer PPP-Verbung durch den Client. Im Anschluß werden die Programm mgetty, ./callback/callback, newslock und sendfax um die Endung _isdn erweitert und nach /usr/sbin kopiert.

Zur Konfiguration von mgetty befinden sich im Verzeichnis /etc das Unterverzeichnis mgetty+sendfax. Um für mgetty_isdn ebenfalls ein Konfigurationsverzeichnis zu haben wird das Unterverzeichnis mgetty+sendfax nach mgetty+sendfax_isdn rekursive kopiert (cp mgetty+sendfax mgetty+sendfax_isdn -recursiev).

Im Verzeichnis /etc/mgetty+senfax:

Im File login.config muß in der Zeile

# /AutoPPP/ - - /usr/sbin/pppd auth login +chap +pap modem kdebug 0 debug

die Raute(#) entfernt werden, um eine ppp Verbindung automatisch erkennen zu lassen.

Desweiteren muß für die callback Funktion folgende Zeile,

digital - - /usr/sbin/callback

vor der Zeile

* - - /bin/login @

eingefügt werden.

Im File mgetty.config werden folgende Zeilen eingefügt

# ----- global section -----
#
# In this section, you put the global defaults, per-port stuff is below

# set the global debug level to "5" (which is quite verbose)
debug 5

# which fax number to transmit to the receiving station
#fax-id +31 50 363 6686

# access the modem(s) with 38400 bps
speed 115200

# the /dev/tty-device is owned by uucp.uucp and mode "rw-rw-r--" (664)
# Following the manual, I use the default (660)
port-owner uucp
port-group uucp
#port-mode 0660

# incoming faxes are owned by "root.uucp" and mode "rw-r-----" (640)
# I use the default (640)
#fax-owner root
#fax-group uucp
#fax-mode 0640

port ttyD0
rings 1
login-prompt This is modem port \L of @\r\n\nPlease login:\040
# init-chat "" ATZ OK
notify root
modem-type cls2.0
switchbd 115200

Wobei der Abschnitt der mit port ttyDx beginnt für jedes Device zu wiederholen ist an welchem ein Digitales Modem hängt
z.B. für ttyD9:

port ttyD9
rings 1
login-prompt This is modem port \L of @\r\n\nPlease login:\040
# init-chat "" ATZ OK
notify root
modem-type cls2.0
switchbd 115200

Im File callback.config ist folgendes Enthalten:

#
# this is a very much undocumented sample file for "callback.config".
#
# it's only good to show what options exist. See the source for docs!
#
dialout-devices ttyD0:ttyD1:ttyD8:ttyD9
retry-time 30
max-time 90
debug 9
dial-prefix ATX3D

Nach dem String dialout-devices sind jene ttyDx anzugeben welche als callback modems dienen dürfen. Die Reihenfolge ist auch hier beliebig. Die einzelnen devices werden durch „:" getrennt.

Im Verzeichnis /etc/mgetty+senfax_isdn:

Im File login.config muß in der Zeile

# /AutoPPP/ - - /usr/sbin/pppd auth login +chap +pap modem kdebug 0 debug

die Raute(#) entfernt werden, um eine ppp Verbindung automatisch erkennen zu lassen.

Desweiteren muß für die callback Funktion folgende Zeile,

isdn - - /usr/sbin/callback_isdn

vor der Zeile

* - - /bin/login @

eingefügt werden.

Im File mgetty.config werden folgende Zeilen eingefügt

# ----- global section -----
#
# In this section, you put the global defaults, per-port stuff is below

# set the global debug level to "5" (which is quite verbose)
debug 5

# which fax number to transmit to the receiving station
#fax-id +31 50 363 6686

# access the modem(s) with 38400 bps
speed 115200

# the /dev/tty-device is owned by uucp.uucp and mode "rw-rw-r--" (664)
# Following the manual, I use the default (660)
port-owner uucp
port-group uucp
#port-mode 0660

# incoming faxes are owned by "root.uucp" and mode "rw-r-----" (640)
# I use the default (640)
#fax-owner root
#fax-group uucp
#fax-mode 0640

port ttyD6
rings 1
login-prompt This is modem port \L of @\r\n\nPlease login:\040
# init-chat "" ATZ OK
notify root
modem-type cls2.0
switchbd 115200

Wobei der Abschnitt der mit port ttyDx beginnt für jedes Device zu wiederholen ist an welchem ein Digitales Modem hängt
z.B. für ttyD15:

port ttyD15
rings 1
login-prompt This is modem port \L of @\r\n\nPlease login:\040
# init-chat "" ATZ OK
notify root
modem-type cls2.0
switchbd 115200

Im File callback.config ist folgendes Enthalten:

#
# this is a very much undocumented sample file for "callback.config".
#
# it's only good to show what options exist. See the source for docs!
#
dialout-devices ttyD6:ttyD7:ttyD14:ttyD15
retry-time 30
max-time 90
debug 9
dial-prefix ATD

Nach dem String dialout-devices sind jene ttyDx anzugeben welche als callback modems dienen dürfen. Die Reihenfolge ist auch hier beliebig. Die einzelnen devices werden durch „:" getrennt.

Zum Schluß wird noch ein eintrag für jedes Modem im File /etc/inittab benötigt

s0:23:respawn:/usr/sbin/mgetty ttyD0
s1:23:respawn:/usr/sbin/mgetty ttyD1
s6:23:respawn:/usr/sbin/mgetty_isdn ttyD6
s7:23:respawn:/usr/sbin/mgetty_isdn ttyD7

Der String vor dem ersten „:" ist freiwählbar, es folgen dann die Runlevels in denen mgetty aktiv sein soll, respawn sorgt dafür das das Programm neu gestartet wird wenn es sich schließt oder abgebrochen wird. Zuletzt das eigentlich auzuführende Programm mit Parameter

4.Die PPP-Verbindung für Dialin und Caullback

Im Unterverzechnis pppd das Script ./configure ausführern und im Sourcen-Verzeichnis ppp Sourcen muß im File Makefile der Variable CFLAGS noch folgenden Parameter hinzugefügt werden:

-USE_CRYPT -DCHAMPS -DMSLANMAN

Mit einem anschließenden make und make install wird der pppd Damon compiliert und installiert.

Die Konfigurations Files befinden sich nun in /etc/ppp

Das File chap-secrets:

Dieses File dient der Authentivizierung für das chap Protokoll wie es Windows-Rechner in der Regel verwenden.

# Secrets for authentication using CHAP
# client server secret IP addresses
Username * Passord *

In diesem File werden die User mit ihren Passwörten angelegt.

Dieses File sollte unbedingt nur vom Administrator lesbar sein, da die Passwörter in Klartext enthalten sind.

Das File pap-secrets:

Diese File dient der PAP Authentivizierung. Wird bei uns nicht verwendet und kann Ignoriert werden. Dieses File sollte jedoch trotzdem unbedingt nur vom Administrator lesbar sein, da auch hier die Passwörter in Klartext enthalten sind.

Das File ppplogin:

#!/bin/sh
#/etc/ppp/ppplogin
# PPP login script
mesg n
stty -echo
exec /usr/sbin/pppd -detach modem proxyarp crtscts

Das File options:

Im File options sind Globale Parameter für den client enthalten

idle 900
ms-lanman
ms-dns 10.26.110.81
# ms-wins 10.26.110.81
domain visa.intranet.at
proxyarp
silent
-detach
auth
+chap
modem
crtscts
lock

Dieses File muß in der Regel nicht geändert werden.

Die Files options.ttyDx dienen der Parametrisierung der einzelnen devices. Bei uns enthalten sie nur die dem Devices zugewiesene IP-Adresse.

:10.26.109.236

Vor dem „:" würde im Normalfall die IP-Adresse der Serverseite stehen, bei uns wird allerdings die IP-Adresse der Server-Netwerkkarte übernommen.

Um das ppp-compress zu ermöglichen müssen noch folgende Zeilen in die Datei /etc/conf.modules eingefügt werden.

alias ppp-compress-21 bsd_comp
alias ppp-compress-26 ppp_deflate

Dies ist auch notwendig wenn man die Original RPM-Pakete bis SuSE 6.1 verwendet.


Verwendetet Programm Versionen.

SuSE 6.0
kernel 2.2.5
mgetty 1.1.20-Jan17
ppp 2.3.7


Ich hoffe ich konnte die helfen und habe mit dieser kurzen anleitung deine frage beantworten können.

mfg.
von Oliver Krückel aus Österrich

Alpha
06.10.99, 17:28
=:-O

Äh, vielen Dank für deine Mühe. In meinem Netzwerk-Handbuch wird dies auch als eine Möglichkeit beschrieben. Es gibt jedoch die, laut Handbuch, wesentlich einfachere Methode mit synchronem PPP (PPP over ISDN). Dies liegt bei ISDN-Karten ja auch wesentlich näher, da wohl auf die Modememulation komplett verzichtet wird, was sich natürlich auch positiv auf die Produktivität auswirken müßte.
Kann mir dazu jemand Infos geben???

Danke,
Alpha

PS: Tut mir leid für meine missverständliche Fragestellung. :-)

Alpha
31.10.99, 11:49
Ich hab es jetzt geschafft, dass ein Windows-PC meinen Server anrufen kann und eine Verbindung hergestellt wird. Der Windows-PC bleibt jedoch bei der Passwortüberprüfung stecken. Also läuft bei mir wahrscheinlich was bei der Anmeldung falsch.

Kann mir jemand sagen, wie ich Benutzer anlegen muss, wo ich die Authorisierungsmethode einstellen kann und wie ich dann eine Verbindung zum Internet route? Eine Beispiel-/etc/ppp/options.ippp0
wäre sicherlich sehr hilfreich.

Danke für eure Mühe,

Alpha

------------------

pitu
31.10.99, 15:24
Also, eine ganz normale ISDN-Verbindung mit YaST einrichten.

Eventuell "erlaubte Telefonnummern eintragen.

Also Beispiel Sind hier genannt:

Local IP 192.168.1.1
PtP IP 192.168.1.2

(Nur ein Rechner auf diesem Device gleichzeitig, der Client holt sich die Adresse ab)

Die Datei /etc/ppp/options.<device> editieren

[...]
# The IP addresses: <local>:<remote>
# just "0.0.0.0:" or nothing for dynamic IP
192.168.1.1:192.168.1.2
[...]# If this machine is a server, force authentication by uncommenting one
# of the following. However, if this machine is a client, doing this will
# prevent a succesful connection! (message "peer refused to authenticate").
# So, only uncomment on a server.
# "+pap" / "+chap" NUR AKTIVIEREN, WENN DIES EIN SERVER IST!!!
+pap
#+chap
[...]


+pap aktivieren (chap ist etwas schwieriger zu handeln)

Fertig.

thorsten


------------------
Thorsten Wandersmann
SuSE GmbH, Nuernberg

Matrix
01.11.99, 00:24
Hallo,

schau mal unter http://www.mnd.fh-wiesbaden.de/~dreymann/linux nach. Den Benutzer hab ich einfach mit Yast eigerichtet, bei "Servertypen" in der Windows DFue-Netzwerkeinstellung ist nur "Am Netzwerk anmelden" und "TCP/IP" angewaehlt. In der /etc/ppp/options.ippp0 wird nur der Eintrag "proxyarp" und "+PAP" gemacht. Die IP für den Einwahlserver- und client wird ebenfalls vorgegeben. Aber das steht alles auf der obigen Site gut beschrieben...

Unn tschuess...

-----
Oliver

[Diese Nachricht wurde geändert von Matrix (am 31 Oktober 1999).]

Alpha
03.11.99, 16:01
Ich habe jetzt PAP aktiviert, aber eine Anmeldung ist immer noch nicht möglich. Wenn ich mich als Benutzer xyz einwählen möchte, muss ich doch in der /etc/passwd als xyz stehen, oder auch sonst noch irgendwo? Muss ich vielleicht die pap-secrets anpassen oder in der options.ippp0 user = xyz eintragen?

Danke für eure Hilfe,

Alpha

------------------

Matrix
03.11.99, 18:10
Hallo,

ich habe den Benutzer einfach mit Yast angelegt, das wars. Was bekommst du für eine Fehlermeldung?

------
Oliver

pitu
03.11.99, 21:39
Die /etc/passwd hat nichts mit dem ppp-login zu tun.

Richte einfach in der ISDN-Maske von YaST eins ein, daß Dir gefällt, mit password daß
Dir gefällt. Dieser Benutzername und dieses Password werden bei der einwhl verlangt.

thorsten

------------------
Thorsten Wandersmann
SuSE GmbH, Nuernberg