Leased Line Mini-HOWTO Autor: Rob van der Putten rob@sput.webster.nl v1.4, 5 Lipca 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 6 Sierpnia 1998 To HOWTO opisuje połączenie Linuxa do linii dzierżawionej. Ten doku­ ment został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.sput.webster.nl/~rob/leased- line.html. ______________________________________________________________________ Spis treści 1. Wprowadzenie 1.1 Co to jest linia dzierżawiona 1.2 Założenia 2. Modem 2.1 Konfiguracja modemu 2.2 Test 2.3 Przykłady 2.3.1 Hi-Tech 2.3.2 Tron DF 2.3.3 US Robotics Courier V-Everything 3. PPPD 3.1 Skrypty 3.1.1 Uruchamianie pppd i utrzymywanie go w działaniu 3.1.2 Ustawianie routingu 3.2 Testowanie 4. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee 11..11.. CCoo ttoo jjeesstt lliinniiaa ddzziieerrżżaawwiioonnaa Linią dzierżawioną jest każde stałe połączenie dwóch punktów (point- to-point, dalej będę nazywał je p-t-p, nie mylić z pppppp - przyp. tłum.), dzierżawione od firmy telekomunikacyjnej lub innej organizacji. Linia dzierżawiona składa się z przewodów, takich jak skrętka, kabel koncentryczny lub światłowód; może też zawierać wszystkie rodzaje dodatkowego osprzętu, jak rdzenie, transformatory, wzmacniacze i regeneratory. Ten dokument opisuje Konfigurację modemu i pppd do użycia dwużyłowej linii dzierżawionej na skrętce. Ten dokument NNIIEE opisuje SLIP, pobierania i instalowania pppd, synchronicznego przesyłania danych i modemów pasma podstawowego (baseband) 11..22.. ZZaałłoożżeenniiaa Zakładam, że masz już działającego pppd. Potrzebny będzie też Minicom lub podobny program do konfiguracji modemów. 22.. MMooddeemm Linia dzierżawiona nie jest podłączona do centrali telefonicznej, nie zapewnia więc napięcia stałego, sygnału wybierania lub zajętości, ani dzwonka. Znaczy to, że twoje modemy będą musiały same poradzić sobie z tą sytuacją. Powinieneś mieć dwa identyczne zzeewwnnęęttrrzznnee modemy obsługujące linię dzierżawioną i ,,głuchy'' tryb pracy. Upewnij się, że twoje modemy naprawdę to potrafią! Twój modem powinien posiadać też odpowiednią dokumentację. Potrzebne będą też: ˇ Dwa w pełni połączone, ekranowane przewody RS232. Ekran powinien być połączony z (metalową częścią - przyp. tłum.) obudową wtyczki (nie z pinem 1) po obu końcach (nie po jednym). ˇ Wtyczka testowa RS232 może się przydać do zastosowań testowych. ˇ Dwie wtyczki RJ11, po jednej na każdy koniec linii. ˇ Podstawowa znajomość komend ,,AT'' 22..11.. KKoonnffiigguurraaccjjaa mmooddeemmuu Ogólna uwaga o konfiguracji modemu i liniach inicjalizujących: Konfiguruj swoje oprogramowanie modemowe takie jak minicom lub (m)getty tak, żeby używało najwyższej możliwej prędkości - 57600 bodów dla 14.400 i 115200 bodów dla 28.800 lub szybszych. Wiele ludzi używa bardzo długich i skomplikowanych linii inicjalizujących, często zaczynających się AT&F i zawierających mnóstwo komend specyficznych dla danego modemu. Jest to niepotrzebne. Większość programów używa takich samych ustawień modemu, a więc czemu nie zapisać tych ustawień do nieulotnej pamięci modemu i używać ,,ATZ'' do inicjalizacji modemu we wszystkich programach? W ten sposób można zamienić lub rozszerzyć modemy bez rekonfiguracji oprogramowania. Większość programów wymaga następujących ustawień: ˇ Stała szybkość transmisji (nie automatyczna) ˇ Dwukierunkowa, sprzętowa kontrola przepływu RTS-CTS (nie x-on/x- off) ˇ 8 bitów, bez parzystości, 1 bit stopu ˇ Modem powinien podawać PPRRAAWWDDZZIIWWYY status DCD (&C1) ˇ Modem NNIIEE powinien ignorować statusu DTR (&D2 lub &D3) Sprawdź te ustawienia za pomocą AT&V lub AT&I[numer] (przeczytaj dokumentację modemu). Ustawienia te nie są identyczne do profilu firmowego (&F), a więc używanie linii inicjalizującej z AT&F nie jest dobrym pomysłem. Dobrą rzeczą jest użycie AT&F tylko wtedy, gdy masz powód żeby sądzić, że ustawienia zapisane w nieulotnej pamięci modemu są bardzo niepoprawne. Jeżeli sądzisz, że znalazłeś odpowiednie ustawienia dla twoich modemów, zapisz je w pamięci nieulotnej komendą AT&W i przetestuj dokładnie protokołem Z-Modem zarówno dla plików tekstowych ASCII, jak i binarnych. Konfiguruj twoje modemy do linii dzierżawionej tylko jeżeli masz pewność, że te ustawienia działają idealnie. Dowiedz się, jak przestawić twój modem w ,,głuchy'' tryb, oraz, co ważniejsze, w tryb linii dzierżawionej - modem może być rekonfigurowany tylko wtedy, gdy nie znajduje się w ,,głuchym'' trybie. Upewnij się, czy napewno ustawiłeś modemy na największą możliwą prędkość. Kiedy modem wejdzie w ,,głuchy'' tryb pracy, będzie ignorował wszystkie komendy ,,AT'' - z tego powodu nie będzie można ustawić jego szybkości do tej ustawionej dla portu szeregowego; będzie używał prędkości skonfigurowanej komendami AT (prędkość ta jest zapisana w rejestrze S komendą AT&W). Teraz skonfiguruj modemy w następujący sposób: ˇ Przełączanie DTR (&D3, to jest czasami rejestr S). To ustawienie jest wymagane przez niektórych provider'ów! ˇ Tryb linii dzierżawionej (&L1 lub &L2, przeczyraj dokumentację modemu) ˇ Automatyczna odpowiedź modemu zdalnego (S0=1), w lokalnym S0=0 ˇ Wyłącz kody rezultatu (Q1, czasami ,,głuchy'' tryb robi to za ciebie). ˇ ,,Głuchy'' tryb (\D1 lub %D2, jest to czasami zworka) W ,,głuchym'' trybie pracy modem będzie ignorował komendy AT (czasami musisz wyłączyć znak ESC (nie ten ESC z klawiatury, tylko ,,+++'' - przyp. tłum)). Zapisz konfigurację do nieulotnej pamięci (&W). 22..22.. TTeesstt Podłącz modemy do dwóch komputerów używając przewodów RS232 i połącz ze sobą modemy za pomocą kabla RJ11. Użyj programu takiego jak Minicom (na Linuxa), procom albo telix (DOS) na obu komputerach, żeby sprawdzić modemy. Powinieneś zobaczyć tekst pisany na jednym komputerze w drugim terminalu i odwrotnie. Jeżli widzisz śmieci, sprawdź prędkość portu i inne ustawienia. Teraz odłącz i podłącz ponownie przewód RJ11. Poczekaj, aż połączenie ponownie się ustali. Odłącz i podłącz ponownie kable RS232, wyłącz i włącz modemy, uruchom ponownie minicoma. Modemy powinny zawsze połączyć się ponownie na najwyższej możliwej prędkości (niektóre modemy mają diody pokazujące prędkość). Sprawdź, czy modemy naprawdę ignorują znak ESC (+++). Jeżeli będzie to potrzebne, wyłącz znak ESC. Jeżeli to wszystko działa, możesz rekonfigurować modemy: wyłącz dźwięk w zdalnym modemie (M0) i ustaw niski poziom głośności w modemie lokalnym (L1). 22..33.. PPrrzzyykkłłaaddyy 22..33..11.. HHii--TTeecchh Lokalnie: ATL1&C1&D3&L2%D1&W&W1 Zdalnie: ATM0&C1&D3&L2%D1S0=1&W&W1 22..33..22.. TTrroonn DDFF Znak ESC powinien być wyłączony za pomocą komendy S2 > 127; Lokalnie: ATL1&L1Q1&C1&D3S2=171\D1&W Zdalnie: ATM0&L2Q1&C1&D3S0=1S2=171\D1&W 22..33..33.. UUSS RRoobboottiiccss CCoouurriieerr VV--EEvveerryytthhiinngg Poniższa sekcja jest oparta na informacjach dostarczonych przez Rolf'a Raar'a. USR Sportster i USR Courier-I nie obsługują linii dzierżawionych. Potrzebna będzie wersja Courier V-everything. Na serwerze USR znajduje się strona ,,wyjaśniająca'' jak skonfigurować Courier'a do linii dzierżawionej. Jednakże jeżeli będziesz postępował zgodnie z tymi wskazówkami, skończysz z modemem kompletnie ,,pozbawionym rozumu'', który nie będzie mógł być kontrolowany lub nadzorowany przez pppd. USR Courier może być konfigurowany przez przełączniki DIP, jednakże najpierw musisz podać mu linię inicjalizacyjną. Po pierwsze, upewnij się, że używa prawidłowego profilu fabrycznego. Inaczej niż większość innych modemów ma ich trzy: &F0, &F1, &F2. Standardowy, którego powinieneś używać, to &F1. Uwaga: jeżeli wyślesz mu AT&F, załaduje &F0! Dla resetowania przy DTR, ustaw bit 0 rejestru S13. Znaczy to, że musisz ustawić S13 na 1. Następnie musisz przestawić go w tryb linii dzierżawionej za pomocą &L1: ATS13=1&L1&W Przełączniki dip powinny być w domyślnych ustawieniach, wyjątkiem są: 3 - WYŁ - Wyłączyć kody wynikowe. 4 - ZAŁ - Wyłączyć komendy offline 5 - ZAŁ dla lokalnego, WYŁ dla zdalnego 8 - WYŁ - ,,Głuchy'' tryb pracy 33.. PPPPPPDD Potrzebny ci będzie pppd (Point to Point Protocol Daemon) i odpowiednia wiedza o jego działaniu. Przeczytaj odpowiednie RFC i Linux PPP HOWTO, jeżeli jest to potrzebne. Ponieważ nie będziesz używał procedury logowania, nie musisz używać (m)getty ani (fałszywego) użytkownika skojarzonego z pppd kontrolującym połączenie. Nie będziesz musiał wybierać numeru, nie będą więc potrzebne żadne skrypty chat. Obwód modemowy i konfiguracja, którą właśnie wykonałeś jest właściwie kablem null-modem. Znaczy to, że będziesz musiał skonfigurować pppd w sposób, w jaki konfigurowałbyś go do kabla null- modem. Dla dobrego połączenia, twoje ustawienia powinny spełniać następujące wymogi: ˇ Krótko po ładowaniu systemu, pppd powinien podnieść sygnał DTR w twoim porcie RS232, poczekać aż włączy się DCD i wynegocjować połączenie. ˇ Jeżeli zdalny system nie działa, pppd powinien czekać, aż stanie się on ponownie dostępny. ˇ Jeżeli jakość połączenia za bardzo spadnie, pppd powinien zresetować modem i ponownie nawiązać połączenie. ˇ Jeżeli proces kontrolujący połączenie, tj. pppd, zginie, program nadzorujący powinien uruchomić go znowu. Zakładam, że modem jest podłączony do COM2, lokalny adres IP to ,,Loc_IP'', a zdalny to ,,Rem_Ip''. Chcemy użyć 576 jako nasze MTU. /etc/ppp/options.ttyS1 powinno wyglądać tak: crtscts mru 576 mtu 576 passive Loc_Ip:Rem_Ip -chap modem -pap persist A więc, jeżeli system lokalny to 192.168.1.1, a system zdalny to 10.1.1.1, /etc/ppp/options.ttyS1 powinien wyglądać następująco: crtscts mru 576 mtu 576 passive 192.168.1.1:10.1.1.1 -chap modem -pap persist options.ttyS1 na zdalnym systemie powinien wyglądać tak: crtscts mru 576 mtu 576 passive 10.1.1.1:192.168.1.1 -chap modem -pap persist Opcja passive limituje numer (ponownych) połączeń. Opcja persist będzie próbowała trzymać pppd uruchomionym w razie rozłączenia, lub jeżeli nie będzie mógł odrazu się połączyć. Jeżeli telnetujesz się dużo podczas transferu plików (FTP lub przeglądanie WWW), możesz użyć mniejszego MTU i MRU, takiego jak 296. System zdalny będzie wtedy czujniejszy. Jeżeli nie będziesz telnetował się podczas FTP, może ustawić MTU i MRU na 1500. 33..11.. SSkkrryyppttyy 33..11..11.. UUrruucchhaammiiaanniiee ppppppdd ii uuttrrzzyymmyywwaanniiee ggoo ww ddzziiaałłaanniiuu Skrypt /usr/local/sbin/PRem_Host.sh poniżej startuje pppd. Musisz uruchomić go ppoo skonfigurowaniu portów szeregowych (zamień Rem_Host na nazwę zdalnego systemu). #!/bin/bash # Opcjonalnie sleep #/usr/bin/sleep 30 ( /usr/sbin/pppd /dev/ttyS1 115200 ) & Może on być uruchamiany ze skryptu konfigurującego kartę sieciową (/etc/init.d/network w systemie Debian), w tym przypadku musisz odkomentować sleep, żeby być pewnym, że porty com zostały skonfigurowane jako pierwsze. Jeżeli używasz setserial, możesz uruchomić go z tego skryptu. Innym sposobem jest uruchomienie go z rc.local. W systemach Debian istnieje katalog /etc/rc.boot/. Według Rolf'a Raar'a, skrypty w tym katalogu są uruchamiane w kolejności alfabetycznej. Skrypt setserial nazywa się 0setserial. Jeżeli wywołasz swój skrypt z pliku o nazwie 2linie-dzierżawione, będzie wykonany po 0setserial. Chociaż opcja persist czyni to powierzchownym, pppd może być też restartowany przez ip-down: #! /bin/bash case $s in /dev/ttyS1) /usr/bin/sleep 30 /usr/local/sbin/PRem_Host.sh & ;; esac Jeżeli pppd zginie, powinien być restartowany opcją w skrypcie ip-up (opcjonalnie). Jeżeli to się nie dzieje, skrypt /usr/local/sbin/test- Rem_Host-ppp robi to za ciebie. Ten skrypt sprawdza, czy zdalny interfejs istnieje - jeżeli nie, spróbuje uruchomić pppd: #!/bin/bash if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null ) then # PPP nie żyje logger "Rem_Host PPP nie żyje! ; uruchomiony ponownie" /usr/local/sbin/PRem_Host.sh & fi Następująca linia w crontab uruchamia powyższy skrypt co 5 minut. Możesz uruchamiać skrypt częsciej, ale ja nie uruchamiałbym go częściej niż co dwie minuty. */5 * * * * /usr/local/sbin/test-Rem_Host-ppp Możesz edytować crontab poleceniem ,,crontab -e''. Zrestartuje on crona po edycji. Używa edytora podanego w zmiennej środowiskowej ,,EDITOR'', która może być ustawiona przez /etc/profile lub /.profile (export EDITOR=Twoj_Ulubiony_Edytor). Niektórzy ludzie uruchamiają pppd z /etc/inittab, ale ja nigdy tego nie testowałem. 33..11..22.. UUssttaawwiiaanniiee rroouuttiinngguu Domyślny routing może zostać ustawiony opcją defaultroute, albo przez skrypt /etc/ppp/ip-up: #! /bin/bash case $2 in /dev/ttyS1) /sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0 ;; esac Ip-up może być też używany do synchronizacji zegara używając netdate. Oczywiście routing ustawiony w ip-up nie musi być domyślnym routingiem. Twoj skrypt ip-up ustawia routing do zdalnej sieci, kiedy ip-up w zdalnym systemie ustawia trasę do twojej sieci. Jeżeli jest nią 192.168.1.0, a interfejsem ppp jest 192.168.1.1, skrypt ip-up na zdalnej maszynie powinien wyglądać podobnie do tego: #!/bin/bash case $2 in /dev/ttyS1) /sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 ;; esac Bity ,,case $2'' i ,,/dev/ttyS1'' są tam na wypadek gdybyś używał więcej niż jednego połączenia ppp. Ip-up będzie uruchamiany za każdym razem kiedy pojawi się połączenie, ale tylko część pomiędzy ,,/dev/ttySx'' i ,,;;'' zostanie wykonana, ustawiając poprawny routing dla poprawnego ttyS. Możesz dowiedzieć się więcej o routingu z sekcji o routingu NET-3-HOWTO. 33..22.. TTeessttoowwaanniiee Przetestuj to wszystko tak jak modemy. Jeżeli działa, wsiądź na rower i przewieź modem na drugą stronę połączenia. 44.. OOdd ttłłuummaacczzaa Jeżeli znajdziesz jakieś błędy, daj mi znać.