Previous Next Table of Contents

7. Modemy i Sieci

7.1 Informacja o autorze

Tę sekcję napisał w całości Tomasz Kaźmierski, któremu niniejszym dziękuję!

7.2 Co jest potrzebne do uzyskania połączenia PPP?

Po pierwsze musisz mieć wkompilowaną obsługę protokołu PPP w jądrze, tzn podczas konfiguracji jądra odpowiedz twierdząco na następujące pytanie:

PPP (point-to-point) support (CONFIG_PPP) [N/y/m/?] y

Obsługę protokołu PPP możesz skompilować także jako moduł (zob. Module-HOWTO). W takim przypadku naciśnij ,,m''.

Po drugie musisz zainstalować demona ppp. Znajdziesz go w każdej popularnej dystrybucji Linux'a, lub na serwerze sunsite.icm.edu.pl w katalogu:

        Debian: /pub/Linux/debian/bo/binary/net
        RedHat: /pub/Linux/redhat-contrib/i386
        Slackware: /pub/Linux/slackware/slakware/n3/ppp.tgz

Do testów przyda się też program terminalowy minicom. Znajdziesz go także w każdej dystrybucji.

7.3 Jak połączyć się modemem z TPSA pod numerem 0202122?

To jest chyba najczęściej zadawane pytanie na p.c.o.linux. Jego rozwiązanie jest bardzo proste. Nie będę tu przytaczał jakichś kosmicznych przykładów, a tylko przedstawię najprostszy sposób przyłączenia się do Internet'u. Po bardziej specyficzne parametry odsyłam do PPP-HOWTO. Wszystko starałem się wytłumaczyć łopatologicznie (czyt. krok-po-kroku)

Jak ręcznie zestawić połączenie?

Na początek przypominam nowicjuszom nazewnictwo portów w Linux'ie:

         DOS      Linux
        -----------------
        com1    /dev/cua0
        com2    /dev/cua1
        com3    /dev/cua2
        com4    /dev/cua3

(Hubert: Pozwolę sobie wtrącić, że w 2.1.* a więc i w 2.2.* porty wyglądają tak:

         DOS      Linux
        -----------------
        com1    /dev/ttyS0
        com2    /dev/ttyS1
        com3    /dev/ttyS2
        com4    /dev/ttyS3
Koniec wtrącenia.)

Wybierz właściwy port, do którego podłączony jest modem. Dla modemów zewnętrznych w większości wypadków będzie to /dev/cua1, a dla modemów wewnętrznych /dev/cua2 lub /dev/cua3. W Linux'ie nie określa się modemu jako takiego, tylko wskazuje się port, do którego jest podłączony. Od razu uprzedzam, że jeśli jesteś (nie)szczęśliwym posiadaczem winmodemu to raczej nie będziesz mógł z niego korzystać pod Linux'em. W poniższym opisie będę używał portu /dev/cua1, jako tego, to którego podłączony jest modem. Szybkość modemu to 14440 b/s, ale w parametrze do pppd podaje się prędkość pomiędzy portem, a modemem. W zasadzie jest to prędkość modemu*4, czyli dla 14400b/s jest to 57600b/s , a dla 28800b/s 115200b/s itd.

Następnie proponuję zrobić linka o nazwie "modem" do naszego portu. Takie posunięcie z pewnością ułatwi na życie:

        ln -s /dev/cua1 /dev/modem

Potem uruchom minicom'a, aby przetestować, czy aby wszystkie kabelki są na swoich miejscach i czy jesteśmy w stanie dodzwonić się ręcznie do servera TPSA. Po ukazaniu się terminala wpisujemy

        
        atdp0202122

Po krótkiej chwili powinieneś ujrzeć issue zdalnego hosta i dokonać na nim autoryzacji (username:ppp password:ppp). Jak na razie wszystko jest OK, ale jeśli coś Ci po drodze się popsuło to na 99% wybrałeś zły port lub minicom jest źle poinformowany o nim (zajrzyj do helpa Ctrl-A Z). Po wstukaniu dwa razy ppp na ekranie terminala będą się pokazywać dziwne znaki. To właśnie zdalny host wymaga od Ciebie uruchomienia demona pppd. Wyjdź z minicom'a nie resetując połączenia (Ctrl-A Q). Teraz wpisz taką linijkę:

        pppd /dev/modem 57600 crtscts lock noipdefault defaultroute &

Mówi ona, że Twoje połączenie będzie realizowane przez port COM2 (/dev/cua1) o prędkości (57600 b/s) przy włączonym sprzętowym sterowaniu modemem (crtscts). Dostawca internetu przydzieli Ci dynamiczne IP (noipdefault) , a twój defaultowy routing (okno na świat) będzie ustawiony właśnie na połączenie modemowe.

Jeśli do tego miejsca wszystko było OK , to gratuluję. Powinieneś być w Internecie. Spróbuj sprawdzić, czy masz połączenie z innymi serwerami np pingiem:

        ping 194.181.178.33

Powinieneś także mieć interfejs ppp0 (pokazuje to polecenie "ifconfig"). Może to wyglądać na przykład tak:

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
              UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
              RX packets:12 errors:0 dropped:0 overruns:0
              TX packets:12 errors:0 dropped:0 overruns:0

    ppp0      Link encap:Point-Point Protocol  
              inet addr:194.204.177.31  P-t-P:194.204.177.37  Mask:255.255.255.0
              UP POINTOPOINT RUNNING  MTU:296  Metric:1
              RX packets:7 errors:0 dropped:0 overruns:0
              TX packets:8 errors:0 dropped:0 overruns:0

Jak zautomatyzować połączenie?

Do tego zadania potrzebne sa dwa skrypty, których (jeżeli jesteś początkujący) na 100% nie napiszesz. Dlatego przedstawiam je poniżej, jako prawie gotowe do użycia. "Prawie" dlatego, ponieważ część modemów TPSA w Polsce wstawia spację za słowem "username" i "password", a część nie. Tutaj jest przedstawiona wersja ze spacją. Jeśli skrypt nie działa wyrzuć ją...

   -------------------skrypt /etc/ppp/scripts/ppp-on------------------------
   #!/bin/sh
   TELEPHONE=0202122    
   ACCOUNT=ppp  
   PASSWORD=ppp         
   export TELEPHONE ACCOUNT PASSWORD
   DIALER_SCRIPT=/etc/ppp/scripts/ppp-on-dialer
   exec /usr/sbin/pppd lock modem crtscts /dev/cua1 57600 noipdefault \
   defaultroute connect $DIALER_SCRIPT &
   -------------------------------------------------------------------------

Pojawiła się tu opcja "connect". Wskazuje ona, jaki skrypt należy wykonać, aby dodzwonić się do provider'a. W tym przypadku skrypt nazywa się ppp-on-dialer i znajduje się w katalogu /etc/ppp/scripts/

   -------skrypt /etc/ppp/scripts/ppp-on-dialer UWAGA NA SPACJE!!!----------
   #!/bin/sh
   exec chat -v                                         \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         50                              \
        OK              ATDP$TELEPHONE                  \
        CONNECT         ''                              \
        sername:        $ACCOUNT                        \
        assword:        $PASSWORD

   -------------------------------------------------------------------------

Sprawdź, czy skrypty działają:

        ./ppp-on

Jeśli po wstukaniu tego wyskakuje Ci komunikat "Permission denied", to zrób jako root

        chmod +x ppp-on ppp-on-dialer

Jeśli modem rozłącza się z niewiadomych przyczyn, to spróbuj zmienić TIMEOUT'a z 50 sekund na np. 70.

Jeśli występuje jakiś inny problem, to upewnij się, że na pewno zastosowałeś się do umieszczonych tu rad, a w ostateczności wyślij ostatnie kilka linijek pliku /var/log/messages dotyczących pppd na p.c.o.linux z zapytaniem o co w tym wszytkim chodzi... ;-)

7.4 Jak się wdzwonić, jeśli nasz provider używa do autoryzacji protokołu PAP?

Autoryzacja przez PAP polega na wymianie informacji o użytkowniku poprzez specjalny protokół pomiędzy dwoma partnerami. Nie ma tu więc standardowego pytania o login o password. Te dwa parametry podaje się osobno: w linii poleceń i w specjalnym pliku. Autoryzacje poprzez PAP poznasz po tym, że po dodzwonieniu się do zdalnego systemu minicom'em na terminalu nie pojawią się żadne napisy, a po krótkiej chwili połączenie zostanie zerwane. Jeśli chcesz dowiedzieć sie więcej o ideii protokołu PAP/CHAP zajrzyj do PPP-HOWTO (paragraf 13.)

Gdzie wpisać hasło?

Przy autoryzacji PAP hasło (tu nazywane także sekretem) wpisuje się w pliku /etc/ppp/pap-secrets

Oto wzór takiego pliku:

   ------------------------/etc/ppp/pap-secrets-----------------------------
   # Secrets for authentication using PAP 
   # client     server  secret                  IP addresses
   kazik        *       kazik123                        
   -------------------------------------------------------------------------

"kazik" to jest mój login u provider'a, a "kazik123" to jest hasło. W polu "server" powinna być wpisana nazwa komputera, który dokonuje autoryzacji. Jeśli nie znasz jego nazwy, a masz tylko jednego provider'a to możesz zamiast nazwy wstawić gwiazdkę ("*"). Oznacza ona, że nie obchodzi cię to. W razie, gdy masz wielu providerów dopisujesz kolejne wiersze i wtedy musisz wpisać nazwę hosta. W polu "IP addresses" możesz wpisać lokalny numer IP, jeśli taki został ci przydzielony przez dostawcę Internetu. Jeśli jednak korzystasz z dynamicznego przyznawania IP, to zostawiasz to pole puste. Jeśli połączenie nie chce się nawiązać, a w logach nie możesz się dopatrzeć niczego szczególnego, to sprawdź poprawność wpisów w tym pliku.

Jak ręcznie zestawić połączenie?

Jeśli nie czytałeś paragrafu 7.2.1, to przejrzyj go teraz. Nie będę się powtarzał i podam tylko różnicę pomiędzy dwoma sposobami autoryzacji. Oczywista zmiana jest numer telefonu. Wraz z umową provider podał Ci na pewno numery dostępowe. Aby wykręcić ten numer minicom'em poprzedź go ciągiem znaków "atdp" np:

        atdp427828

"427828" to mój przykładowy numer dostępowy. Następnie jak modemy skończą handshaking (skończą "ćwierkać"), wyjdź z minicoma i odpal pppd:

       pppd /dev/modem 57600 crtscts lock noipdefault defaultroute user kazik &

Ważny tu jest parametr "user", który informuje pppd, jak brzmi twój login u providera (tu jest przykładowe "kazik"). Reszta parametrów jest opisana w paragrafie 7.2.1. Jeśli wszystko poszło OK to powinieneś mieć urządzenie ppp0 (pokazuje to polecenie "ifconfig") np:

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
              UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
              RX packets:69 errors:0 dropped:0 overruns:0
              TX packets:69 errors:0 dropped:0 overruns:0
         
    ppp0      Link encap:Point-Point Protocol  
              inet addr:195.136.0.103  P-t-P:195.136.0.100  Mask:255.255.255.0
              UP POINTOPOINT RUNNING  MTU:296  Metric:1
              RX packets:21 errors:0 dropped:0 overruns:0
              TX packets:21 errors:0 dropped:0 overruns:0

oraz mieć możliwość ping'nięcia jakiegoś hosta np:

        ping 194.181.178.33

Jak wyglądają skrypty?

Oto skrypty, które automatycznie połącza Cię z providerem. Nie zapomnij zmienić swojego login'a !

   -------------------/etc/ppp/scripts/pap-ppp-on---------------------------
   #!/bin/bash
   TELEPHONE=$1
   export TELEPHONE
   DIALER_SCRIPT=/etc/ppp/scripts/pap-ppp-on-dialer
   exec /usr/sbin/pppd /dev/modem 57600 crtscts lock noipdefault defaultroute \
   connect $DIALER_SCRIPT user kazik &
   -------------------------------------------------------------------------

Jako, że ja mam kilka numerów dostępowych, wpisuje numer telefonu jako argument do skryptu. Jeśli Ty masz tylko jeden, to zmień "$1" na swój numer dostępowy.

   -----------------/etc/ppp/scripts/pap-ppp-on-dialer----------------------
   #!/bin/sh
   exec chat -v                                         \
        TIMEOUT         3                               \
        ABORT           '\nBUSY\r'                      \
        ABORT           '\nNO ANSWER\r'                 \
        ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
        ''              \rAT                            \
        'OK-+++\c-OK'   ATH0                            \
        TIMEOUT         40                              \
        OK              ATDP$TELEPHONE                  \
        CONNECT         ''
   -------------------------------------------------------------------------

7.5 Uwagi

Wybieranie pulsowe, czy tonowe?

W moim FAQ przyjąłem, że korzystasz z centrali impulsowej, ponieważ jeszcze nie słyszałem, żeby TPSA wprowadziła wybieranie tonowe. Jeśli jednak jesteś podłączony do centrali tonowej, to zmień ciąg znaków "atdp" przed numerem telefonu na "atdt" np

        atdt0202122

Jeśli coś nie działa, a postąpiłeś zgodnie z opisem, to skontaktuj się ze mną, a ja postaram się Ci pomóc.

Kontakt ze mną

Jeśli masz jakieś zastrzeżenia do tego FAQ koniecznie wyślij swoje uwagi na mój adres kazik@man.koszalin.pl

Post Scriptum

Można ostatnio w sieci znaleźć coraz więcej programów, które prowadząc usera za rączkę pomagają konfigurować połączenie ppp. Taki program, bardzo przypominający dial-up networking z Win95 ma np. KDE. Poza tym np. Debian standardowo jest wyposażany w program pon.


Previous Next Table of Contents