FreeBSD PPP Verbinding naar ISP

Dit document beschrijft hoe je onder FreeBSD een internetverbinding tot stand kan brengen
door met een analoog modem in te bellen bij een Internet Service Provider (ISP).

FreeBSD PPP
Geschreven door M.Mastenbroek augustus 2003 / Document versie 1.1 (Updated 17 september 2003)

Inhoud:

Voorwoord

Ondanks dat het er op lijkt dat internetten met een analoog modem zijn beste tijd wel heeft gehad hebben toch de meeste Nederlanders nog steeds een inbel verbinding d.m.v. een analoog of isdn modem. Mede hierdoor maar ook omdat een breedband verbinding het nog wel eens wil laten afweten (Chello) en er bijna altijd wel een telefoonlijn beschikbaar is heb ik dit document geschreven.

Dit document beschrijft hoe je FreeBSD moet configureren om een internetverbinding te realiseren d.m.v. een PPP verbinding naar een ISP (Internet Service Provider). Verder wordt ook uitgelegd hoe je deze verbinding eenvoudig kunt delen en is er een webinterface beschikbaar om b.v. vanaf een werkstation de internet verbinding met het modem op te bouwen.

In dit document wordt verder overal de instellingen van Xs4all gebruikt, maar het mag voor zichzelf spreken dat dit document ook gebruikt kan worden voor andere providers. Verder wil ik het niet nalaten te vermelden dat ik persoonlijk zeer te spreken ben over de service en de kwaliteit van Xs4all als ISP, daarbij komt dat Xs4all zelf ook zijn services host op FreeBSD

De voordelen van internetten met een analoog modem onder FreeBSD: De nadelen van internetten met een analoog modem onder FreeBSD:

Benodigdheden

*Het gebruik van (goedkope) WIN modems is af te raden. De hardware als zodanig is geen compleet modem, deze functioneert pas na aanvulling van software (b.v. Windows drivers).
Externe modems (via een seriëlekabel) daarentegen zijn nagenoeg altijd complete hardware modems.

Stap 1 modem detecteren.

Het modem moet ten eerste zijn aangesloten of ingebouwd zijn in de pc, aanstaan en zijn aangesloten op een telefoonlijn. Het gaat er dan vervolgens om onder welke COM poort deze te benaderen is. Ook voor een interne modem geld dat deze te benaderen zal zijn via een zogenaamde interne COM poort.

De COM poorten onder FreeBSD zijn bekend onder de naam cuaa# in de directory /dev. Om er achter te komen hoeveel en welke COM poorten u heeft voert u het volgende commando uit.

Shell:
ls -al /dev/ | grep cuaa
crw-rw---- 1 uucp dialer 28, 128 Aug 17 17:50 cuaa0
crw-rw---- 1 uucp dialer 28, 129 Aug 14 14:37 cuaa1
crw-rw---- 1 uucp dialer 28, 130 Aug 13 14:24 cuaa2
crw-rw---- 1 uucp dialer 28, 131 Aug 13 14:24 cuaa3

De uitvoer van het commando zal per systeem verschillen. In dit geval zijn er 4 mogelijke COM poorten waar het modem op kan zijn aangesloten. Zo staat /dev/cuaa0 voor COM1 en /dev/cuaa1 voor COM2. Om er achter te komen op welke COM poort het modem is aangesloten start u de ppp client d.m.v. het commando 'ppp'.
Probeer vervolgens de COM poorten stuk voor stuk uit door het commando 'term /dev/cuaa#' waarbij het # vervangen moet worden door het juiste nummer.

Zodra de volgende response wordt weergegeven is het juiste port nummer gevonden.

deflink: Entering terminal mode on /dev/cuaa0
Type `~?' for help

Afhankelijk van de juiste COM poort zal er bij een juiste werking het volgende getoond worden.

PPP client:
Working in interactive mode
Using interface: tun0
ppp ON Toshiba> term /dev/cuaa0
deflink: Entering terminal mode on /dev/cuaa0
Type `~?' for help

Hierbij kan de verbinding met het modem weer als volgt worden verlaten '~.' en kan de ppp client met het commando 'bye' worden verlaten.
Doe deze stappen echter NIET als u ook de telefoon lijn nog wilt testen.

Stap 2 telefoonlijn & ISP testen.

Techniek en achtergrond:
Tussen FreeBSD en de ISP wordt dan getracht een point to point verbinding op te bouwen. Het point to point ofwel PPP protocol is zo gemaakt dat het enkel en alleen kan worden opgebouwd tussen 2 computers. Als deze verbinding tot stand is gebracht kan er vervolgens over deze PPP verbinding een ander protocol gaan. In het geval dat je wilt internetten zal hier gebruik worden gemaakt van het TCP/IP protocol. Dit protocol gaat dus over (of door) het PPP protocol. Binnen het OSI model staat PPP dus lager dan TCP/IP.

Als het goed is zit je nog steeds in je PPP client en heb je een verbinding met het modem. Geef nu je modem opdracht om in te bellen bij je ISP. Dit kan met het commando 'atdt' gevolgd door een telefoon nummer. Na enige tijd verschijnt er dan een login prompt. Geef hier je gebruikersnaam en wachtwoord van je internet account. Als deze wordt geaccepteerd is hiermee de werking van je modem, de telefoonlijn en het account van je ISP aangetoond.

Afhankelijk van de aansluiting van het modem en de ISP ziet de uitvoer er als volgt uit.

Shell:
User: root [~] >ppp
Working in interactive mode
Using interface: tun0
ppp ON Toshiba> term /dev/cuaa0
deflink: Entering terminal mode on /dev/cuaa0
Type `~?' for help
atdt0264422444
CONNECT 115200

login: gebruikersnaam
Password:
Last login: Thu Aug 14 20:57:46 from 194.109.103.48
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.

FreeBSD 4.7-RELEASE-p13 i386

Welkom bij XS4ALL !
.........

De verbinding naar je ISP kan worden verlaten door het commando 'exit' en het modem kan wederom door het commando '~.' worden verlaten. Tot slot kan de ppp client met de tekst 'bye' worden gesloten.

Stap 3 internet verbinding configureren.

De configuratie file van de ppp client (waar zodadelijk de internet verbinding mee wordt opgebouwd) staat in de directory '/etc/ppp/' genaamd 'ppp.conf'.
Voordat deze wordt aangepast raad ik aan alvorens even een kopie te maken voor het geval er iets mis mocht gaan.

Achtergrond:
De configuratie file 'ppp.conf' bestaat uit 1 of meer selecties die te identificeren zijn bij naam. Een selectie is een op zichzelf staande configuratie die door de ppp client kan worden aangeroepen door de naam van de selectie. Een selectie begint met een naam gevolgd door een dubbele punt. Een selectie eindigt bij een volgend selectie of het einde van de configuratie file. De selectie met de naam 'default:' wordt standaard eerst uitgevoerd gevolgd door een eventueel aangegeven selectie.

Configuratie:

Ga naar de selectie 'default'

Maak vervolgens een kopie van de selectie 'papchap' of wijzig deze naam papchap in een voor de handliggende naam.
Als voorbeeld geven we deze selectie de naam 'isp'.
De volgende regel 'set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0' geeft aan dat we van de ISP een ip-adres krijgen toegewezen. We hebben het dan over een zogenaamd 'dynamisch' ip-adres. Voor diegene die een vast ip-adres van hun ISP hebben gekregen moeten op deze regel hun zogenaamde 'statische' ip-adres invullen. Voor meer informatie hierover kunt u hoofdstuk 16.2 ‘Using User PPP‘ van het FreeBSD Handbook raadplegen.

Als laatste configuratie handeling moet u de DNS Server opgeven in de configuratie file '/etc/resolv.conf'.
Hierbij wordt als voorbeeld de 2 DNS Servers van Xs4all gebruikt. Vervang deze voor de DNS Server(s) van uw eigen ISP.

Editor (/etc/resolv.conf):
nameserver 194.109.104.104
nameserver 194.109.6.66

Heeft u deze gegevens niet dan kunt u de zojuist genoemde DNS Servers van Xs4all gebruiken. Dit heeft als enige kleine nadeel dat het de werking hiervan iets trager kan verlopen dan wanneer u de DNS Servers gebruikt van uw eigen ISP.

Stap 4 inbellen.

De laatste handeling is het daadwerkelijk opzetten van de internet verbinding. Dit gebeurt d.m.v. het volgende commando.

Shell::
ppp -auto isp

Nadat de ppp client succesvol een verbinding heeft opgebouwd met de ISP kunt u achter uw FreeBSD machine internetten.

De verbinding kan weer worden gestopt door het ppp proces te killen. Dit kan d.m.v. het volgende commando.

Shell::
kill `ps -aux | grep ppp | grep -v grep | awk '{ print $2 }'`

Let hierbij op dat net zoals het opbouwen van de verbinding het afsluiten ook even tijd zal vragen. Hierdoor zou naar uitvoeren van het zojuist genoemde commando het proces niet direct verdwenen zijn.

Nadat u zelf kunt internetten via deze methode kunt u deze internet verbinding heel gemakkelijk delen met anderen. Dit kunt u realiseren door de verbinding als volgt op te bouwen.

Shell::
ppp -auto -nat isp

De computers die gebruik willen maken van deze internet verbinding moeten als gateway het locale ip-adres van uw FreeBSD machine opgeven.
Daarbij moeten ook zij een DNS server(s) opgeven, gebruik bij voorkeur dezelfde als die u gebruikt.

Shell scripts (optioneel)

Om het gemak van een inbel verbinding naar je ISP te optimaliseren zijn er een 4 tal shell scripts beschikbaar. Ieder shell script heeft een eigen specifieke taak. Een vereiste voor de werking van deze shell scripts is bash. In de volgende tabel kunt een korte omschrijving vinden en tevens de 4 shell scripts downloaden.

Naam   Omschrijving van werking van shell script.
     
ppp_dialin.sh   Start bij het ontbreken van een ppp process een nieuwe verbinding.
ppp_close.sh   Sluit bij een aanwezige ppp process de verbinding.
ppp_log.sh   Geeft de laatste 10 regels van de ppp.log file weer.
ppp_status.sh   Geeft d.m.v. 5 mogelijkheden namelijk: "no connection","dialing","closing connection","unknown status" en "phone dead" de status van de internet verbinding aan.

Download deze 4 shell script en plaats deze in de directory '/usr/local/bin/'. Activeer vervolgens nog even het execute bit op deze 4 shell scripts.
Dit kan gedaan worden door de uitvoer van het commando 'chmod 755 /usr/local/bin/ppp_*'. Hierna is het mogelijk om de shell script te gebruiken.

Webbased control panel (momenteel niet beschikbaar)

Momenteel niet beschikbaar i.v.m. beschadigde file


Met dit php script is het mogelijk om op een gebruikersvriendelijk manier vanaf iedere gewenste locatie een internet verbinding op te zetten. Deze methode vereist wel de volgende onderdelen.
  1. De 4 shell scripts.
  2. Webserver met php ondersteuning.
  3. Sudo
Als u nog geen sudo heeft geďnstalleerd is deze te vinden in de port collection in de directory '/usr/ports/security/sudo'.
Verder moet u sudo configureren door de volgende 4 regels in de file '/usr/local/etc/sudoers' op te nemen. Heeft u deze file nog niet dan kunt u een kopie van de file '/usr/local/etc/sudoers.sample' maken.

Toevoeging /usr/local/etc/sudoers:
www ALL=(ALL) NOPASSWD: /usr/local/bin/ppp_close.sh
www ALL=(ALL) NOPASSWD: /usr/local/bin/ppp_dialin.sh
www ALL=(ALL) NOPASSWD: /usr/local/bin/ppp_log.sh
www ALL=(ALL) NOPASSWD: /usr/local/bin/ppp_status.sh

Download het bestand php_ppp.tar.gz en verplaats deze naar de www directory van je webserver, pak vervolgens php_ppp.tar.gz uit.

Shell:
tar -xvzf php_ppp.tar.gz


Er vanuit gaand dat de webinterface in de root directory van je webserver staat is deze nu te benaderen via 'http://mijnipadres.nl/php_ppp/' waarbij de tekst 'mijnipadres.nl' moet worden vervangen door je eigen domeinnaam of ip-adres.

Het bediening van het Dial in control panel ziet er als volgt uit.

Klik hier om te vergroten.   Klik hier om te vergroten.

Het control pannel laat iedere 5 seconden de nieuwe status van de internet verbinding zien, daardoor is het voor meerdere gebruikers gelijktijdig te gebruiken.

F.A.Q.

Bronnen

The FreeBSD Handbook
In hoofdstuk 16.2 'Using User PPP' staat beschreven hoe je een ppp client moet configureren.
http://www.nathanr.net/unix/freebsd/guides/ispconnect.shtml
Een Engelstalige document hoe je zowel met zowel de huidige methode of op basis van enkel shell scripts kunt inbellen.
http://lantech.geekvenue.net/chucktips/jason/chuck/984964170/index_html
Een Engelstalige howto over ppp i.c.m. ISP waarbij ook wordt uitgelegd hoe je FreeBSD automatisch vanuit /etc/rc.conf kan laten inbellen.
http://www.onlamp.com/pub/a/bsd/2000/06/14/FreeBSD_Basics.html
Een Engelstalige document waar wordt uitgelegd hoe je met een analoog modem of met een kabel modem online kunt.
http://www.google.com/bsd
En natuurlijk mijn favoriete zoekmachine www.google.com.

Back