7.15. Tworzenie połączeń sieciowych w oparciu o protokoły point-to-point

Rozdział niniejszy dotyczy zagadnień związanych łączeniem się przy pomocy protokołów point-to-point z użyciem protokołu PPP. Wykorzystywany tu program pppd (czyli "demon PPP") jest najbardziej popularnym (czy nie jedynym?) narzędziem tego typu. Połączenia PPP stosowane są zarówno w klasycznych modemowych połączeniach telefonicznych (dial-up), jak i w przypadku innych metod dostępu (xDSL, ISDN, dostęp radiowy).

Rozdział nie jest jednolity: opisano tu różne podejścia do konfiguracji demona pppd. Ich zróżnicowanie wynika w głównej mierze z tego, że program jest cały czas rozwijany, zmieniają się jego opcje i możliwości. Obecnie najwygodniejszą metodą zarządzania konfiguracją i zachowaniem programu pppd jest wywoływanie go w następujący sposób:

pppd call <konfiguracja>
Wywołanie takie spowoduje rozpoczęcie połączenia opisanego w pliku /etc/ppp/peers/<konfiguracja>. Zastosowanie tego mechanizmu pozwala wyodrębnić części wspólne oraz części specyficzne dla różnych połączeń (ma to dużą wagę szczególnie w dzisiejszych czasach, kiedy to jedna maszyna często wykorzystuje wiele różnych metod dostępu do sieci). Mechanizm "pppd call" wykorzystano w opisie konfiguracji połączenia z siecią przez Sferię (Sekcja 7.15.12) oraz opisu konfiguracji systemów GPRS (Sekcja 7.15.14). W systemie Debian standardowo obecna jest nakładka upraszczająca korzystanie z tego mechanizmu - skrypty pon i poff: pierwszy z nich rozpoczyna połączenie i wywoływany jest następująco:
pon <konfiguracja>
Drugi ze skryptów połączenie zamyka.

7.15.1. Instalacja modemu wewnętrznego PCI z chipem Conexant

Jak to opisano w rozdziale Sekcja 3.13, zalecanym rozwiązaniem dla Linuksa jest modem zewnętrzny. Jego instalacja sprowadza się do podłączenia modemu do komputera. Sprawa komplikuje się poważnie jeżeli mamy do czynienia z modemem wewnętrznym, nie będącym "prawdziwym" modemem, a tzw. soft-modemem, wymagającym wsparcia oprogramowania działającego na komputerze. Większość tego typu urządzeń będzie działać tylko pod Windows, ale są chlubne wyjątki.

Należą do nich modemy oparte na układach kanadyjskiej firmy Conexant, takie jak np. Pentagram Hex2 56I. Modem ma postać karty PCI, którą należy włożyć w wolny slot na płycie głównej. Posiada dwa wyjścia na skrętkę telefoniczną, do których w typowy dla modemów sposób podłącza się kabel do gniazdka telefonicznego (wyjście oznaczone jako LINE) i do telefonu (oznaczenie PHONE).

Kolejnym krokiem jest instalacja sterowników. Sterowniki można znaleźć na stronie http://www.linuxant.com/drivers. Sterowniki tworzone są przez firmę Linuksant, nie mającą nic wspólnego z producentem chipsetu, czyli firmą Conexant. Stąd też Linuksant, aby zdobyć finanse na rozwój sterowników zmienił licencję na częściowo płatną. Wersja bezpłatna umożliwia łączenie z prędkościami do 14400 bps, nie obsługuje także funkcji głosowych. Aby wykorzystać pełne możliwości modemu, należy zakupić licencję w cenie około 15 $ za jeden modem.

Dostępne są sterowniki dla dwóch typów modemów - HSF (software modems) i HCF (controlled modems). Pierwsze z nich są tańsze, należy do nich np. wspomniany modem Hex2, do drugiego typu należy np. Pentagram Diablo 56I. Jeżeli nie wiemy, jakiego typu mamy modem, nie należy się przejmować tylko spróbować instalować sterowniki po kolei dla obu typów - jeżeli źle trafimy, instalator poinformuje nas, że mamy modem innego typu. Typ modemu można także sprawdzić za pomocą dostępnego na stronach Linuksant skryptu. Większość współczesnych jąder Linuksa potrafi także poprawnie zidentyfikować typ modemu. Wywołanie komendy lspci dla modemu Hex2 może dać w wyniku np. linię postaci:

0000:00:08.0 Communication controller: Conexant HSF 56k HSFi Modem (rev 01)

Najłatwiej jest wybrać do ściągnięcia wersję binarną sterownika - są one dostępne dla części popularniejszych dystrybucji Linuksa. Należy przy tym zwrócić uwagę na wybranie wersji odpowiedniej dla procesora, jaki jest zainstalowany w komputerze. W szczególności istnieje oddzielna wersja dla procesorów Athlon - sterowniki wykorzystują specyficzne dla procesorów instrukcje MMX, SSE czy 3DNow!. Sterowniki muszą też być dopasowane do konkretnej wersji jądra (można ją sprawdzić przez wydanie komendy uname -r).

Po ściągnięciu odpowiedniego pakietu RPM (w przypadku RedHata) instalujemy go przez wydanie komendy rpm -i <nazwapakietu>. Jeżeli wszystko poszło dobrze, powinniśmy mieć skonfigurowany i działający modem. Link /dev/modem powinien wskazywać na urządzenie /dev/ttySHSF0 lub /dev/ttySHCF0 zależnie od typu modemu (HSF czy HCF).

Pod Debianem należy ściągnąć paczkę 'deb' ze źródłami. Musimy mieć zainstalowany pakiet z plikami nagłówkowymi jądra dla aktualnie używanej wersji jądra. Przykładowo, jeżeli komenda 'uname -r' wypisuje '2.6-11-1-686', to musimy zainstalować pakiet kernel-headers-2.6.11-1-686 (od jądra 2.6.12 jest to pakiet o przykładowej nazwie linux-headers-2.6.14-1-686). Następnie za pomocą komendy 'dpkg -i' instalujemy ściągniętą paczkę ze sterownikami. Skrypt instalacyjny powinien sam wykryć katalog z konfiguracją jądra, w naszym przykładzie byłby to /lib/modules/2.6.11-1-686/build. Akceptujemy zaproponowaną lokalizację, podajemy swój adres e-mail i klucz licencji (FREE - chyba, że zakupiliśmy wersję pełną).

Jeżeli modem nie chce odbierać połączeń przychodzących, powodem może być zły string inicjalizujący wysyłany przez mgetty. Prawidłowy string inicjalizacyjny można podać albo w pliku /etc/mgetty+sendfax/mgetty.config (w Debianie /etc/mgetty/mgetty.config) przez dodanie linii:

init-chat "" \dATQ0V1H0[0d] OK ATS0=0Q0&D2&C1 OK AT&K3 OK ATL0 OK
albo przez podanie parametru do programu mgetty w pliku /etc/inittab. Wówczas odpowiednia linia może mieć postać:
m:345:respawn:/sbin/mgetty -x 0 -m '"" \dATQ0V1H0[0d] OK ATS0=0Q0&D2&C1 OK AT&K3 OK \
ATL0 OK' /dev/modem
(w Debianie zamiast 'm:345' podajemy 'm:23', bo domyślny 'runlevel' to 2). Zobacz też rozdział o konfigurowaniu połączeń przychodzących - Sekcja 7.15.2.

Notatka: Starsze wersje sterowników Conexanta źle współpracowały z jądrami z serii 2.6. Nie można się było dodzwonić do komputera z modemem Conexant (np. sesja zawieszała się po podaniu nazwy użytkownika). Rozwiązaniem było uruchomienie na komputerze odbierającym połączenia jądra z serii 2.4. Nowsze wersje sterowników nie kompilują się w ogóle pod jądrem 2.4 (przynajmniej te z pakietu .deb), za to pod 2.6 działają poprawnie.