PPP
Point-to-point (PPP) je protokol pouzivany pro propojeni dvou siti po telefonni, pripadne ISDN lince. Je popsan dokumentem RFC-1661. PPP protokol se sklada ze dvou vrstev:
- Link Control Protocol (LCP) uzivany pro navazani spojeni po telefonni lince, konfiguraci a testovani, pripadne i autentizaci. V okamziku, kdy je timto protokolem zavazano spojeni, pouzije se jeden ci vice protokolu typu
- Network Control Protocol (NCP) pro prenost dat. Protokolu NCP existuje vice a lze je vyuzivat i soucasne v jednom navazanem spojeni:
- IPCP - protokol NCP zajistujici prenos IP verze 4
- IPXCP - protokol NCP prenasejici IPX
- IPV6 - pro IP verze 6
- SNACP, DNCP, OSINLCP a dalsi
Porovnani PPP a SLIP - Serial Line IP (vyhody PPP)
- moznost on-line konfigurace pripojeni pri navazovani spojeni. Klient pozada server o prideleni IP adresy, pripadne i o adresy nameserveru.
- moznost autentizace heslem (Password Authentication Protocol - PAP), pripadne Challenge-Handshake autentizaci (Challenge-Handshake Autentication Protocol - CHAP). Ten pracuje na principu spravne vypoctene odpovedi na polozenou otazku. Server posle klientovi uvodni zpravu, na kterou klient musi podle urciteho klice odpovedet. Server si taktez urci odpoved na svuj dotaz a podle vysledku porovnani odpovedi navaze nebo odmitne spojeni.
- nad jednim navazanym spojenim muze pracovat vice protokolu.
- monitoring linky obsahuje sluzbu echo umoznujici pravidelne kontrolovat stav spojeni
Postup pri navazovani spojeni
Pri navazovani spojeni se prochazi nekolika stavy
- Linka odpojena
Spojeni jeste nebylo navazano, bylo preruseno nebo jiz bylo ukonceno. V pripade preruseni spojeni (ztrata nosne) se automaticky prechazi do tohoto stavu.
- Navazovani spojeni
Pres protokol LCP se navazuje spojeni. Behem navazovani spojeni se neprenaseji zadne datove pakety (NCP). V pripade vyskytu datoveho paketu v teto fazi spojeni se tento paket zahazuje.
- Autentizace
V teto fazi dochazi k autentizaci spojeni. Tento krok lze vynechat, pripadne lze pouzit autentizaci jednostranou i oboustranou, kdy si svou totoznost prokazuji obe strany spojeni.
Stale se jeste pracuje nad protokolem LCP a prenaseji se pouze data pouzivana k vlastnimu prokazovani totoznosti. Tj. protokol LCP nepopisuje zadny autentizacni algoritmus, ale pouze prenasi data, ktera pak nasledne vyuziji autentizacni protokoly (napr. PAP nebo CHAP)
- Spojeni navazano
V okamziku navazani spojeni a pripadne i uspesne autentizace se prestava pouzivat LCP a je nahrazen jednotlivymi protokoly NCP. Pro kazdy protokol, ktery se ma vyuzivat, se musi linka otevrit. V pripade prenosu paketu protokolu, pro ktery linka nebyla otevrena, se tyto pakety zahodi. V pripade otevreni spojeni pro jeden protokol nemuze byt otevreno spojeni i pro jiny protokol. Prenasene pakety protokolu, pro ktery linka neni otevrena, se zahodi.
- Ukonceni spojeni
Opet se pouzije protokol LCP a vsechny jine pakety jsou zahazovany. Fyzicke vrstve je signalizovano ukonceni spojeni a ta pote zavesuje linku. Timto se dostavame opet do stavu "Linka odpojena".
Sifrovane PPP
Spojeni pres PPP lze sifrovat pomoci algoritmu DES. Sifruje se datova cast ramce a pouziva se pro nej protokol ECP (Encryption Control Protocol). Ten slouzi k tomu, aby se obe strany spojeni ve fazi "spojeni navazano" dohodli na sifrovanem spojeni. (RFC-1968 a RFC-1969)
Komprese dat
Je mozne komprimovat zahlavi PPP-ramce, v protokolu TCP/IP zahlavi TCP/IP-paketu a samozrejme prenasena data. Pro kompresi dat se pouziva Compression Control Protocol (CCP), ktery umoznuje obema strana spojeni douhodnout se na konkretnim algoritmu komprese dat. (RFC-1962)
Konfigurace
Linuxove distribuce
V jednotlivych Linuxovych distribucich existuji dva hlavni zpusoby inicializace PPP
Konfiguracni nastroje
- kppp (pro nastaveni a vytaceni PPP v prostredi KDE)
- WvDial (jednoduchy konfiguracni program)
- RP3 (zkratka z Redhat PPP - zepta se na radu otazek a pak podle odpovedi zkonfiguruje PPP)
- Linuxconf
Pozadavky pro uspesne navazani PPP spojeni
- zakompilovat podporu PPP do jadra - "PPP (point-to-point) support"
- povolit seriovy port (v pripade externiho modemu)
- ziskat IP adresu (a dalsi cisla), spravne je nastavit (pokud nepouzivam DHCP)
- Navazovani spojeni vyzaduje prava roota
Konfigurace modemu a seriovych portu
Konfigurace pppd
- nastaveni pro TCP/IP
/etc/host.conf
/etc/resolv.conf
- k vytvoreni PPP spojeni je potreba opravneni roota, proto pokud ma mit moznost otevrit spojeni i bezny uzivatel, je potreba nastavit suid-bit pro pppd (/usr/bin/pppd)
- soubory s konfiguraci PPP
/etc/ppp/scripts/ppp-on # the dialer/connection script
/etc/ppp/scripts/ppp-on-dialer # part 1 of the dialer script
/etc/ppp/scripts/ppp-off # the actual chat script itself
/etc/ppp/options # the options pppd uses for all connections
/etc/ppp/options.ttyXX # the options specific to a connection on this port
- v distribuci Red Hat jsou skripty umisteny v adresari /usr/doc/ppp-2.2.0f-2/scripts
- v pripade pripojeni vice modemu lze spolecne body konfigurace zapsat do souboru /etc/ppp/options a pote do jednotlivych souboru /etc/ppp/options.ttyXX prislusnym portum nastavit dalsi specificke vlastnosti.
- autentizace
- soubor /etc/ppp/options obsahuje i nastaveni autentizace (PAP i CHAP, pripadne MSCHAP - Microsoft CHAP). V pripade nutnosti pouziti MSCHAP - pozna se v debugovem vypisu radkou:
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]
(vyznamny retezec je "auth chap 80"), je nutne pppd znovu prelozit s podporou pro MSCHAP.
- pokud se pro autentizaci pouziva PAP s loginem a heslem pridelenym providerem, je potreba pridat radku:
name your_user name_at_your_ISP
do souboru /etc/ppp/options
Tato volba je platna i pro CHAP
- dalsi nastaveni autentizace
/etc/ppp/pap-secrets
#user server passw akceptovatelna lokalni adresa
login servername password somethig.somewhere.com
pro vice serveru se stejnym loginem lze pouzit i
#user server passw akceptovatelna lokalni adresa
login * password somethig.somewhere.com
obdobne i pro CHAP
Navazovani spojeni
Po konfigurace vsech techto souboru lze jiz navazat spojeni. Napr. prikazem:
pppd -d -detach /dev/ttySx 38400
-d zapina debugovaci mod
-detach zabrani spusteni daemona na pozadi
/dev/ttySx je port, pres ktery se ma spojeni navazat
38400 je pripojovaci rychlost
Takto vanazane spojeni by se melo objevit i ve vypisu prikazu ifconfig:
ppp0 Link encap:Point-Point Protocol
inet addr:0.0.0.0 P-t-P:0.0.0.0 Mask:0.0.0.0
POINTOPOINT MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Spojeni se ukonci prikazem ppp-off a pokud je to nutne, smazou se zamky portu:
rm -f /var/lock/LCK..ttySx
Toto pripojovani lze zautomatizovat skripty ppp-off, ppp-on a ppp-on-dialer:
- ppp-on
#!/bin/sh
TELEPHONE=555-1212 # The telephone number for the connection
ACCOUNT=george # The account name for logon (as in 'George Burns')
PASSWORD=gracie # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
export TELEPHONE ACCOUNT PASSWORD
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
$LOCAL_IP:$REMOTE_IP \
connect $DIALER_SCRIPT
- ppp-on-dialer
#!/bin/sh
/usr/sbin/chat -v \
TIMEOUT 3 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT$TELEPHONE \
CONNECT '' \
ogin:--ogin: $ACCOUNT \
assword: $PASSWORD
- ppp-off
#!/bin/sh
if [ "$1" = "" ]; then
DEVICE=ppp0
else
DEVICE=$1
fi
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
if [ ! "$?" = "0" ]; then
rm -f /var/run/$DEVICE.pid
echo "ERROR: Removed stale pid file"
exit 1
fi
echo "PPP link to $DEVICE terminated."
exit 0
fi
#
# The ppp process is not running for ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1
PPP server