Seriële Laplink HOWTO
29 juli 2001
Willem J.Atsma
Vertaald door: EllenBokhorst
v2.1
2001-07-20
wja
Hoe je tussen twee computers een seriële verbinding tot stand kan
brengen. In dit document wordt uitgelegd hoe je een laplink
verbinding tussen twee computers legt. Zelf ondervond ik wat problemen bij
het verkrijgen van de informatie om dit werkend te krijgen, dus dit document
is bedoeld het je wat makkelijker te maken.
Introductie
In dit zeer beknopte document wordt uitgelegd hoe een seriële
laplink
verbinding tussen twee Linux machines of een Linux
en een Windows machine tot stand te brengen. De seriële verbinding
bestaat uit een null-modem
kabel en een communicatieprotocol:
PPP. Ik gebruik een dergelijke setup om bestanden van en naar mijn laptop
te versturen; het kan ook prima worden gebruikt om nieuwe software vanaf
een cdrom te installeren wanneer de laptop er geen heeft. Ik ondervond
meer problemen dan nodig was toen ik mijn seriële laplink instelde.
Hopelijk zal dit document er toe bijdragen dat je problemen in een keer
zullen worden opgelost.
(datgene wat te maken heeft met de seriële kabel).
De setup van de server en client die ik zal beschrijven kan zowel bestemd
zijn voor een Linux machine als een ander besturingssysteem, zolang als
het 't PPP-protocol met een null-modem ondersteunt. Waar 't op uitdraait
is dat de MS Windows implementatie speciale aandacht vereist aangezien het
iets anders is dan de standaard. Dit document bestaat uit twee hoofddelen.
In de eerste wordt de serversetup beschreven. Dit is het hoofdstation
met een seriële poort bestemd voor een PPP-verbinding. Als alternatief
kan de verbinding wanneer nodig worden gestart vanaf de opdrachtregel.
In het tweede deel wordt de configuratie van de client beschreven die
een verbinding maakt met de server om bestanden op te halen of naar over
te brengen.
Deze documentatie werd geprepareerd met gebruik van pppd versie 2.4.0
met kernelversie 2.4.2.
Laat het me alsjeblieft weten als je specifieke problemen ondervindt en
suggesties voor verbeteringen voor dit document hebt; mijn emailadres
is aan het einde van dit document te vinden.
Op de server
Configureer pppd
De communicatie zal via de seriële poort verlopen. Op de server
zullen we een verbinding maken via het /dev/ttyS1
(COM2 onder DOS/Windows) device. Dit kan op jouw computer anders zijn en
je zult de onderstaande voorbeelden overeenkomstig moeten aanpassen.
Ik verplicht tot authenticatie omdat ik de configuratie gebruik om in een
manier te voorzien bestanden op een fileserver te benaderen voor een
groep mensen. Na het inloggen kunnen zij de gedeelde Samba bestanden
gebruiken om bestanden van en naar een laptop te versturen. Als je je
geen zorgen maakt om beveiliging dan kun je commentaartekens plaatsen
voor de relevante opties.
PPP (Point-to-Point Protocol) communicatie voorziet in TCP/IP over een
seriële link. Met andere woorden: wanneer je via een modem op
internet gebaseerde browsing wilt, dan zul je dit zeer waarschijnlijk
gebruiken. Onder Linux wordt PPP geïmplementeerd door de PPP daemon
pppd
. De configuratie ervan vindt plaats via bestanden
in de directory /etc/ppp/
. We zullen de volgende bestanden
in gebruik gaan nemen:
/etc/ppp/options bevat alle algemene opties voor PPP verbindingen
/etc/ppp/options.ttyS1
bevat PPP opties voor specifieke verbindingen via
/dev/ttyS1
/etc/ppp/pap-secrets
bevat authenticatie informatie
/etc/inittab
start initiële systeemservices
Het bestand /etc/ppp/options
moet er ongeveer zo uit
komen te zien:
De regels beginnend met een #
worden aangemerkt als
commentaar. De lock
parameter geeft aan dat een lock
bestand zal worden aangemaakt om exclusief toegang tot het seriële
device te garanderen, de auth
parameter geeft aan dat
de client zichzelf bekend zal moeten maken en login
vertelt
pppd voor de authenticatie gebruik te maken van de systeemgebruikersnamen
en wachtwoorden.
Het bestand /etc/ppp/pap-secrets
wordt nog steeds
gecontroleerd op de gebruikersnaam en wachtwoordinformatie. Een speciale
op zichzelf staande regel zorgt dat pppd alleen de systeeminformatie van
de gebruiker gebruikt. Het bestand /etc/ppp/pap-secrets
ziet er ongeveer zo uit:
Elke machine met het IP-adres ppp_laplink_client
kan nu een verbinding maken met de server, zonder gebruik te maken
van een wachtwoord
(je kunt zien waarom het handig is de ppp_laplink entries in
het bestand /etc/hosts te hebben).
De login
parameter in het bestand
/etc/ppp/options
echter, maakt dat de gebruikersnaam
en het wachtwoord geleverd door de client voor authorisatie overeen moeten
komen met het bestand /etc/ppp/pap-secrets
als ook met de systeemgebruikersnaam en het
wachtwoord, dus de verbinding zal alleen succesvol zijn nadat in een
geldige gebruikersnaam en wachtwoord is voorzien.
Opties die specifiek zijn voor de seriële lijn via welke je een
verbinding maakt worden geplaatst in /etc/ppp/options.ttySn
,
waar n het nummer is van het seriële device.
device. Mijn server gebruikt /dev/ttyS1
, dus de opties
gaan in... /etc/ppp/options.ttyS1
.
Deze opties staan allemaal goed beschreven in de manpage van pppd; een
paar van de belangrijkste worden als commentaar in het bestand uitgelegd.
De crtscts
parameter vertelt pppd gebruik te maken van
hardware flow control. Dit is aan te bevelen omdat het 't snelst is.
Als alternatief kun je xonxoff
opgeven om gebruik te maken
van op software gebaseerde flow control - je geeft dit op als je nullmodem
kabel geen verbinding maakt met de
RTS/CTS lijnen (onwaarschijnlijk als je je kabel in de winkel hebt gekocht).
115200
duidt op de snelheid van de gegevenstransmissie -
als je problemen ondervindt bij het tot stand brengen van de verbinding,
zou je een lagere snelheid kunnen proberen. Geldige snelheidsinstellingen
zijn te vinden in de manpage van termios, alhoewel je hardware een
beperking zal opleggen voor de baud rate. Het instellen van een ongeldige
snelheidsinstelling zal een foutmelding teweeg brengen van de pppd daemon
en blijkbaar valt het dan terug op een standaardwaarde.
Voor de opties auth
en login
zijn hier
commentaartekens geplaatst, omdat ze in het algemene options bestand
werden opgegeven. Als je je computer ook gebruikt om bij een ISP in
te bellen, dan geef je ze hier op in plaats van in
/etc/ppp/options
, anders vraag je je ISP namelijk om
zichzelf te authoriseren wanneer je inbelt wat waarschijnlijk geen
succes zal hebben. De reden waarom ze niet in dit bestand worden
gespecificeerd is dat wanneer je nu of in de toekomst andere
inkomende PPP-verbindingen hebt, je er zeker van wilt zijn dat ze
altijd zijn geautoriseerd. Denk eraan dat de hier gepresenteerde
pap-secrets
geen enkele bescherming geeft.
Ten slotte specificeert de
ppp_laplink_server:ppp_laplink_client
regel de lokale
en het remote IP-adres nadat de link in de lucht is. Je kunt hier echte
IP nummers gebruiken (b.v. 192.168.0.1:192.168.1.1), of regels uit
het bestand /etc/hosts
, zoals ik deed. Het mooie van dat
laatste is dat je de namen kunt gebruiken om later naar deze links
te refereren. Ik raad je ook aan IP-nummers te gebruiken zoals ik dat
deed (192.168.0.1:192.168.1.1). Deze adressen zijn gereserveerd voor
lokale netwerken en ze bestaan niet op het internet, dus je voorkomt
mogelijke conflicten. Als de link eenmaal is geactiveerd, kan de client
verwijzen naar de server met het IP-adres van
ppp_laplink_server (192.168.0.1) en de server verwijst naar de client
met ppp_laplink_client (192.168.1.1).
Je kan verschillende regels gebruiken in
/etc/ppp/pap-secrets
om alleen gebruikerstoegang
te selecteren. Ik gebruik het PAP protocol voor authenticatie;
als je dat wilt, kun je CHAP gebruiken - de setup is vrijwel gelijk,
waarbij je gebruik maakt van het bestand chap-secrets
.
Voor deze en andere opties kun je de manpages en de documentie
die onderaan het document wordt vermeld raadplegen.
Een op getty lijkende installatie van pppd
Je kunt de PPP-daemon (pppd) starten wanneer je het systeem boot en
het de de seriële lijn van je keuze laten monitoren. Een elegante
manier om dit te bereiken is het wijzigen van het bestand
/etc/inittab
. Dit bestand bevat informatie voor
initialisatie van het systeem.
Voeg het volgende toe aan dit bestand:
Dit betekent het volgende: voor runlevels 2, 3, 4 en 5
/usr/sbin/pppd /dev/ttyS1 nodetach
starten en als
het wordt beëindigd (einde van de verbinding) start dan een
nieuwe op.
De nodetach
option maakt dat pppd verbonden blijft
met de terminal welke het startte, in plaats van dat het forkt en
stopt. Deze optie is nodig omdat het init
proces anders onmiddellijk een nieuwe verbinding op zou starten. Andere
regels in het inittab bestand specificeren getty processen die op
seriële terminals (tty's) draaien;
die initialisatie lijkt veel op deze.
Typ voor het activeren van deze nieuwe configuratie:
Start de server wanneer dit nodig is
Als je slechts zo nu en dan een verbinding met de server wilt maken,
geef je er waarschijnlijk de voorkeur aan de verbinding handmatig op
te starten. Alle instellingen blijven hetzelfde; je kunt de server
eenvoudigweg starten door achter de prompt in te tikken:
De optie nodetach
is niet echt nodig, maar zorgt dat de
verbinding makkelijk kan worden afgebroken door ctrl-c
in te drukken.
Diensten aanbieden aan MS Windows clients
Helaas is de MS Windows implementatie niet geheel standaard.
Voor het initiëren van de PPP-verbinding vereist het de uitwisseling
van de tekststrings CLIENT
(van de client) en
CLIENTSERVER
(van de server).
Voor aanpassing aan een Windows client moet de volgende regel worden
toegevoegd aan het bestand
/etc/ppp/options.ttyS1
:
Maak dan de scripts directory en het chat bestand
/etc/ppp/scripts/winclient.chat
aan:
De connect optie maakt het je mogelijk dat je een programma opgeeft
die de string uitwisseling verzorgt voor de connectie. Gewoonlijk
wordt het programma chat
hiervoor gebruikt; kijk in
de manpage voor details. Het gegeven script zorgt voor wat nodig
is voor de Windows connectie. Je hebt het niet nodig om een verbinding
te maken met een Linux box.
Op de client
Na de server te hebben geconfigureerd, is de client een makkie. In het
bestand /etc/ppp/options
komt een enkele regel voor:
De seriële poort op mijn client is /dev/ttyS0
(COM1),
dus moet ik ook een bestand /etc/ppp/options.ttyS0
aanmaken:
Slechts een paar nieuwe opties in dit bestand. Merk op dat de snelheid op
de server en client hetzelfde moet zijn (hier is dat 115200). Met
user zaphod
is de gebruikersnaam op de client gespecificeerd.
Deze gebruikersnaam moet corresponderen met een regel in het bestand
/etc/ppp/pap-secrets
van de client en het moet een geldige
gebruikersnaam op de server zijn. De optie
noauth
geeft aan dat de peer (server) zichzelf niet bekend
hoeft te maken aan de client.
Als laatste: het instellen van de clientnaam (gebruikersnaam) en de
sleutel (het wachtwoord) in het bestand /etc/ppp/pap-secrets
:
Dus de gebruiker zaphod
gebruikt het wachtwoord
gargleBlaster
, wat hem toegang zou moeten geven tot het
systeem. Deze bestanden bevatten gevoelige informatie, dus zorg dat je
de permissies correct instelt.
Start de client
Typ op de opdrachtregel:
Verbinding maken met een MS Windows server
Wat als je een verbinding wilt maken met een Windows server? Ook hier
hebben we de optie connect
nodig en een chatscript.
Voeg de volgende regel toe aan het bestand
/etc/ppp/options.ttyS0
:
Maak ook het chatscript /etc/ppp/script/winserver.chat
aan:
Dit zorgt ervoor dat de client de CLIENT
string
stuurt voordat geprobeerd wordt de PPP-verbinding te starten.
Instellen van een MS Windows (95) client
Om met windows een verbinding te maken met de server, gebruik je het
programma Directe kabelverbinding, en stel je het in als
guest
. Om met de windows client op volledige snelheid
een verbinding te maken, zul je de communicatiesnelheid van de directe
kabelverbinding moeten wijzigen. Hiervoor ga je naar
Control Panel->Systeem->Device Manager->Modems en selecteert
de seriële kabel. Ga verder met de 'modem' optie en selecteer een
maximumsnelheid van 115200 of waarop je linux computer dan ook is
ingesteld.
Nu is het van belang dat je in dit stadium je computer opnieuw opstart,
anders zal het niet werken (tenminste niet met Microsoft Windows 95, versie
A), wat betreft andere versies ben ik daar niet zeker van.
Vreemd genoeg...
Vreemd genoeg creërde ik een Linux server die een verbinding met zowel
Linux als Windows computers tot stand moest brengen, dus bevond ik mezelf in
de vreemde situatie beide Linux systemen zodanig te moeten instellen dat
ze zowel een verbinding maakten met Windows servers als clients!
Verbinding maken...
Het moment van de waarheid: verbind de computer met de nullmodem kabel,
start als eerste de server (als je de de /etc/inittab
benadering gebruikt, moet het reeds zijn geactiveerd),
en start dan de client.
Op de server krijg je iets dergelijks te zien als het volgende:
/dev/ttyS1
]]>
Als je pppd opstartte vanuit het bestand /etc/inittab
dan zullen
deze meldingen verschijnen in /var/log/messages
.
Op de client zie je dan iets als:
/dev/ttyS0
]]>
Op beide computers kun je de andere computer pingen om erachter te komen
of de verbinding actief is:
Je kunt nu de server via alle TCP/IP services benaderen die het beschikbaar
heeft, zoals FTP, HTTP, TELNET en SAMBA.
Internet via de seriële poort
Veronderstel dat je een laptop hebt en zo nu en dan een verbinding wilt
maken met Internet. Stel ook dat je een machine hebt met een ethernet
verbinding en een seriële poort. Je kunt de laptop als
een client instellen, de andere machine als een server en
IP masquerading gebruiken om via de null-modem kabel
een verbinding te maken met Internet. Kijk de IP-Masquerading-Howto er op
na voor hoe je dit kunt doen.
Andere nuttige documenten
De pppd en chat manual pages
PPP-HOWTO
How to hook up PPP (http://axion.physics.ubc.ca/ppp-linux.html)
Modem-HOWTO
Serial-HOWTO
IP-Masquerade-HOWTO
License
Copyright (c) 2000, 2001 door Willem J. Atsma
Dit document valt onder de Gnu Free Documentation License
(http://www.gnu.org/copyleft/fdl.html).
Kopieer en distribueer (verkoop het of geef het weg) alsjeblieft dit document
in elk formaat. Je wordt verzocht correcties en/of opmerkingen door
te sturen naar de beheerder van het document.
Je mag een afgeleide werk creëren en distribueren op voorwaarde dat je:
Het afgeleide werk opstuurt (in het meest geschikte formaat, zoals sgml) naar
de LDP (Linux Documentation Project) of iets dergelijks voor posting op
het Internet.
Licentieer het afgeleide werk met dezelfde licentie of gebruik GPL.
Voeg een copyrightmelding in en op z'n minst een verwijzing naar de
gebruikte licentie.
Geef krediet aan de vorige auteurs en mensen die een belangrijke bijdrage
leverden.
Als je overweegt een afgeleide werk te creëren anders dan een vertaling,
dan word je verzocht je plannen met de huidige beheerder te bespreken.
Krediet
Ik heb een aardige hoeveelheid behulpzame feedback ontvangen, in het
bijzonder van J.M. en B.S., en een deel daarvan is opgenomen in deze nieuwe
versie, bedankt!
author: W.J. Atsma
email: watsma@mech.ubc.ca
revision: 29jul2001