Callback-miniHOWTO
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.
1. Wstęp.
1.1 Opinie.
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.
1.2 Rozpowszechnianie.
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.
2. A może sieć w domu ...
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ń.
3. Pierwsze kroki z modemem.
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 ....
4. Zadzwoń do Linuxa.
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.
5. Teraz Linux dzwoni do mnie ...
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 call to pseudo użytkownik potrzebny
do zainicjowania połączenia zwrotnego, a linia
/etc/mgetty+sendfax/ 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'
'' AT&FH0
'OK-+++\c-OK' 'AT&C0S0=1'
TIMEOUT 75
OK ATDT5376443
CONNECT ''
ogin:-ogin: ppp_pseudouser
'\nNO CARRIER\r' ''
TIMEOUT 180
'\nRING\r' AT&C1A
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 :)
6. Podsumowanie.
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/stonaPaweł Skonecki
e-mail:
stona@fizyka.umcs.lublin.pl
Wyszukiwarka
Podobne podstrony:
callback pl 6Callback pl (3)Callback plcallback pl 4callback pl 3callback pl 1callback pl 5callback pl 2TI 99 08 19 B M pl(1)bootdisk howto pl 8BORODO STRESZCZENIE antastic plnotatek pl sily wewnetrzne i odksztalcenia w stanie granicznymWSM 10 52 pl(1)amd102 io pl09PPP HOWTO pl 6 (2)bridge firewall pl 3więcej podobnych podstron