27.4. Einwählverbindungen
Zurück | Kapitel 27. Serielle Datenübertragung | Weiter

## 27.4. Einwählverbindungen

Beigetragen von Guy Helmer.
Mit Anmerkungen von Sean Kelly.

### Warnung:

Mit FreeBSD 8.0 wurden die Gerätedateien für serielle Ports von `/dev/ttyd`N`` in `/dev/ttyu`N`` umbenannt. Setzen Sie noch FreeBSD 7.X ein, müssen Sie die Befehle in den folgenden Abschnitten entsprechend anpassen.

Das Einrichten von Einwählverbindungen ähnelt dem Anschließen von Terminals, nur dass Sie anstelle eines Terminals ein Modem verwenden.

### 27.4.1. Externe und interne Modems

Externe Modems sind für Einwählverbindungen besser geeignet, da sie die Konfiguration in nicht flüchtigem RAM speichern können. Zudem verfügen Sie über Leuchtanzeigen, die den Status wichtiger RS-232 Signale anzeigen und unter Umständen Besucher beeindrucken können.

Interne Modems verfügen normalerweise nicht über nicht flüchtiges RAM und lassen sich meist nur über DIP-Schalter konfigurieren. Selbst wenn ein internes Modem Leuchtanzeigen besitzt, sind diese meist schwer einzusehen, wenn das Modem eingebaut ist.

#### 27.4.1.1. Modems und Kabel

Mit einem externen Modem müssen Sie das richtige Kabel benutzen: Ein Standard RS-232C Kabel, bei dem die folgenden Signale miteinander verbunden sind, sollte ausreichen:

Tabelle 27.4. Signalnamen

Abkürzung | Bedeutung
--- | ---
RD | Received Data
TD | Transmitted Data
DTR | Data Terminal Ready
DSR | Data Set Ready
DCD | Data Carrier Detect (dadurch erkennt RS-232 das Signal Received Line)
SG | Signal Ground
RTS | Request to Send
CTS | Clear to Send

Ab Geschwindigkeiten von 2400 bps benötigt FreeBSD die Signale RTS und CTS für die Flusssteuerung. Das Signal CD zeigt an, ob ein Träger vorliegt, das heißt ob die Verbindung aufgebaut ist oder beendet wurde. DTR zeigt an, dass das Gerät betriebsbereit ist. Es gibt einige Kabel, bei denen nicht alle nötigen Signale verbunden sind. Wenn Sie Probleme der Art haben, dass zum Beispiel die Sitzung nicht beendet wird, obwohl die Verbindung beendet wurde, kann das an einem solchen Kabel liegen.

Wie andere UNIX® Betriebssysteme auch, benutzt FreeBSD Hardwaresignale, um festzustellen, ob ein Anruf beantwortet wurde, eine Verbindung beendet wurde, oder um die Verbindung zu schließen und das Modem zurückzusetzen. FreeBSD vermeidet es, dem Modem Kommandos zu senden, oder den Statusreport des Modems abzufragen. Falls Sie ein Benutzer von PC-basierenden Bulletin Board Systemen sind, mag Sie das verwundern.

### 27.4.2. Schnittstellenbausteine

FreeBSD unterstützt EIA RS-232C (CCITT V.24) serielle Schnittstellen, die auf den NS8250, NS16450, NS16550 oder NS16550A Bausteinen basieren. Die Bausteine der Serie 16550 verfügen über einen 16 Byte großen Puffer, der als FIFO angelegt ist. Wegen Fehler in der FIFO-Logik kann der Puffer in einem 16550 Baustein allerdings nicht genutzt werden, das heißt der Baustein muss als 16450 betrieben werden. Bei allen Bausteinen ohne Puffer und dem 16550 Baustein muss jedes Byte einzeln von dem Betriebssystem verarbeitet werden, was Fehler bei hohen Geschwindigkeiten oder großer Systemlast erzeugt. Es sollten daher nach Möglichkeit serielle Schnittstellen, die auf 16550A Bausteinen basieren, eingesetzt werden.

### 27.4.3. Überblick

Wie bei Terminals auch, startet `init` für jede serielle Schnittstelle, die eine Einwählverbindung zur Verfügung stellt, einen `getty` Prozess. Wenn das Modem beispielsweise an `/dev/ttyu0` angeschlossen ist, sollte in der Ausgabe von `ps ax` eine Zeile wie die folgende erscheinen:

4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyu0

Wenn sich ein Benutzer einwählt und die Verbindung aufgebaut ist, zeigt das Modem dies durch das CD Signal (Carrier Detect) an. Der Kernel merkt, dass ein Signal anliegt und vollendet das Öffnen der Schnittstelle durch `getty`. Dann sendet `getty` das Anmeldeprompt mit der ersten für die Verbindung vereinbarten Geschwindigkeit und wartet auf eine Antwort. Wenn die Antwort unverständlich ist, weil zum Beispiel die Geschwindigkeit des Modems von `getty`s Geschwindigkeit abweicht, versucht `getty` die Geschwindigkeit solange anzupassen, bis es eine verständliche Antwort erhält.

`getty` führt, nachdem der Benutzer seinen Namen eingegeben hat, `/usr/bin/login` aus, welches das Passwort abfragt und danach die Shell des Benutzers startet.

### 27.4.4. Konfigurationsdateien

Drei Konfigurationsdateien in `/etc` steuern, ob eine Einwahl in Ihr FreeBSD-System möglich ist. Die erste, `/etc/gettytab`, konfiguriert den `/usr/libexec/getty` Dæmon. In `/etc/ttys` wird festgelegt, auf welchen Schnittstellen `/sbin/init` einen `getty` Prozess startet. Schließlich haben Sie in `/etc/rc.d/serial` die Möglichkeit, Schnittstellen zu initialisieren.

Es gibt zwei Ansichten darüber, wie Modems für Einwählverbindungen unter UNIX® zu konfigurieren sind. Zum einen kann die Geschwindigkeit zwischen dem Modem und dem Computer fest eingestellt werden. Sie ist damit unabhängig von der Geschwindigkeit, mit der sich der entfernte Benutzer einwählt. Dies hat den Vorteil, dass der entfernte Benutzer das Anmeldeprompt sofort bekommt. Der Nachteil bei diesem Verfahren ist, dass das System die tatsächliche Geschwindigkeit der Verbindung nicht kennt. Damit können bildschirmorientierte Programme wie Emacs ihren Bildschirmaufbau nicht an langsame Verbindungen anpassen, um die Antwortzeiten zu verbessern.

Die andere Möglichkeit besteht darin, die Geschwindigkeit der RS-232 Schnittstelle des lokalen Modems an die Geschwindigkeit des entfernten Modems anzupassen. Bei einer V.32bis (14400 bps) Verbindung kann das lokale Modem die RS-232 Schnittstelle mit 19200 bps betreiben, während bei einer Verbindung mit 2400 bps die RS-232 Schnittstelle mit 2400 bps betrieben wird. Da `getty` die Verbindungsgeschwindigkeit des Modems nicht kennt, startet es den Anmeldevorgang mit der Ausgabe von `login:` und wartet auf eine Antwort. Wenn der Benutzer der Gegenstelle nun nur unverständliche Zeichen erhält, muss er solange Enter drücken, bis das Anmeldeprompt erscheint. Solange die Geschwindigkeiten nicht übereinstimmen, sind die Antworten der Gegenstelle für `getty` ebenfalls unverständlich. In diesem Fall wechselt `getty` zur nächsten Geschwindigkeit und gibt wieder `login:` aus. In aller Regel erhält der Benutzer der Gegenstelle nach ein bis zwei Tastendrücken eine erkennbare Anmeldeaufforderung. Diese Anmeldeprozedur sieht nicht so sauber wie die Methode mit einer festen Geschwindigkeit aus, bietet dem Benutzer einer langsamen Verbindung allerdings den Vorteil, dass sich bildschirmorientierte Programme an die Geschwindigkeit anpassen können.

Im Folgenden wird die Konfiguration für beide Methoden besprochen, doch die Methode der angepassten Geschwindigkeit wird bei der Diskussion bevorzugt.

#### 27.4.4.1. `/etc/gettytab`

Mit `/etc/gettytab` wird getty(8) im Stil von termcap(5) konfiguriert. Das Format dieser Datei und die Bedeutung der Einträge wird in gettytab(5) beschrieben.

##### 27.4.4.1.1. Konfiguration für feste Geschwindigkeit

Wenn Sie die Modemgeschwindigkeit vorgeben, werden Sie in `/etc/gettytab` nichts ändern müssen.

##### 27.4.4.1.2. Konfiguration für angepasste Geschwindigkeit

In `/etc/gettytab` müssen Einträge für die Geschwindigkeiten, die Sie benutzen wollen, sein. Wenn Sie ein 2400 bps Modem besitzen, können Sie wahrscheinlich den schon vorhandenen `D2400` Eintrag benutzen.

# # Fast dialup terminals, 2400/1200/300 rotary (can start either way) # D2400|d2400|Fast-Dial-2400:\ :nx=D1200:tc=2400-baud: 3|D1200|Fast-Dial-1200:\ :nx=D300:tc=1200-baud: 5|D300|Fast-Dial-300:\ :nx=D2400:tc=300-baud:

Wenn Sie ein Modem mit einer höheren Geschwindigkeit besitzen, müssen Sie wahrscheinlich in `/etc/gettytab` weitere Einträge erstellen. Hier ist ein Beispiel, das Sie mit einem 14400 bps Modem benutzen können:

# # Additions for a V.32bis Modem # um|V300|High Speed Modem at 300,8-bit:\ :nx=V19200:tc=std.300: un|V1200|High Speed Modem at 1200,8-bit:\ :nx=V300:tc=std.1200: uo|V2400|High Speed Modem at 2400,8-bit:\ :nx=V1200:tc=std.2400: up|V9600|High Speed Modem at 9600,8-bit:\ :nx=V2400:tc=std.9600: uq|V19200|High Speed Modem at 19200,8-bit:\ :nx=V9600:tc=std.19200:

Die damit erzeugten Verbindungen verwenden 8 Bit und keine Parität.

Im obigen Beispiel startet die Geschwindigkeit bei 19200 bps (eine V.32bis Verbindung) und geht dann über 9600 bps (V.32), 400 bps, 1200 bps und 300 bps wieder zurück zu 19200 bps. Das Schlüsselwort `nx=` (next table) sorgt für das zyklische Durchlaufen der Geschwindigkeiten. Jede Zeile zieht zudem noch mit `tc=` (table continuation) die Vorgabewerte für die jeweilige Geschwindigkeit an.

Wenn Sie ein 28800 bps Modem besitzen und/oder Kompression mit einem 14400 bps Modem benutzen wollen, brauchen Sie höhere Geschwindigkeiten als 19200 bps. Das folgende Beispiel startet mit 57600 bps:

# # Additions for a V.32bis or V.34 Modem # Starting at 57600 bps # vm|VH300|Very High Speed Modem at 300,8-bit:\ :nx=VH57600:tc=std.300: vn|VH1200|Very High Speed Modem at 1200,8-bit:\ :nx=VH300:tc=std.1200: vo|VH2400|Very High Speed Modem at 2400,8-bit:\ :nx=VH1200:tc=std.2400: vp|VH9600|Very High Speed Modem at 9600,8-bit:\ :nx=VH2400:tc=std.9600: vq|VH57600|Very High Speed Modem at 57600,8-bit:\ :nx=VH9600:tc=std.57600:

### Anmerkung:

Wenn Sie eine langsame CPU oder ein stark ausgelastetes System besitzen und sich kein 16550A in Ihrem System befindet, erhalten Sie bei 57600 bps vielleicht sio Fehlermeldungen der Form „silo overflow“.

#### 27.4.4.2. `/etc/ttys`

`/etc/ttys` wurde bereits in Beispiel 27.1, „Einträge in `/etc/ttys` hinzufügen“ besprochen. Die Konfiguration für Modems ist ähnlich, allerdings braucht `getty` ein anderes Argument und es muss ein anderer Terminaltyp angegeben werden. Der Eintrag für beide Methoden (feste und angepasste Geschwindigkeit) hat die folgende Form:

ttyu0 "/usr/libexec/getty `xxx`" dialup on

Das erste Feld der obigen Zeile gibt die Gerätedatei für diesen Eintrag an – `ttyu0` bedeutet, dass `getty` mit `/dev/ttyu0` arbeitet. Das zweite Feld `"/usr/libexec/getty `xxx`"` gibt das Kommando an, das `init` für dieses Gerät startet (`xxx` wird durch einen passenden Eintrag aus `/etc/gettytab` ersetzt). Die Vorgabe für den Terminaltyp, hier `dialup`, wird im dritten Feld angegeben. Das vierte Feld, `on`, zeigt `init` an, dass die Schnittstelle aktiviert ist. Im fünften Feld könnte noch `secure` angegeben werden, um Anmeldungen von `root` zu erlauben, doch sollte das wirklich nur für physikalisch sichere Terminals, wie die Systemkonsole, aktiviert werden.

Die Vorgabe für den Terminaltyp, `dialup` im obigen Beispiel, hängt von lokalen Gegebenheiten ab. Traditionell wird `dialup` für Einwählverbindungen verwendet, so dass die Benutzer in ihren Anmeldeskripten den Terminaltyp auf ihren Terminal abstimmen können, wenn der Typ auf `dialup` gesetzt ist. Wenn Sie aber beispielsweise nur VT102 Terminals oder Emulatoren einsetzen, können Sie den Terminaltyp hier auch fest auf `vt102` setzen.

Nachdem Sie `/etc/ttys` geändert haben, müssen Sie `init` ein HUP Signal schicken, damit es die Datei wieder einliest. Sie können dazu das folgende Kommando verwenden:

`#` `kill -HUP 1`

Wenn Sie das System zum ersten Mal konfigurieren, sollten Sie dieses Kommando erst ausführen, wenn Sie Ihr Modem richtig konfiguriert und angeschlossen haben.

##### 27.4.4.2.1. Konfiguration für feste Geschwindigkeit

Das Argument von `getty` muss in diesem Fall eine feste Geschwindigkeit vorgeben. Der Eintrag für ein Modem, das fest auf 19200 bps eingestellt ist, könnte wie folgt aussehen:

ttyu0 "/usr/libexec/getty std.19200" dialup on

Wenn Ihr Modem auf eine andere Geschwindigkeit eingestellt ist, setzen Sie anstelle von `std.19200` einen passenden Eintrag der Form `std.`speed`` ein. Stellen Sie sicher, dass dies auch ein gültiger Verbindungstyp aus `/etc/gettytab` ist.

##### 27.4.4.2.2. Konfiguration für angepasste Geschwindigkeit

Das Argument von `getty` muss hier auf einen der Einträge aus `/etc/gettytab` zeigen, der zu einer Kette von Einträgen gehört, die die zu probierenden Geschwindigkeiten beschreiben. Wenn Sie dem obigen Beispiel gefolgt sind und zusätzliche Einträge in `/etc/gettytab` erzeugt haben, können Sie die folgende Zeile verwenden:

ttyu0 "/usr/libexec/getty V19200" dialup on

#### 27.4.4.3. `/etc/rc.d/serial`

Modems, die höhere Geschwindigkeiten unterstützen, zum Beispiel V.32, V.32bis und V.34 Modems, benutzen Hardware-Flusssteuerung (`RTS/CTS`). Für die entsprechenden Schnittstellen können Sie die Flusssteuerung mit `stty` in `/etc/rc.d/serial` einstellen.

Um beispielsweise die Hardware-Flusssteuerung für die Geräte zur Ein- und Auswahl der zweiten seriellen Schnittstelle (`COM2`) zu aktivieren, benutzen Sie die Dateien zur Initialisierung der entsprechenden Geräte und fügen die folgenden Zeilen in `/etc/rc.d/serial` hinzu:

# Serial port initial configuration stty -f /dev/ttyu1.init crtscts stty -f /dev/cuad1.init crtscts

### 27.4.5. Modemkonfiguration

Wenn Sie ein Modem besitzen, das seine Konfiguration in nicht flüchtigem RAM speichert, werden Sie ein Terminalprogramm wie Telix unter MS-DOS® oder `tip` unter FreeBSD benötigen, um die Parameter einzustellen. Verbinden Sie sich mit derselben Geschwindigkeit, die `getty` zuerst benutzen würde, mit dem Modem und treffen Sie folgende Einstellungen:

- DCD ist eingeschaltet, wenn das Trägersignal des entfernten Modems erkannt wird.

- Im Betrieb liegt DTR an. Bei einem Verlust von DTR legt das Modem auf und setzt sich zurück.

- CTS Flusssteuerung ist für ausgehende Daten aktiviert.

- XON/XOFF Flusssteuerung ist ausgeschaltet.

- RTS Flusssteuerung ist für eingehende Daten aktiviert.

- Keine Rückmeldungen ausgeben.

- Die Echo-Funktion ist deaktiviert.

In der Dokumentation Ihres Modems finden Sie die nötigen Befehle, die Sie absetzen müssen, und/oder nötigen DIP-Schalterstellungen, um die obigen Einstellungen zu treffen.

Für ein externes 14400 U.S. Robotics® Sportster® gelten zum Beispiel die folgenden Befehle:

ATZ AT&C1&D2&H1&I0&R2&W

Bei dieser Gelegenheit können Sie auch gleich andere Einstellungen, zum Beispiel ob Sie V42.bis und/oder MNP5 Kompression benutzen wollen, an Ihrem Modem vornehmen.

Bei einem externen 14400 U.S. Robotics® Sportster® müssen Sie auch noch einige DIP-Schalter einstellen. Die folgenden Einstellungen können Sie vielleicht als Beispiel für andere Modems verwenden:

- Schalter 1: OBEN – DTR normal

- Schalter 2: N/A (Rückmeldungen als Text/numerische Rückmeldungen)

- Schalter 3: OBEN – Keine Rückmeldungen ausgeben

- Schalter 4: UNTEN – Echo-Funktion aus

- Schalter 5: OBEN – Rufannahme aktiviert

- Schalter 6: OBEN – Carrier Detect normal

- Schalter 7: OBEN – Einstellungen aus dem NVRAM laden

- Schalter 8: N/A (Smart Mode/Dumb Mode)

Für Einwählverbindungen sollten die Rückmeldungen deaktiviert sein, da sonst `getty` dem Modem das Anmeldeprompt `login:` schickt und das Modem im Kommandomodus das Prompt wieder ausgibt (Echo-Funktion) oder eine Rückmeldung gibt. Das führt dann zu einer länglichen und fruchtlosen Kommunikation zwischen dem Modem und `getty`.

#### 27.4.5.1. Konfiguration für feste Geschwindigkeit

Die Geschwindigkeit zwischen Modem und Computer muss auf einen festen Wert eingestellt werden. Mit einem externen 14400 U.S. Robotics® Sportster® Modem setzen die folgenden Kommandos die Geschwindigkeit auf den Wert der Datenendeinrichtung fest:

ATZ AT&B1&W

#### 27.4.5.2. Konfiguration für angepasste Geschwindigkeit

In diesem Fall muss die Geschwindigkeit der seriellen Schnittstelle des Modems der eingehenden Geschwindigkeit angepasst werden. Für ein externes 14400 U.S. Robotics® Sportster® Modem erlauben die folgenden Befehle eine Anpassung der Geschwindigkeit der seriellen Schnittstelle für Verbindungen, die keine Fehlerkorrektur verwenden:

ATZ AT&B2&W

Verbindungen mit Fehlerkorrektur (V.42, MNP) verwenden die Geschwindigkeit der Datenendeinrichtung.

#### 27.4.5.3. Überprüfen der Modemkonfiguration

Die meisten Modems verfügen über Kommandos, die die Konfiguration des Modems in lesbarer Form ausgeben. Auf einem externen 14400 U.S. Robotics® Sportster® zeigt `ATI5` die Einstellungen im nicht flüchtigen RAM an. Um die wirklichen Einstellungen unter Berücksichtigung der DIP-Schalter zu sehen, benutzen Sie `ATZ` gefolgt von `ATI4`.

Wenn Sie ein anderes Modem benutzen, schauen Sie bitte in der Dokumentation Ihres Modems nach, wie Sie die Konfiguration des Modems überprüfen können.

### 27.4.6. Fehlersuche

Bei Problemen können Sie die Einwählverbindung anhand der folgenden Punkte überprüfen:

#### 27.4.6.1. Überprüfen des FreeBSD-Systems

Schließen Sie das Modem an das FreeBSD-System an und booten Sie das System. Wenn Ihr Modem über Statusindikatoren verfügt, überprüfen Sie, ob der DTR Indikator leuchtet, wenn das Anmeldeprompt erscheint. Dies zeigt an, dass das FreeBSD-System einen `getty` Prozess auf der entsprechenden Schnittstelle gestartet hat und das Modem auf einkommende Verbindungen wartet.

Wenn der DTR-Indikator nicht leuchtet, melden Sie sich an dem FreeBSD-System an und überprüfen mit `ps ax`, ob FreeBSD einen `getty`-Prozess auf der entsprechenden Schnittstelle gestartet hat. Unter den angezeigten Prozessen sollten Sie ähnliche wie die folgenden finden:

114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu0 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu1

Wenn das Modem noch keinen Anruf entgegengenommen hat und Sie stattdessen die folgende Zeile sehen

114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyu0

bedeutet dies, dass `getty` die Schnittstelle schon geöffnet hat und zeigt Kabelprobleme oder eine falsche Modemkonfiguration an, da `getty` die Schnittstelle erst dann öffnen kann, wenn das CD Signal (Carrier Detect) vom Modem anliegt.

Wenn Sie keine `getty`-Prozesse auf den gewünschten `ttyu`N`` Ports finden, untersuchen Sie bitte `/etc/ttys` auf Fehler. Suchen Sie auch in `/var/log/messages` nach Meldungen von `init` oder `getty`. Wenn Sie dort Meldungen finden, sollten Sie noch einmal die beiden Konfigurationsdateien `/etc/ttys` und `/etc/gettytab` nach Fehlern durchsehen. Überprüfen Sie auch, ob die Gerätedateien `/dev/ttyu`N`` vorhanden sind.

#### 27.4.6.2. Einwählversuch

Versuchen Sie, sich in Ihr System einzuwählen. Auf dem entfernten System stellen Sie bitte die folgenden Kommunikationsparameter ein: 8 Bit, keine Parität, ein Stop-Bit. Wenn Sie kein Anmeldeprompt erhalten oder nur unleserliche Zeichen sehen, drücken Sie mehrmals, in Abständen von ungefähr einer Sekunde, Enter. Wenn Sie immer noch nicht die `login:` Meldung sehen, schicken Sie ein `BREAK` Kommando. Wenn Sie zur Einwahl ein Highspeed-Modem benutzen, verwenden Sie eine feste Geschwindigkeit auf der seriellen Schnittstelle des Modems (`AT&B1` für ein U.S. Robotics® Sportster®).

Wenn Sie jetzt immer noch kein Anmeldeprompt erhalten, überprüfen Sie nochmals `/etc/gettytab` und stellen sicher, dass

- der Verbindungstyp in `/etc/ttys` zu einem gültigen Eintrag in `/etc/gettytab` gehört,

- jeder der `nx=` Einträge in `gettytab` gültig ist und

- jeder `tc=` Eintrag auf einen gültigen Eintrag in `gettytab` verweist.

Wenn das Modem an Ihrem FreeBSD-System auf einen eingehenden Anruf nicht antwortet, stellen Sie sicher, dass das Modem so konfiguriert ist, dass es einen Anruf beantwortet, wenn DTR anliegt. Wenn Ihr Modem Statusindikatoren besitzt, können Sie das Anliegen von DTR anhand der Leuchten überprüfen.

Wenn Sie alles schon mehrfach überprüft haben und es immer noch noch nicht funktioniert, machen Sie erst einmal eine Pause, bevor Sie weitermachen. Wenn es immer noch nicht funktioniert, können Sie eine Mail an die Mailingliste 'Fragen und Antworten zu FreeBSD' `<de-bsd-questions@de.FreeBSD.org>` schicken, in der Sie Ihr Modem und Ihr Problem beschreiben und Ihnen sollte geholfen werden.

Zurück | Nach oben | Weiter
27.3. Terminals | Zum Anfang | 27.5. Verbindungen nach Außen

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.