# Leased Line Mini-HOWTO

## Autor: Rob van der Putten rob@sput.webster.nl
v1.4, 5 Lipca 1998
Wersja polska: Leszek Urbański tygrys@fidonet.org.pl
v1.0, 6 Sierpnia 1998

To HOWTO opisuje połączenie Linuxa do linii dzierżawionej. Ten dokument został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://www.sput.webster.nl/~rob/leased-line.html.

## 1. Wprowadzenie

## 1.1 Co to jest linia dzierżawiona

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 ppp - 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 NIE opisuje

> SLIP, pobierania i instalowania pppd, synchronicznego przesyłania danych i modemów pasma podstawowego (baseband)

## 1.2 Założenia

Zakładam, że masz już działającego pppd. Potrzebny będzie też Minicom lub podobny program do konfiguracji modemów.

## 2. Modem

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 zewnętrzne 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''

## 2.1 Konfiguracja modemu

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ć PRAWDZIWY status DCD (&C1)
- Modem NIE 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).

## 2.2 Test

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).

## 2.3 Przykłady

### Hi-Tech

Lokalnie:

> ATL1&C1&D3&L2%D1&W&W1

Zdalnie:

> ATM0&C1&D3&L2%D1S0=1&W&W1

### Tron DF

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

### US Robotics Courier V-Everything

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

## 3. PPPD

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.

## 3.1 Skrypty

### Uruchamianie pppd i utrzymywanie go w działaniu

Skrypt `/usr/local/sbin/PRem_Host.sh` poniżej startuje pppd. Musisz uruchomić go po 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.

### Ustawianie routingu

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.

## 3.2 Testowanie

Przetestuj to wszystko tak jak modemy. Jeżeli działa, wsiądź na rower i przewieź modem na drugą stronę połączenia.

## 4. Od tłumacza

Jeżeli znajdziesz jakieś błędy, daj mi znać.