Hlavní navigace

Vytáčené připojení a možnosti pppd

Stanislav Brabec 22. 7. 2002

Mnoho z nás se stále ještě připojuje na Internet vytáčenou linkou. Dnes se dozvíme více o PPP připojení programem pppd. Názorně si předvedeme jeho běžnou konfiguraci a podíváme se na programy, které umožňují zlepšit práci na vytáčené lince.

Vytáčená linka

Pryč jsou doby, kdy provideři nabízeli vytáčené spojení s pevnou síťovou adresou a SLIP protokolem. Dnes převažuje připojení PPP. K přihlašování se již nepoužívá přihlašování heslem, ale ověřování PAP nebo CHAP.

Jak probíhá připojení

K připojení nelze použít standardní ifconfig – před připojením je nutné provést přihlášení a ověření, a o to se stará buď balík ppp, nebo některý GUI program s podobnou funkcí. V článku budeme psát o ppp.

Pokud je pppd suid root, může jej spustit každý uživatel. V některých distribucích se o vytáčení stará program wvdial, my si však popíšeme cestu, jak vytáčet i bez něj –

připravíme si jednoduchý skript (v některých distribucích se jmenuje pppon nebo ip-on):

#! /bin/sh
/usr/sbin/pppd /dev/modem call mujprovider

Program pppd načte nastavení z /etc/ppp/options, z /etc/ppp/op­tions.jméno_za­řízení a z příkazové řádky a zahájí připojování. Příkaz call

argument přitom znamená, že se načte soubor z /etc/ppp/pe­ers/argument.

Stejně jednoduchý bývá i skript pro zavěšení (jmenuje se pppoff nebo ip-off, jméno souboru může záležet na distribuci; zavěsit linku může jen ten uživatel, který pppd spustil, nebo root):

#! /bin/sh
kill `cat /var/run/ppp0.pid`

V mém případě je /etc/ppp/options jednoduchý:

# používat zámky
lock

Protože používám symbolické zařízení /dev/modem, bude se číst též skript /etc/ppp/opti­ons.modem. Ten není o nic složitější:

# používat signály Carrier Detect a Data Terminal Ready
modem
# používat hardwarové řízení toku dat (RTS/CTS)
crtscts
# rychlost sériové linky modemu
115200

Pro tuto konfiguraci by měl být modem nastaven tak, aby bylo možné zavěsit signálem DTR. (Pokud se vám zavěšování signálem DTR nelíbí, lze běžné modemy zavěsit sekvencí +++ATH, kde úvodní +++ jsou z obou stran odděleny zhruba sekundovou pauzou.)

Nyní přichází zajímavější soubor /etc/ppp/peer­s/mujprovider. Jeho detainím popisem se již na Rootu zabýval tento článek, takže jen popíšu své nastavení:

# připojovací skript (zde vyplňte seznam čísel providera)
connect "/etc/ppp/chat/pap_chap 0971xxxxxxx 0971xxxxxxx"
# odpojovací skript (pro standardně nastavený modem není nutný)
#disconnect "chat -v -f /etc/ppp/chat/hang"
# použít DNS providera
usepeerdns
# nastavit jako implicitní cestu pro směrování
defaultroute
# IP se přiděluje až po připojení
noipdefault
# odpojení po 300s nečinnosti
idle 300
# linka přenese všechny znaky
asyncmap 0
# pppd nebude ověřovat server
noauth
# přihašovací jméno
name moje_jméno
# ladění příkazů
#debug
# ladění paketů přes jádro (zdržuje!)
#kdebug 4

Máme-li nastaveno usepeerdns (a provider tuto funkci podporuje), vznikne po připojení soubor /etc/ppp/resol­v.conf

s adresami DNS serverů providera.

Připojovací skript /etc/ppp/chat/p­ap_chap může vypadat takto:

! /bin/sh
# hlasité tónové vytáčení
#DIAL=DT
# tiché tónové vytáčení
DIAL=M0DT
# hlasité pulsní vytáčení
#DIAL=DP
# tiché pulsní vytáčení
#DIAL=M0DP

for i in $@
do
    if /usr/sbin/chat -f /etc/ppp/chat/pap_chap.chat -T $DIAL$i
    then
        exit 0
    fi
done
exit 1

A vlastní skript pro chat – /etc/ppp/chat/p­ap_chap.chat (je stejný pro všechny providery) může být např.:

#! /usr/sbin/chat -f
# skript pro PAP/CHAP ověřování
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
TIMEOUT 5
"" "ATZ"
OK\r\n "AT\T"
TIMEOUT 90
CONNECT "\c"
\r\n "\c"

Oboje lze vyřešit i jednodušeji, ale uvedené skripty jsem vytvořil době, kdy někteří provideři nabízeli více čísel. Navržené řešení může procházet i čísla různých providerů, dokud neuspěje (pokud však používáme SMTP server nebo proxy providera, museli bychom vyřešit jeho dynamickou změnu, například tím, že by skript obsahoval požadované hodnoty pro všechny providery a zapisoval je do souboru).

A slíbený alternativní zavěšovací skript /etc/ppp/chat/hang:

! /usr/sbin/chat -f
# Zavěšovací skript pro modemy, které ignorují DTR.
TIMEOUT 5
"" "\d+++\dATH"
"OK" "ATZ"

Soubory /etc/ppp/pap-secrets a /etc/ppp/chap-secrets mohou být totožné (nebo jeden může být odkazem na druhý):

# klíče pro ověřování PAP/CHAP
# klient    server  klíč       IP adresy
moje_jméno  *       moje_heslo

Pokud máme u různých providerů různá hesla nebo přihlašovací jména (pozor, někteří provideři vyžadují přihlašovací jména „holá“, jiná i s následujícím @provider.cz), musíme je v kolonce server (nebo IP adresa) specifikovat. Soubor může být čitelný jen pro superuživatele, ale přesto se může s jeho pomocí přihlásit i obyčejný uživatel (heslo si ovšem nezjistí).

Všechny skripty, které pppd volá, se vykonávají s právy superuživatele.

To však není všechno, co pppd umí! Ještě jsou zde další dva soubory: /etc/ppp/ip-up (ten se spouští sekundu pro uspěšném ověření) a /etc/ppp/ip-down (ten se spouští při odpojení). Pppd je ke své činnosti nepotřebuje, ale my si je můžeme vyplnit spoustou užitečností.

Užitečnosti pro vytáčenou linku

WWWOFFLE

je zajímavá proxy, přizpůsobená pro uživatele vytáčeného spojení. Její pomocí můžete surfovat offline, pohybovat se po stažených stránkách a objednávat nové. Můžete také povolit úpravy ve stránce a třeba barevně odlišit odkazy na strany, které má WWWOFFLE v paměti. WWWOFFLE lze propojit s místním vyhledávačem. O WWWOFFLE již na Rootu pojednává tento článek. K tomu mohu jen přidat malou kolekci bookmarkletů, která vám ulehčí práci s touto proxy. Na mých stránkách pak najdete záplatu a nedokončený český překlad.

Někteří provideři nabízejí vlastní http proxy. Můžete ji používat jak přímo z webového prohlížeče, tak jako nadřazenou proxy pro WWWOFFLE. Zda dojde k urychlení prohlížení, záleží na tom, jaké weby navštěvujete a jak velkou proxy a silnou linku má provider. Pokud prohlížíte podobné stránky jako ostatní klienti providera, můžete pocítit výrazného zrychlení (zejména mají-li stránky pomalou odezvu). Pokud navštěvujete jiné stránky, zrychlení nenastane.

Program pdnsd je dlouhodobou pamětí DNS záznamů (na rozdíl od programů nscd nebo bind si je ukládá na disk). Ušetří nám čas strávený dotazy na DNS záznamy. (I o tomto programu jsme již na Rootovi psali – pozn. redakce)

V minulých týdnech jsme popisovali, jak nastavit poštu, a to i pro vytáčenou linku. I s ní budeme ve spouštěcím uživatelském skriptu počítat.

Uživatelské skripty

Nyní si můžeme popsat vzorový skript /etc/ppp/ip-up:

#! /bin/sh

# případné zprávy lze přesměrovat do protokolu
#exec >>/var/log/ppp 2>&1

# vygenerovat /etc/resolv.conf pro usepeerdns
# Vyžaduje /etc/resolv.conf.default s implicitními hodnotami!!!
# (Alternativou je prostý symbolický odkaz)
if [ -f /etc/ppp/resolv.conf ] ; then
rm /etc/resolv.conf
cat /etc/resolv.conf.default /etc/ppp/resolv.conf >/etc/resolv.conf
fi

# vymazat případné negativní výsledky dotazů na DNS v nscd
nscd --invalidate=hosts

# přepnout se do režimu online
wwwoffle -online

# standardní metoda pro odeslání pošty
# sendmail < 8.12
#/usr/sbin/sendmail -q &

# sendmail >= 8.12
/usr/sbin/sendmail -L sm-msp-queue -Ac -q &
/usr/sbin/sendmail -L sm-mta -q &

# stáhnout poštu, opakovat každých 15 minut
/usr/bin/fetchmail -d 900 --syslog

# stáhnout objednané webové stránky
wwwoffle -fetch &

# Ukázky dalších možností:

# Je levný tarif? (nepozná státní svátky!)
HOUR=`date +%H`
WEEKDAY=`date +%w`
if [ $WEEKDAY = 6 -o $WEEKDAY = 0 -o $HOUR -lt 6 -o $HOUR -ge 18 ]
then
# Levný tarif Telecomu

# synchronizovat mé stránky na Penguinu
#/usr/bin/rsync -e ssh -l -rltz --delete\
# --force --safe-links --exclude="*~"\
# --exclude="upload" ~sb/penguin/public_ftp/\
# utx@penguin.cz:/home/ftp/pub/users/utx/
#/usr/bin/rsync -e ssh -l -rltz --delete\
# --force --safe-links --exclude="*~" --exclude="upload"\
# ~sb/penguin/public_html/ utx@penguin.cz:public_html/

# stáhnout si aktuální stav překladatelských stránek
# (mnoho rsync serverů je přístupných pro každého)
#/usr/bin/rsync -azv --delete penguin.cz::preklady-cs/ /dist/recent/preklady-cs/

# tento řádek smažte
# (je tu jen kvůli tomu, že je vše zakomentované)
true

#else
# Drahý tarif Telecomu
fi

Vidíme, že pomocí tohoto skriptu lze zautomatizovat mnoho užitečných činností.

Podobně lze použít i skript /etc/ppp/ip-down:

#! /bin/sh

# případné zprávy lze přesměrovat do protokolu
#exec >>/var/log/ppp 2>&1

# vrátit /etc/resolv.conf
if [ -f /etc/ppp/resolv.conf ] ; then
rm /etc/resolv.conf
cat /etc/resolv.conf.default >/etc/resolv.conf
fi

# odstranit pomocné resolv.conf
rm -f /etc/ppp/resolv.conf

# přepnout se do režimu offline
wwwoffle -offline

# zastavit fetchmail
fetchmail -q

# takto lze po odpojení indexovat stažené www stránky
# ve vyhledávači htdig (který neumí česky)
# spustit upravenou konfiguraci:
# (viz záplata na CP1250 z http://www.penguin.cz/~utx)
# recode-ms-chars = yes a enable-modify-html = no
#/usr/sbin/wwwoffled -c /var/cache/wwwoffle/wwwoffle-search.conf
#sleep 2
#/var/cache/wwwoffle/html/search/htdig/scripts/wwwoffle-htdig-lasttime
#/usr/sbin/wwwoffle -c /var/cache/wwwoffle/wwwoffle-search.conf -kill

To je pro dnešek vše. Nezmínili jsme se o možnosti vytáčení na žádost (které vyžaduje jinou konfiguraci pppd, případně i Sendmailu), o komprimovaném přenosu po PPP lince (který vyžaduje podporu od providera) a o mnoha dalších věcech. Většina z toho je popsána v manuálech příslušných programů.

Našli jste v článku chybu?

7. 3. 2003 19:41

Milan Buška (neregistrovaný)

Můžu se s Váma spojit ohledně více informací
k programu wwwoffle.
Děkuji Milan Buška



12. 8. 2002 7:54

Jan Martinek (neregistrovaný)

Do startovacího skriptu se někomu může hodit přidat řádek pro synchronizaci systémového času, třeba
rdate -s cudns.cit.cornell.edu


Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Root.cz: 250 Mbit/s po telefonní lince, když máte štěstí

250 Mbit/s po telefonní lince, když máte štěstí

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Manželka je bio, ale na sex moc není

Manželka je bio, ale na sex moc není

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte