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:

#/etc/ppp/options
lock
#auth  dwingt de peer tot authorisatie
#login gebruik voor authenticatie het systeemwachtwoordbestand
#NOTE: mijn pap-secrets staat iedereen toegang toe, dus als 
#      dit niet is opgegeven, dan kan iedereen een verbinding!
#      Als dit een machine is waarmee je ook uit kunt bellen, 
#      plaats dan commentaartekens voor auth en login en 
#      verplaats ze naar /etc/options.ttySn
#      
#  
auth
login
   

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:

#/etc/ppp/pap-secrets
# Sleutels voor authenticatie met PAP
# client                 server                  secret         IP addresses
*                        *                       ""             ppp_laplink_client
   

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".

#/etc/ppp/options.ttyS1
asyncmap 0
crtscts
#local geeft aan dat modemlijnen niet worden gebruikt
local
#silent zorgt dat pppd totdat een verbinding is gemaakt vanaf
#de andere kant
silent
#dit zijn regels die voorkomen in het /etc/hosts bestand
#de link werkt niet als dit aan het einde vh bestand staat
#de volgorde doet er dus toe!
ppp_laplink_server:ppp_laplink_client
#auth forceert authorisatie van peer
#login maakt dat voor authenticatie gebruik wordt gemaakt van
# het systeemwachtwoordenbestand
#NOTE: mijn pap-secrets staat iedereen toegang toe, dus als dit
#niet is opgegeven, dan kan iedereen een verbinding maken!
#Als dit een server is die ppp nooit zal gebruiken om uit te 
#bellen, dan verplaats je auth en login naar /etc/ppp/options
#auth
#login
#gebruik PAP, geen CHAP voor authenticatie
require-pap
115200
   

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:

# Start pppd voor de seriële laplink.
pd:2345:respawn:/usr/sbin/pppd /dev/ttyS1 nodetach
   

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:

[root@griis /root]# /sbin/init q
   

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:

/usr/sbin/pppd /dev/ttyS1 nodetach
   

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":

connect 'chat -v -f /etc/ppp/scripts/winclient.chat'
   

Maak dan de scripts directory en het chat bestand "/etc/ppp/scripts/winclient.chat" aan:

TIMEOUT 3600
CLIENT CLIENTSERVER\c
   

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.