Połączenie PPP przez minicom-a.

Autor: Winfried Trümper, winni@xpilot.org
v0.0, 9 Grudnia 1996
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
v1.01, 26 Lipca 1997


Chcesz mieć ładne narzędzie z menu do obsługi PPP? Łatwą w obsłudze i zarazem bardzo zaawansowaną książkę telefoniczną z numerami telefonów twoich dostawców Internet-u? Chcesz widzieć co się dzieje jak się logujesz? Jeśli tak, to ten dokument jest dla ciebie! Dokument ten został napisany w standarcie ISO-8859-2. Oryginał znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO/mini.

1. Wprowadzenie.

PPP stał się standardowym protokołem sieciowym jeśli chodzi o połączenia z Internet-em realizowane poprzez telefon. Odpowiedni demon "pppd" dostarczany jest razem z bardzo prymitywnym narzędziem do dzwonienia, które obsługuje dobrze tylko bardzo proste ustawienia.
Opiszę tutaj alternatywne rozwiązanie na podstawie "minicom-a".

Dokument ten jest krótszą wersją niemieckiego "Internetanbindung mit PPP" www.uni-koeln.de. (Może kiedyś to przetłumaczę - tłumacz).

1.1 Program emulujący terminal - "minicom".

"minicom" jest bardzo wyrafinownym narzędziem służącym do dzwonienia do innych komputerów (dostawców internet-u lub BBS-ów). Ma fajne kolorowe menu, książkę telefoniczną i bardzo rozwinięty język skryptowy. Dlatego też idealnie nadaje się do użycia w połączeniu z "pppd".

Tak przy okazji: Jeśli użyjesz polecenia

/sbin/mgetty /dev/modem

to każdy, kto posiada konto na twoim komputerze może zadzwonić do ciebie (np. używając "minicom-a"). Ale to już inna historia. Przeczytaj dokumentację na temat "mgetty".

1.2 Komentarze.

Jestem zainteresowany tylko tymi komentarzami, które wnoszą coś nowego do tego dokumentu. Nie będę odpowiadał na pytania ogólne dotyczące Linux-a, PPP, SLIP-a czy sieci.

1.3 Znane błędy.

W czasie pisania tego dokumentu, w programach "minicom" i "runscript" oraz w podanej niżej metodzie były błędy.

Wyglada na to, że Miquel van Smoorenburg (autor "minicom-a") jest zbyt zajęty, żeby naprawić te błędy. Tak więc ochotnicy są mile widziani.

2. Dzwonienie przy pomocy minicom-a.

Wiele podręczników dotyczących PPP zaleca wyjść z minicom-a po dodzwonieniu się. Ale naprawdę nie ma potrzeby wychodzenia z tego wygodnego programu.

2.1 Konfiguracja minicom-a.

Wykonaj "minicom -s" i wybierz z menu "Serial port setup". Pierwszą pozycją powinno być "Serial Device" - jest to najważniejsze z ustawień: urządzenie szeregowe, do którego podłączony jest twój modem. (Czy są jacyś ochotnicy, do przeróbki minicom-a tak, żeby obsługiwał kilka urządzeń szeregowych na raz?) Wciśnij <ENTER>, aby potwierdzić i <ESC>, aby wyjść do pierwszego menu. Wybierz "Exit to minicom" i wpisz "atdt99999". Twój modem od razu powinien zacząć wybierać numer i powinieneś usłyszeć "kliknięcie" kiedy modem się dodzwoni. Oczywiście "99999" to nie jest prawidłowy numer telefonu.

2.2 Ręczne startowanie PPP.

Może już próbowałeś zadzwonić do swojego dostawcy Internet-u. Widziałeś takie dziwne znaczki na ekranie po zalogowaniu się (jeśli nie, to wpisz "ppp")? Są one wynikiem programu "ppp" (albo jakiegoś odpowiednika) uruchomionego na drugim końcu linii. Jeśli tak, to możesz uruchomić u siebie demon "pppd" i przeanalizować potem logi systemowe.

Aby uruchomić "pppd" w minicom-ie, możesz zdefiniować nową metodę ładującą (zobacz samemu jak to się robi) albo przedefiniować ustawienie "kermit program" z menu konfiguracyjnego "Filename and paths":

                A - Download directory :
                B -   Upload directory :
                C -   Script directory :
                D -     Script program : /usr/bin/runscript
                E -     Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options

Teraz jak zobaczysz te dziwne znaczki możesz wcisnąć <Alt-K>, aby uruchomić "pppd".

Reszta tego dokumentu zajmuje się automatyzacją logowania i uruchamiania "pppd".

2.3 Analizowanie logów.

Chociaż nie chcę wyjasniać jak ma być konfigurowane PPP, to pokażę małą sztuczkę jak czytać logi. Aby wyciągnąć ważne dla nas informacje z pliku "/var/log/debug" (albo alternatywnego "/var/log/daemon.log") wykonaj polecenie:

                tail -n 40  /var/log/debug |\
                        grep -E " pppd\[[0-9]*\]:" |\
                        sed -e "s/^.*pppd\[/[/" 

Powinieneś zobaczyć coś takiego:

                sent [LCP ConfReq id=0x1 <mru 296>]
                rcvd [LCP ConfRej id=0x1 <mru 296>]

co pokazuje, że wysłaliśmy prośbę o konfigurację, aby ustawić maksymalną jednostę do otrzymania (mru) na 296. Druga strona odrzuciła naszą prośbę ("configuration rejected"). W tym przypadku po prostu usunąłem opcję "mru" z pliku "/etc/ppp/options".

2.4 Skonfiguruj numer telefonu.

Jeśli powyższe się udało, to może chcesz zapisać numer telefonu w książce telefonicznej "minicom-a". Wciśnij <Alt-D>, aby wybrać menu dzwonienia i wybierz "Edit":

                A -  Name                : Xeno
                B -  Number              : 022039697303
                C -  Dial string #       : 1
                D -  Local echo          : No
                E -  Script              : /etc/ppp/login.script
                F -  Username            : ppp-382
                G -  Password            : top-secret
                H -  Terminal Emulation  : VT102
                I -  Backspace key sends : Delete
                J -  Linewrap            : Off
                K -  Line Settings       : Curr 8N1

To jest przykładowa pozycja, której używam do dzwonienia do swojego dostawcy Internet-u. Skrypt /etc/ppp/login.script jest pokazany niżej. Dwie specjalne zmienne są przekazywane do tego skryptu: $(LOGIN) i $(PASS), które są ustawione na identyfikator użytkownika (F) i hasło (G). Ta cecha czyni minicom-a trochę bardziej elastycznym, ponieważ potrzebujesz tylko jednego skryptu, żeby zautomatyzować logowanie się do kilku dostawców.

2.5 Skrypt logujący.

"minicom" uruchamia skrypt logujący, po tym jak otrzyma łańcuch "CONNECT". A dokładniej, "minicom" nie wykonuje tego skryptu samemu, tylko woła do tego zadania narzędzie "runscript" jako podproces.

Poniżej znajduje się przykład jakiego używam dla swojego dostawcy.

                # v1.0, 20.08.96 Winfried Trümper <winni@xpilot.org>
                print ""
                print "Automatic login via /etc/ppp/login.script"
        
                ## odkomentuj jeśli musisz wcisnąć <ENTER>, aby otrzymać prompt
                #send ""
        
                expect {
                        "ogin:"
                        "ogin>"
                        "sername:"
                        "sername>"
                        "NO CARRIER" exit 1
                }
                send "$(LOGIN)"
                expect {
                        "assword:"
                        "assword>"
                        timeout 20
                }
                send "$(PASS)"
                expect {
                        "port"  send "ppp"
                        "Start your PPP now"
                        "}!}!}"
                        timeout 10
                }
                print ""
                print "Now switching into ppp-mode ..."
                print ""

                ! /usr/sbin/pppd  file /etc/ppp/mini_options

                print ""
                print "the command   killall -TERM pppd   terminates pppd"

Możliwość wykonywania programów zewnętrznych przez "runscript" używana jest do uruchamiania "pppd". Skopiuj swój oryginalny plik z opcjami dla ppp do "/etc/ppp/options.ttyS1" (gdzie "ttyS1" musisz zamienić na urządzenie, do którego dołączony jest twój modem) i skasuj wszystkie linie, które są specyficzne dla twojego modemu (takie jak: "connect", "crtscts" albo "modem") z /etc/ppp/options.
Umieść opcje, które powinny być specyficzne dla połączenia ppp przez minicom-a w pliku "/etc/ppp/mini_options". Jedną z tych opcji powinno być

                disconnect "chat '' '\d\d+++\d\dATH\r\c'"

Ta opcja MUSI być ponieważ "pppd" pobiera dane z "stdin" i nie może zawiesić modemu poleceniem "crtscts".

2.6 Zautomatyzowane dzwonienie przy starcie.

Użyj opcji "-d", aby dzwownić pod wskazany numer od razu po uruchomieniu minicom-a.
Możesz też spróbować

                open -sl -- minicom -d 1

Aby wrzucić minicom-a na inną konsolę - zobacz mini-HOWTO Consoles-Many.

2.7 Przyszłe rozszerzenia.

Ponieważ "pppd" jest demonem, więc nie jest on przeznaczony do działania w interakcji czy obserwacji. I to jest w porządku. Przecież używamy systemy "unixowego", nie ?

Standardowym rozwiązaniem jest jakiś "front-end". Są jacyś chętni, do grzebania się z minicom-em?

Fajnymi rozszerzeniami byłyby:

Koniec.

2.8 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl