Modemy, PPP

Petr Nesnídal,


Obsah


Point-to-point protocol (RFC 1661)

Původně byl vytvořen pro přenos datagramů mezi dvěma body po sériové lince, jeho použití je však mnohem širší. Vychází z protokolu HDLC. Používá se jako náhrada zastaralého protokolu SLIP. Některé jeho vlastnosti: Pro vytvoření a konfiguraci linky používá LPC (Link Control Protocol).

Obvyklý průběh komunikace:


Instalace PPP

Pro použití PPP musíme mít zkompilovanou jeho podporu v jádře (zjistíme v dmesg) nebo jako moduly (slhc, ppp_generic, ppp_async, popř. i ostatní ppp_*)
V Linuxu se pro vytvoření a správu PPP spojeni používá PPP daemon - pppd. Můžeme nainstalovat binárky (apt-get install ppp) nebo kompilovat zdroje (apt-get source -b ppp atd.)
Výsledkem by měly být binárky pppd, pppstats, pppdump a chat v /usr/sbin/, manové stránky a dokumentace a několik skriptů v adresářích /etc/ a /etc/ppp/(zjistíme pomocí dpkg -L ppp). Součástí balíčku je i několik utilitek: jsou to pon, poff a plog. Používají se k navazování, ukončování a vypisování PPP spojení.
Obvyklé navazování spojení z hlediska uživatele vypadá asi takto: Některé z těchto skriptů si rozebereme podrobněji:

/etc/ppp/ppp_on_boot

Pokud exituje je vykonán při každém startu systému.

/etc/ppp/ip-up

Teto skript je volán po ustanovení IP linky. Nastaví některé proměnné a pomocí run-parts(8) spustí skripty v adresáři /etc/ppp/ip-down.d Volá se těmito argumenty:
 
    Arg  Jméno                         Příklad
    -----------------------------------------------
    $1   Interface name                ppp0
    $2   The tty                       ttyS1
    $3   The link speed                38400
    $4   Local IP number               147.251.50.9
    $5   Peer  IP number               147.251.48.1
    $6   Optional ``ipparam'' value    foo

/etc/ppp/ip-down

Volaný po odpojení linky. Funkce i argumenty podobné jako u ip-up. Podobně můžeme použít i skripty pro jiné protokoly než IP, např. ipx-up, ipv6-up atd.

Obvyklé volby pppd

Volby můžeme zapsat do jednoho z konfiguračních souborů (viz výše) nebo do příkazového řádku:
	
/usr/sbin/pppd /dev/ttyS0 asyncmap 0 auth crtscts lock noipdefault modem\
debug netmask 255.255.255.0 connect /etc/peers/provider
a jiné (viz man).

CHAP a PAP

Challange (Cryptografic) Handshake Authentication Protocol a Password Authentication Protocol mají své souboury v /etc/ppp/chap-secrets a /etc/ppp/pap-secrets. Obsahují řádky tvaru
klient server heslo akceptovatelná_ip_adresa
přičemž poslední položka je nepovinná.

AT příkazy

AT (attention) příkazy slouží ke komunikaci mezi počítačem a modemem. Nejsou pevně standartizovány, proto se je třeba si přečíst manuál k danému modemu.
Některé důležité AT příkazy:

Minicom a chat

Minicom je program užňující otevřít terminál na modem a ovládat ho pomocí AT příkazů. Pokud ho tedy spustíme a zadáme AT, měl by nám modem odpovědět OK.

Komunikace s modemem funguje na principu otázka - odpověď. K tomu používáme program chat, který na řetězec umí odpovědět zadaným řětězcem. Vysvětlíme si to na příkladě:
#jednoduchy chatscript

"" 
# chat neocekava zadnou narazku, proto hned odpovida
"ATDT0624226361"
#vytacime cislo
"ogin:"
#dovolali jsme se a chcou po nas login
"plane"
"ssword:"
"tajnehesloproplane"

Mgetty

Mgetty je "chytrá" náhrada za getty. Dovoluje nám mimo jiné použít jeden modem pro příjem i vytáčení, rozpozná datovou komunikaci od hlasové a umí přijímat faxy (class 2 a 2.0).

Instalace je standartní (apt-get install mgetty). Je doporučeno spouštět mgetty ze souboru /etc/inittab:
id:runlevels:respawn:/sbin/mgetty [parametry] <zarizeni>
Některé důležité parametry jsou:
-x <level>                # debugging level
-s <speed>                # rychlost portu
-p <login_prompt> # prompt při logování
-n <rings>                # kolik zvonění než se začne odpovídat
-i /etc/issue           # před loginem zobrazí /etc/issue
Pro bližší informace viz man.

Související odkazy