Hlavní navigace

Jak na vytáčené připojení k Internetu

1. 8. 2001
Doba čtení: 7 minut

Sdílet

Mnoho lidí začínajících s Linuxem se jistě setkalo s problémem, jak takový počítač připojit na internet. Problém připojení Linuxu na internet bývá pro začátečníka často problémem nepřekonatelným a nezřídka bývá i důvodem pro přechod k Micr0$0ftu. Rozhodl jsem se proto těmto lidem trochu pomoci právě tímto článkem.

Nejprve by bylo dobré si vyzkoušet, jak to vlastně funguje a co bude naším cílem. Pro začátek je třeba si objasnit, kam jsme vlastně náš modem připojili a jaké zařízení v adresáři /dev to je. Musím upozornit, že v tomto článku se budeme bavit pouze o externích modemech, které se samozřejmě připojují na seriový port. (S klasickými plnohodnotnými ISA modemy by rovněž neměl být problém, neboť se v systému tváří jako další sériový port, poznámka redakce).
V adresáři /dev jsou speciální soubory /dev/ttyS0, /dev/ttyS1, atd., které odpovídají jednotlivým zásuvkami seriových portů (COM1 = ttyS0, COM2 = ttyS1, …).

Můžete si například vyzkoušet:

smrt@smrt$> ls -l /dev/mouse
lrwxrwxrwx    1 root     root            5 led 24 17:56 /dev/mouse -> ttyS0

Vidíme, že moje myš je připojena na COM1. Dále si pak můžete vyzkoušet, jak myš posílá informace o změně své polohy na tento port

smrt@smrt$> cat /dev/mouse

Podobně, jako je na ttyS0 vytvořen link mouse, bude dobré tento link vytvořit i pro modem (není-li již vytvořen).

smrt@smrt$> ln -s /dev/ttyS1 /dev/modem

Samozřejmě záleží na tom, kde je modem připojen. Tento link rozhodně není povinný a jistě bychom se obešli i bez něj, je ale dobrým zvykem jej vytvořit a já budu v tomto článku předpokládat, že jej máte.

Nyní si ukážeme, jak takový modem funguje. Použijeme k tomu program minicom, který je obsažen (alespoň doufám) ve všech běžných distribucích Linuxu. Na mém mandraku je to například balíček minicom-1.83.1–3mdk. Takže program spusťte – pokud s tím budete mít problémy, zkuste to jako root :-), i když se to nemá.

Jestliže máte modem správně připojený a správně vytvořený link /dev/modem na správné zařízení, mělo by se vám objevit něco, co může připomínat terminál. Nyní si můžete vyzkoušet pár AT-příkazů. AT-příkazy jsou vlastně povely, kterými se modem ovládá. Napište tedy příkaz AT a stiskněte Enter. Modem by měl odpovědět OK. Pokud se tak nestane, něco je špatně a měli byste překontrolovat zapojení modemu, případně koupit nový :-).

Takže teď budu předpokládat, že je vše v pořádku a že vám modem správně odpovědel OK. K tomu, abychom se mohli připojit na internet, budeme potřebovat alespoň 2 AT-příkazy: ATZ a ATDT. ATZ je jednoduchý. Prostě ho napište, čímž řeknete modemu, aby se inicializoval na tovární (nebo uživatelem uložené) nastavení. Jestliže modem odpoví OK, je to OK :-). No a ATDT vám vytočí zadané číslo. Jestliže tedy chcete zavolat na 0609112777, zadáte příkaz ATDT0609112777 a modem vám ho vytočí. Jestliže nemáte ještě digitální připojení a nefunguje vám tónová volba, můžete zkusit vytočit příkazem ATDP, který číslo vypulzuje :-).

Když se budete pokoušet vytáčet, může se vám stát, že modem nerozpozná oznamovací tón, bude si myslet, že je linka obsazená a zavěsí. Tento případ se stal i mně. Řešení je jednoduché: zadejte příkaz ATX3<W, tím modem nastavíte tak, že nebude kotrolovat oznamovací tón. Nebo můžete zkoušet vytáčet ATDX3T, což by mělo také fungovat. Rozhodně je vhodné si projít manuál k modemu, kde jsou tyto příkazy obvykle velmi dobře popsány, často i v češtině.

Nyní se konečně začneme připojovat na internet. Bude dobré si zjistit takové ty základní informace, jako je telefonní číslo, jméno a heslo. Stejně, jako jsme před chvílí volali na erotickou linku, si teď zkusíme zavolat našemu providerovi :-). Takže:

ATZ
OK
ATDT0971101211

A nyní to začne být zajímavé! Jestliže se vám podaří dovolat, modem začne pískat a dělat všelijaké takové ty divy. Pokud nepíská, nezoufejte, může pískat potichu a vy to nemusíte slyšet. Zkuste chvilku počkat. Modem by měl dopískat a na minicomu by se mělo objevit něco jako:

CONNECT 38400


CVX Access Switch.

Access is restricted to authorized users only.

login:

zadejte sem vaše přihlašvací jméno

password:

a sem heslo. Jestliže jste to udělali dobře, vyjede vám hafo nesmyslných znaků. To už je vlastně internet (pro přesnost bych měl říci „skoro internet“).

Jestliže se vám podařilo dojít až sem, máte skoro vyhráno. Nyní jen stačí celý tento postup vysvětlit PPP démonovi.

Než se do toho pustíme, bude vhodné překontrolovat, zda vaše jádro skutečně podporuje protokol PPP. Máte-li původní jádro z distribuce, bude v něm nejspíš podpora PPP obsažena (např. v Red Hat Linuxu jako modul). Pokud jste si jádro kompilovali sami, ověřte, že jste při kompilaci nezapomněli zaškrtnout podporu PPP v Network device support. Dále, jestliže nemáte podporu PPP zakompilovanou přímo do jádra, bude nutné zavést potřebné moduly. Jak jistě víte, najdete je v /lib/modules/verze jádra/kernel/dri­vers/net/ a zavedete je příkazem modprobe [jméno modulu]. Měly by stačit moduly ppp_async a ppp_generic. Budete-li mít problémy, můžete zkusit zavést i ostatní ppp_*, ale myslím, že je to zbytečné.
No a verzi jádra zjistíte příkazem uname -a. :-) Pro kontrolu, měl jsem zavedeny tyto moduly a vše fungovalo:

root@/root#> modprobe ppp_async
root@/root#> modprobe ppp_generic
root@/root#> lsmod
Module                  Size  Used by
ppp_async               6288   0  (unused)
ppp_generic            13264   0  [ppp_async]
slhc                    4768   0  [ppp_generic]

Nyní trochu odbočím a povíme si něco o programu chat. K vysvětlení jeho funkce bude asi nejlepší, uvedu-li příklad:

smrt@smrt$> /usr/sbin/chat "ahoj" "zdravim te" "jak se mas?"
    "dobre" "ok"

Napište „ahoj“, počítač odpoví „zdravim te“, zeptejte se „jak se mas?“ a počítač řekne „dobre“. Celý rozhovor ukončíte, když napíšete nakonec ok.

Myslím, že funkce programu chat je velmi zřejmá. Jen by bylo dobré ještě dodat, že jej lze spustit s parametrem -f, za který uvedete jméno souboru obsahujícího všechna tato slova, každé na jedné řádce. Program chat nám tedy umožní povídat si s modemem. Vytočíme s ním číslo, zadáme jméno a heslo. Zbytek pak už zařizuje PPP démon.

Začneme chat-scriptem. Ten už byste jistě zvládli sami, ale pro jistotu:

smrt@smrt> cat chat_script
""
"ATZ"
"OK"
"ATDT0971101211"
"login:"
"smrtacek"
"password:"
"moctajneheslo"

Když PPP démona spouštíte poprvé, bude dobré přidat parametr -d, což vám umožní vidět v syslogu mnoho zajímavých zpráv, které vám pomohou odstranit případné chyby. Takže než poprvé spustíte pppd, napište na jiné konzoli

tail -f /var/log/messages

A pak spustíme pppd:

root@root# pppd connect "/usr/sbin/chat -f chat_script" 115200
    modem crtscts asyncmap 0 defaultroute /dev/modem
    noipdefault lock

Jednotlivé parametry dělají asi toto:

connect "/usr/sbin/chat -f chat_script"

Provede pomocí chat scriptu to, co jsme si zkoušeli s minicomem. Dále se o spojení stará samotný démon.

115200

Je maximální rychlost, kterou je můj sériový port ochoten komunikovat, resp. je to rychlost, kterou je váš modem schopen zvládnout.

modem

To aby pppd věděl, že komunikuje s modemem.

crtscts

Zapne hardwarovou kontrolu toku dat. Je-li vaše připojení rychlejší než 9600 (a ono asi je), určitě to tam nechte.

asyncmap 0

Toto číslo je bitová maska, kterou můžete explicitně zakázat přenos znaků s kódem 0–31. Jestliže tak uděláte, budete mít akorát pomalejší přenos. Rozhodně nastavit na 0.

defaultroute

vám nastaví routovací tabulku tak, že jako defaultní gateway máte ppp0 (IP serveru providera na druhé straně připojení). Tento parametr sem psát nemusíte, budete si ale potom muset routovací tabulku nastavit ručně pomocí route add … (viz man route).

/dev/modem

no comment

noipdefault

klasické připojení na internet pomocí modemu funguje tak, že vám provider přiděluje IP adresu dynamicky. Kdyby zde tento parametr nebyl, počítač by se snažil vnutit providerovi IP adresu vlastní.

lock

Způsobí zamknutí /dev/modem, čímž zamezí ostatním programům do něj zapisovat a rušit tak spojení.

Jestliže vše proběhlo v pořádku, měli byste mít přístup na internet. Pokud máte stále problémy, překontrolujte:

  1. máte-li v souboru /etc/resolv.conf správně zadaný DNS server (alespoň jeden řádek nameserver ip_a­dresa_dns_ser­veru)
  2. máte-li správně nastavenou routovací tabulku route(8)
  3. je-li modem opravdu připojen ifconfig(8)

Může také nastat situace, kdy je požadována autentizace protokolem PAP nebo CHAP. V tom případě použijeme chat pouze k navázání spojení (vytočení čísla atd.) a mírně upravíme konfiguraci pppd – konkrétně přidáme následující řádek do /etc/ppp/pap-secrets (resp. /etc/ppp/chap-secrets)

prihlasovacijmeno   *   moctajneheslo

a dále pak spouštíme pppd ještě s dodatečným parametrem name, za nímž následuje přihlašovací jmeno:

root@root# pppd connect "/usr/sbin/chat -f chat_script" 115200
    modem crtscts asyncmap 0 defaultroute /dev/modem
    noipdefault lock name prihlasovacijmeno

Kromě modemového připojování na iternet má pppd ještě mnoho dalších zajímavých schopností. Na závěr bych zmínil jenom možnost propojení dvou počítačů pomocí nullmodemového kabelu. Na jednom počítači spustíte:

root_podpora

/usr/sbin/pppd 115200 local crtscts lock asyncmap 0
    noauth 10.1.1.1:10.1.1.2 /dev/modem

a na druhém

/usr/sbin/pppd 115200 local crtscts lock asyncmap 0
    noauth 10.1.1.1:10.1.1.2 /dev/modem passive

A máte síť po null-modemovém kabelu :-).

Byl pro vás článek přínosný?

Autor článku