Callback-miniHOWTO Pawe³ Skonecki, e-mail: stona@fizyka.umcs.lublin.pl v1.0, Marzec 2000 Dokument ten opisuje, jak za pomoc± Linuxa ustawiæ po³±czenie zwrotne przy pomocy modemu. Program callbeck opracowa³ Gert Doering, <gert@greenie.muc.de>. Chcia³bym podziêkowaæ Annie za wyrozumia³o¶æ dla pingwinów. ______________________________________________________________________ Spis tre¶ci 1. Wstêp. 1.1 Opinie. 1.2 Rozpowszechnianie. 2. A mo¿e sieæ w domu ... 3. Pierwsze kroki z modemem. 4. Zadzwoñ do Linuxa. 5. Teraz Linux dzwoni do mnie ... 6. Podsumowanie. ______________________________________________________________________ 11.. WWssttêêpp.. 11..11.. OOppiinniiee.. Czekam na wszystkie opinie, czy to dobre, czy z³e, na temat zawarto¶ci tego dokumentu. Stara³em siê, aby informacje w nim umieszczone by³y jak najbardziej pewne i dok³adne. Daj mi znaæ gdy znajdziesz jakie¶ b³êdy. Dziêkujemy ludziom którzy przys³ali by poprawki lub sugestie. Ich wk³ad uczyni³ ten dokument o wiele lepszym, ni¿ gdybym tworzy³ go sam. Wysy³aj komentarze, sugestie i poprawki na adres email autora podany powy¿ej. Nie mam nic przeciwko odpowiadaniu na pytania, jednak radzê najpierw przeczytaæ dokument w ca³o¶ci. 11..22.. RRoozzppoowwsszzeecchhnniiaanniiee.. Copyright ? 1999 by Pawe³ Skonecki. Ten dokument mo¿e zostaæ rozpowszechniany na warunkach ustalonych przez Licencjê Linux Documentation Project. Skontaktuj siê z autorem, je¶li nie jeste¶ w stanie otrzymaæ licencji. Ta dokumentacja jest darmowa. Jest rozpowszechniana z nadziej±, ¿e oka¿e siê u¿yteczna, jednak bez ¿adnej gwarancji. 22.. AA mmoo¿¿ee ssiieeææ ww ddoommuu ...... Wiêkszo¶æ z nas u¿ywa sieci korporacyjnych lub uczelnianych w swoim miejscu pracy. Pojawia siê jednak potrzeba skorzystania z sieci w domu lub w innym miejscu. Mo¿e przecie¿ okazaæ siê i¿ pracownicy bêd±cy w terenie musz± mieæ dostêp do danych znajduj±cych siê w Internecie lub te¿ w sieci firmowej. Mo¿emy mieæ te¿ do czynienia z sytuacj± kiedy firmie bêdzie op³acaæ siê zap³aciæ pracownikom za po³±czenia telefoniczne aby pracowali w domach. S±dzê ¿e optymalnym rozwi±zaniem jest zainstalowanie na serwerze z Linuxem i oprogramowania typu callback. Callback to nic innego jak oddzwanianie pod wskazany numer na koszt firmy. Spróbujê przedstawiæ jego dzia³anie. Osoba posiadaj±ca odpowiednie uprawnienia dzwoni pod numer modemu bêd±cego w serwerze z Linuxem, tam weryfikuje siê po raz pierwszy. Wtedy po stronie u¿ytkownika nastêpuje "zawieszenie modemu" na stan oczekiwania. W tym czasie serwer dzwoni po wskazany numer. U¿ytkownik weryfikuje siê powtórnie. Nastêpuje zestawienie po³±czenia a impulsy bij± po stronie serwera (czyli w firmie), osoba do której oddzwania serwer p³aci jedynie za zainicjowanie po³±czenia. Podwójna weryfikacja oraz dodatkowe parametry w programie callback uniemo¿liwiaj by osoby nie powo³ane wtargnê³y na nasz rachunek. Mo¿na tak¿e ograniczyæ osobom korzystaj±cym z tej us³ugi do dostêp do sieci wewnêtrznej lub te¿ ca³ego Internetu. Callback jest elastyczny i pozwala na wiele opcji w stosunku do osób go u¿ywaj±cych. W poni¿szym mini-HOWTO postaram siê przedstawiæ konfiguracjê serwera callback na Linuxe wyt³umaczê jak dostosowaæ swoj± maszynê do odbierania po³±czeñ. 33.. PPiieerrwwsszzee kkrrookkii zz mmooddeemmeemm.. Aby wszystko zadzia³a³o jak nale¿y potrzebujemy niez³ego modemu do naszego serwera z Linuxem. W tej mierze istniej ,a ró¿ne preferencje administratorów i nie mo¿na wskazaæ tutaj ¿adnej marki jako faworyta. Warto jednak pamiêtaæ przyzakupie o pewnych zasadach jakimi nale¿y siê kierowaæ. · Nie powinni¶my kupowaæ pod ¿adnym pozorem modemów typu WinModem poniewa¿ nie zadzia³aj± one z Linuxem. · Modem zewnêtrzny jest szybszy od urz±dzenia wewnêtrznego poniewa¿ w ograniczonym zakresie korzysta z zasobów komputera. Ich wad± natomiast jest to i¿ zajmuj± one com-a co mo¿e potem utrudniaæ pod³±czanie nastêpnych urz±dzeñ korzystaj±cych z com-ów. · Warto zainwestowaæ modem w standardzie v.90 poniewa¿ daje on mo¿liwo¶æ szybszej pracy chocia¿ nie zawsze siê to udaje to udaje na s³abych ³±czach. · Je¿eli ju¿ modem wewnêtrzny to lepiej z szyna ISA jak PCI poniewa¿ szkoda z³±cza PCI na modem · Nie zaleca siê tak¿e modemów typu Plug&Play, je¿eli ju¿ jest taki nale¿y wy³±czyæ opcjê Plug&Play i nastawiæ w nim wzorki na nastêpnego wolnego coma. Je¿eli mamy ju¿ modem który bêdziemy wykorzystywaæ do komunikacji pomiêdzy serwerem a osobami do niego dzwoni±cymi. Musimy go zainstalowaæ go w systemie. Aby to zrobiæ musimy sprawdziæ na jaki com-ie jest nastawiony modem i czy nie pokrywa siê z ju¿ wykorzystywanym. Je¿eli tak jest to trzeba przestawiæ modem na kolejny wolny com. Instalacja jest prosta i nie powinna nastrêczaæ problemów. Wystarczy ¿e bêdziemy siê trzymaæ zasad jakie istniej ,a w systemie. Aby Linux "zobaczy³" modem nale¿y poprowadziæ po³±czenie symboliczne z com-a do urz±dzenia /dev/modem. Przyk³adowo je¿eli mamy modem na com 2 piszemy: ______________________________________________________________________ ln -s /dev/cua1 /dev/modem ______________________________________________________________________ sprawdzamy teraz komend± ls -l czy wszystko jest w porz±dku: lrwxrwxrwx 1 root root 4 Dec 28 15:28 modem -> cua1 Je¿eli wynik jest jak powy¿ej to oznacza ¿e tak w³a¶nie siê sta³o. Je¿eli modem znajduje siê na innym com-ie winni¶my zastosowaæ siê do poni¿szych zasad i poprowadziæ odpowiednie po³±czenie symboliczne. · /dev/cua0 to com1 · /dev/cua1 to com2 · /dev/cua2 to com3 · /dev/cua3 to com4 Sprawdzamy teraz czy wszystko chodzi przy pomocy minicoma, który powinien znajdowaæ siê w wiêkszo¶ci dystrybucji. Przy jego pomocy dzwonimy pod jakikolwiek numer gdzie znajduje siê modem. Teraz czas na dzwonienie do nas .... 44.. ZZaaddzzwwooññ ddoo LLiinnuuxxaa.. Pierwszym krokiem w udostêpnieniu us³ugi callback na Linuxe jest ustawienie odpowiednich parametrów w j±drze systemu. W tym celu musimy sprawdziæ czy nasze j±dro systemu obs³uguje protokó³ ppp. Je¿eli tak nie jest to powinno siê w kompilowaæ go w j±dro systemu albo pozostawiæ jako modu³ do ³adowania. Nie jest to miejsce na przedstawiane tego problemu. Dlatego te¿ proszê zapoznaæ siê z Kernel- HOWTO. Je¿eli ju¿ mamy odpowiednio przygotowane j±dro czas zabraæ siê za konfiguracjê oprogramowania. W tym celu winni¶my zainstalowaæ na naszym serwerze pakiet o nazwie mgetty-sendfax, poniewa¿ on zawiera w sobie program do oddzwaniania. Nie jest to jego jedyna mo¿liwo¶æ, mo¿e tak¿e wysy³aæ fax-y oraz pracowaæ jako access-server. Tu warto wspomnieæ o pracy callback-u. Kiedy inicjujemy po³±czenie z serwerem nastêpuje pierwotna weryfikacja u¿ytkownika. Poproszony jest on o wpisanie has³a a kiedy to uczyni nastêpuje "zawieszenie" modemu po stronie dzwoni±cego a serwer oddzwania pod wskazany numer zwi±zany z u¿ytkownikiem. Je¿eli nast±pi po³±czenie nastêpuje drugi monit o username oraz has³o. Je¿eliwszystko pójdzie dobrze to po³±czenie zostaje zestawione pomiêdzy komputerem lokalnym i zdalnym (user uruchomi protokó³ ppp po stronie serwera). Tak wiêc ca³a operacja sk³ada siê z dwóch elementów. Mamy wiêc do czynienia z dwoma rodzajami u¿ytkowników: pierwszy to u¿ytkownik do callbacku a drugi to ten kóry ma uruchomiæ protokó³ ppp po stronie serwera. Najpierw zajmijmy siê drugim z nich. Zak³adamy konto o dowolnym username testowo niech to bêdzie user pppuser. pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin Nastêpnie zmieniamy mu has³o. Jak mo¿na zauwa¿yæ nie ma on normalnego shall-a do logowania ale pliczek w /etc/ppp/ppplogin. Musimy go w³asnorêcznie przygotowaæ. Przechodzimy do tego katalogu i przy pomocy jakiegokolwiek edytora tworzymy plik i wprowadzamy odpowiednie parametry np.: vi ppplogin. Wewn±trz niego wpisujemy. #!/bin/sh exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2 gdzie adres 192.168.1.1 to adres serwera w którym jest modem a adres 192.168.1.2 to adres jaki przypisali¶my naszemu modemowi. Pamiêtajmy nadaæ temu plikowi prawo wykonywania. Poniewa¿ ppp domy¶lnie sprawdza co znajduje siê w pliku /etc/ppp/options musimy go stworzyæ aby wpisaæ odpowiednie warto¶ci. Podobnie jak w powy¿szym przypadku tworzymy plik przy pomocy dowolnego edytora i wpisujemy odpowiednio: netmask 255.255.255.0 proxyarp lock crtscts modem Najwa¿niejsza z powy¿szych opcji jest proxyarp, umo¿liwia on wyj¶cie na ¶wiat poprzez modem w serwerze. Jej brak mo¿e byæ korzystny je¿eli nie chcemy aby nasi pracownicy u¿ywali Internetu a jedynie sieci lokalnej. Pozosta³e z nich oprócz netmask (tego nie trzeba t³umaczyæ), dotycz± kontroli modemu. Teraz przechodzimy do konfiguracji modemu w systemie w taki sposób aby zaraz po jego starcie by³ gotowy do pracy czyli odbierania po³±czeñ. Uruchamiamy dowolny edytor a w nim plik /etc/inittab gdzie dopisujemy poni¿sz± linê. s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100 jest ona prawid³owa dla modemów które znajduj± siê na com2, je¿eli jest inaczej poprawiamy j±. Np dla com-a 1 wygl±daæ powinna s0:2345:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0 vt100 Wykonujemy teraz polecenie init q i je¿eli nie mamy informacji o b³êdach w logach sytemu przechodzimy do nastêpnego etapu. Wracamy do katalogu /etc/ppp gdzie tworzymy plik options.ttyS1 (je¿eli mamy modem na com 1 options.ttyS0) a w nim wpisujemy adesy IP. IP_localne:IP_dla_modemu_zdalnego dla naszej sieci bêdzie to 192.168.1.1:192.168.1.2 Mamy ju¿ wiele - przed zadzwonieniem do naszego systemu, sprawdzamy co znajduje siê w pliku /etc/mgetty+sendfax/login.config Najwa¿niejsza jest linia podobna do tej: /AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug Pozosta³e mo¿emy zaznaczyæ znakiem #. Wa¿n± spraw± jest tak¿e nadanie odpowiedniego suida demonowi ppp, tak aby u¿ytkownik pppuser móg³ go uruchomiæ oraz podnie¶æ na nim interfejs. ______________________________________________________________________ chmod u+s /usr/sbin/pppd ______________________________________________________________________ czego efektem bêdzie -rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd Od tego momentu u¿ytkownik pppuser bêdzie móg³ uruchomiæ demona ppp. Warto dopisaæ zmianê preferencji pppd w cronie, u mnie po restarcie systemu dochodzi³o do samoczynnej zmiany preferencji. Aby zweryfikowaæ nasze dokonania dzwonimy pod numer naszego serwera. Je¿eli robimy to z Windows-o'w wywo³ujemy okno terminala a je¿eli wykorzystujemy do tego Linuxa to poprawiamy skrypty z których korzystamy dzwoni±c do naszego provaidera. Logujemy siê do systemu jako pppuser z haslem mu nadanym. Mam nadziejê ¿e wszystko jest w porz±dku. 55.. TTeerraazz LLiinnuuxx ddzzwwoonnii ddoo mmnniiee ...... Mo¿emy dodzwaniaæ siê ju¿ do naszego Linuxa. Pora teraz na to aby on do nas zadzwoni³. Nie wymaga to specjalnego ju¿ wysi³ku wystarczy wyedytowaæ jeden plik. Zanim jednak to zrobimy musimy zebraæ numery telefonów od osób które maj ,a korzystaæ z tej us³ugi. Sprawdzamy teraz czy w katalogu /etc/mgetty+sendfax znajduje siê plik o nazwie callback.config. Je¿eli tam siê znajduje to pozostawiamy go w spokoju. Mo¿na wype³niæ go tre¶ci± ale nie ma najmniejszej potrzeby poniewa¿ jego pusta zawarto¶æ nie ma wp³ywu na funkcjonowanie callbacku. Wa¿ne tylko aby tam by³. Teraz czas na wpisanie numerów telefonów jakie wcze¶niej zebrali¶my. Bêdziemy kreowaæ pseudo u¿ytkowników powi±zanych z numerami ich telefonów. W tym celu wpisujemy do pliku /etc/mgetty+sendfax/login.conf linijkê tekstu podobn± do poni¿szej call - - /usr/sbin/callback - S 123456 gdzie _c_a_l_l to pseudo u¿ytkownik potrzebny do zainicjowania po³±czenia zwrotnego, a linia _/_e_t_c_/_m_g_e_t_t_y_+_s_e_n_d_f_a_x_/ uruchamia program który oddzwania pod wskazany numer (w tym przypadku jest to 123456). Podobnie czynimy z innymi u¿ytkownikami przypisuj±c pseudo u¿ytkownikom poszczególne numery telefonów. Postaram siê teraz wyt³umaczyæ jak ca³± operacja wygl±da w praktyce. Gdy dzwonimy do naszego serwera ten prosi nas o weryfikacjê. Wtedy to logujemy siê jako pseudo u¿ytkownik, w tym przypadku call. Skrypt w naszym komputerze zawesza modem w oczekiwaniu a po³±czenie zostaje przerwane. Program callbeck zaczyna dzia³aæ i oddzwania do nas. Weryfikujemy siê powtórnie jako pppuser zestawiamy po³±czenie oraz postawienie interfejsu ppp na serwerze. I to ju¿ wszystko. Czeka nas teraz skonfigurowanie stacji roboczych pracuj±cych z naszym serwerem. W przypadku Windows operacja jest do¶æ prosta. Instalujemy Dial-up dla naszego numeru dostêpowego a nastêpnie we w³a¶ciwo¶ciach modemu znajdujemy zak³adkê "W³a¶ciwo¶ci" --> Rozszerzone ---> Ekstra gdzie wpisujemy &c0 s0=1 Zamykamy okienko i dzwonimy. Logujemy siê wed³ug opisu powy¿ej. Gdy chcemy zastosowaæ Linux-a, to musimy odwo³aæ siê do skryptów. Trudno jest podaæ jaki¶ jeden dobry skrypt dla naszego Linuxa. Wa¿ne jest to aby mieæ dobrze skonfigurowane ppp w systemie (sprawd¼ to dzwoni±c jako pppuser najpierw przez skrypty). Poni¿ej skrypty napisane przez A. Gó¼dzia. Najlepiej jak wsadzisz wszystko do katalogu /etc/ppp i tam bêdziesz odpala³ swoje skrypty. Nie musisz tego koniecznie robiæ tego w tym miejscu jest to tylko moja sugestia. Dok³adnie o pisaniu skryptów pod Linuxem mo¿esz poczytaæ w PPP-HOWTO. Najpierw jednak plik konfiguracyjny dla demona ppp (przyk³ad dla modemu na comie 2). /etc/options lock defaultroute noipdefault modem /dev/cua1 33600 crtscts debug passive asyncmap 0 I w³a¶ciwe skrypty: · Pierwszy o nazwie ppp-call #!/bin/bash teksta="Polaczenie nieudane" tekstb="Chyba bedziesz polaczony" # /sbin/setserial /dev/cua1 spd_vhi killall -INT pppd 2>/dev/null rm -f /var/lock/LCK* /var/run/ppp*.pid (/usr/sbin/pppd -detach /dev/ttyS1 115200 \ connect "/usr/sbin/chat -v -f /etc/ppp/pppcallback" &) || \ (echo $teksta; ls marsss >/dev/null; exit 1) echo $tekstb exit 0 · Drugi nazwany pppcallback TIMEOUT 60 ABORT 'ERROR' ABORT 'BUSY' ABORT 'NO ANSWER' ABORT 'NO DIALTONE' ABORT '\nVOICE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' ´'OK-+++\c-OK' 'AT&C0S0=1' TIMEOUT 75 OK ATDT5376443 CONNECT '' ogin:-ogin: ppp_pseudouser TIMEOUT 180 CONNECT '' TIMEOUT 20 ogin:-ogin: pppuser sword:-sword ppp Powy¿sze dwa skrypty powinny wystarczyæ dla prawid³owego funkcjonowania ca³o¶ci. Pozostaje teraz odpaliæ ppp-call :) 66.. PPooddssuummoowwaanniiee.. Jak widaæ konfiguracja oddzwaniania nie jest skomplikowana i polega g³ównie na prawid³owym zestawieniu serwera ppp na Linuxie. Nie znam lepszej drogi na zrobienie acces-servera. Przedstawiona konfiguracja jest wynikiem prób i b³êdów, mo¿na zrobiæ j± ca³kowicie inaczej. Dlatego proponujê przejrzenie wszelkiej dokumentacji do tego zagadnienia to jest man pppd, NET3-HOWTO oraz PPP-HOWTO. Callback mo¿e byæ przyjemn± alternatyw± w pracy zdalnej. Inne moje dokumenty znajdziesz ftp://ftp.fizyka.umcs.lublin.pl/pub/priv/stona <ftp://ftp.fizyka.umcs.lublin.pl/pub/priv/stona> Pawe³ Skonecki e-mail: stona@fizyka.umcs.lublin.pl