Linux AX25-HOWTO, Radio Amatorskie.
Terry Dawson, VK2KTJ, terry@perf.no.itg.telecom.com.au.
v1.4, 2 Marca 1997.
BBeenneeddiicctt PP.. BBaarrsszzcczz,, KKBB22QQZZVV ppoosseeiiddoonn@@zziipplliinnkk..nneett -- ttłłuummaacczzee
nniiee nnaa ppoollsskkii,, ww11..44..
DDaattaa ttłłuummaacczzeenniiaa:: 2288 kkwwiieettnniiaa,, 11999977..
System Operacyjny Linux jest chyba jedynym na świecie systemem opera
cyjnym, który szczyci się standardową i rodzimą obsługą protokołu
AX.25 dla packet radio używanego przez operatorów Radia Amatorskiego
po całym świecie. Dokument ten jest poświęcony temu jak zainstalować i
skonfigurować tę obslugę.
______________________________________________________________________
Table of Contents:
1. Wstęp
1.1. Zmiany w stosunku do poprzednich wersji
1.2. Inne dokumentacje na ten temat
2. Gdzie znaleźć najnowszą wersję tego dokumentu
3. Protokoły dla Packet Radio a Linux
3.1. Jak to wszystko działa?
4. Składniki oprogramowania AX.25/NetRom.
4.1. Gdzie znaleźć jądro, narzędzia i zespół programów
narzędziowych?
4.1.1. Źródła jądra
4.1.2. Narzędzia sieciowe
4.1.3. Programy narzędziowe AX.25
5. Instalacja oprogramowania AX.25/NetRom.
5.1. Kompilacja jądra.
5.1.1. Co jest nowego w jądrach 2.0.*+ModuleXX i 2.1.* ?
5.2. Narzędzia do ustawiania sieci
5.2.1. Budowa standardowej wersji net-tools.
5.3. Pogramy narzędziowe AX.25
6. Najpierw o znakach radioamatorkich , adresach, itp.
6.1. Czym są owe T1, T2, T3 i inne rzeczy?
6.2. Parametry, które dają się konfigurować w trakcie pracy.
7. Konfigurowanie portu AX.25.
7.1. Jak utworzyć plik /etc/ax25/axports?
7.2. Jak utworzyć interfejsy sieciowe AX.25?
7.2.1. Jak dołączyć urządzenie KISS?
7.2.1.1. Konfigurowanie urządzeń TNC o dwóch portach.
7.2.2. Jak doczepić urządzenie Baycom
7.2.3. Jak ustawić parametry dostępu do kanału AX.25?
7.2.4. Jak doczepić urządzenie DźwiękoModem?
7.2.4.1. Konfigurowanie karty dźwiękowej.
7.2.4.2. Jak ustawić interfejs DźwiękoModemu?
7.2.4.3. Jak ustawić parametry dostępu do kanału AX.25?
7.2.4.4. Ustalenie poziomu audio i dostrojenie sterownika
7.2.4.5. Przygotowanie części AX.25 jądra do wykorzystania
DźwiękoModemu.
7.2.5. Jak dołaczyć urządzenie z kartą PI?
7.2.6. Jak doczepić urządzenie z kartą PacketTwin.
7.2.7. Jak doczepić generyczne urządzenie SCC?
7.2.7.1. Gdzie uzyskać i jak zbudować pakiet do narzędzi
konfiguracyjnych?
7.2.7.2. Jak skonfigurować sterownik do twojej karty?
7.2.7.2.1. Ustawienie parametrów sprzętu.
7.2.7.3. Konfiguracja kanału.
7.2.7.4. Używanie sterownika.
7.2.7.5. Narzędzia 'sccstat' oraz 'sccparam'.
7.2.8. Jak utworzyć urządzenie BPQ z ethernetem?
7.2.9. Ustawienie węzła BPQ do współpracy z obsługą AX.25 pod
Linuxem.
7.3. Ustawienie parametrów operacyjnych dla interfejsu AX.25
7.4. Ustawieniu routingu AX.25.
8. Ustawianie interfejsu AX.25 do pracy w TCP/IP.
9. Ustawienie portu dla NetRom.
9.1. Edycja pliku /etc/ax25/nrports
9.2. Ustawienie pliku /etc/ax25/nrbroadcast
9.3. Jak utworzyć interfejs sieciowy dla NetRom.
9.4. Odpalenie demona NetRom.
9.5. ustawienie routingu dla NetRom
10. Ustawienie interfejsu NetRom dla pracy w TCP/IP.
11. Ustawienie portu Rose
11.1. Ustawienie pliku /etc/ax25/rsports.
11.2. Jak doczepić sieciowy interfejs Rose?
11.3. Ustawienie routingu dla Rose.
12. Łączności AX.25/NetRom/Rose.
13. Ustawienie Linuxa do przyjmowania łączności.
13.1. Edycja pliku /etc/ax25/ax25d.conf.
13.2. Prosty przykład pliku ax25d.conf file.
13.3. Uruchamianie demona ax25d.
14. Ustawienie węzła.
14.1. Utworzenie pliku /etc/ax25/node.conf.
14.2. Utworzenie pliku /etc/ax25/node.perms.
14.3. Ustawienie węzła, aby był uruchamiany z ax25d.
14.4. Ustawienie węzła, aby był uruchamiany z 'inetd'.
15. Ustawienie programu axspawn.
15.1. Utworzenie pliku /etc/ax25/axspawn.conf.
16. Ustawienie PMS.
16.1. Utworzenie pliku /etc/ax25/pms.motd.
16.2. Utworzenie pliku /etc/ax25/pms.info.
16.3. Kojarzenie znaków AX.25 z kontami użytkowników
16.4. Dodanie PMS do pliku /etc/ax25/ax25d.conf.
16.5. Sprawdzenie PMS'a
17. Ustawienie programów user_call.
18. Kojarzenie znaków AX.25 z kontami użytkowników Linuxa.
19. Jak połączyć sieciowe oprogramowanie NOS z jądrem linuxa?
19.1. Łączenie NOS-a i Linuxa za pomocą 'fajki'.
20. Zapisy w pliku /proc.
21. Przykładowe konfiguracje.
21.1. Mała sieć z linuxem jako routerem dla lokalnej sieci radiowej
21.2. Konfiguracja przykładowa dla bramki z enkapsulacją IPIP.
22. Programowanie warstwy sieciowej AX.25, NetRom i Rose.
22.1. Rodziny adresów.
23. Pliki nagłówkowe.
23.1. Kwestia znaków i przykłady.
24. Dyskusja związana z Radiem Amatorskim i Linuxem.
25. Podziękowania.
26. Prawa autorskie.
27. Od tłumacza.
27.1. Podziękowania.
______________________________________________________________________
11.. WWssttęępp
Dokument ten był początkowo załącznikiem do HAM-HOWTO ale urósł za
bardzo, aby można go było w ten sposób nadal pisać. Dokument ten
opisuje w jaki sposób zainstalować i skonfigurować rodzimą obsługę
protokołów AX25, NetRom oraz Rose na Linuxie. Podano tutaj kilka
typowych konfiguracji, które mogą posłużyć jako model do dalszej
pracy.
Wersje protokołów radia amatorskiego pod Linuxem są bardzo elastyczne.
Dla ludzi, którzy nie są zbytnio zapoznani z systemem operacyjnym
Linux proces konfiguracji wydawać się może uciążliwy i skomplikowany.
Zajmie ci to trochę czasu zanim zrozumiesz w jaki sposób wszystko ze
sobą pasuje. Konfiguracja jest bardzo trudna jeśli wpierw nie
zapoznasz się z Linuxem ogólnie. Nie oczekuj, że uda ci się przejść z
jakiegoś środowiska do Linuxa bez zapoznania się uprzednio z samym
Linuxem.
11..11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniicchh wweerrssjjii
DDooddaattkkii..
dołączyłem informacje o łatce dla modułów. Dodałem parę ogólnych
informacji o strukturze jądra.
PPoopprraawwkkii..
Poprawiłem konfiguracje ax25d - podziękowania dla John Tanner,
VK2ZXQ. Poprzestawiałem mnóstwo rzeczy, powinno teraz być
bardziej logicznie.
DDoo zzrroobbiieenniiaa..
Poprawić sekcję o SCC, obecna jest chyba zła. Rozwinąć sekcję
programowania. Dodać odnośniki do dokumentacji źródeł AX25 i
NetRom.
11..22.. IInnnnee ddookkuummeennttaaccjjee nnaa tteenn tteemmaatt
Jest wiele związanych z tym tematem dokumentów. Jest sporo dokumentów
traktujących o sprawach sieciowych pod Linuxem w sposób bardziej
ogólny, które bardzo polecam ponieważ pomogą ci one w twoich wysiłkach
i dadzą ci głebszy wgląd w inne możliwe konfiguracje.
Oto one:
HAM-HOWTO
Ethernet-HOWTO
NET-3-HOWTO
22.. GGddzziiee zznnaalleeźźćć nnaajjnnoowwsszząą wweerrssjjęę tteeggoo ddookkuummeennttuu
Najlepszym miejscem do znalezienia ostatniej wersji tego dokumentu
jest Archiwum Linux Documentation Project. Linux Documentation Project
prowadzi Web Server i dokument niniejszy pojawia się tam jako The
AX25-HOWTO . Możesz
też skontaktować się ze mną ale zwykle przekazuję ostatnie wersje tego
dokumentu koordynatorowi projektu LDP, więc jeśli go tam nie ma to są
duże szanse, że jeszcze go nie skończyłem.
33.. PPrroottookkoołłyy ddllaa PPaacckkeett RRaaddiioo aa LLiinnuuxx
Protokół _A_X_._2_5 oferuje dwa tryby operacji: connected i connectionless.
Używany jest albo do połączeń typu stacja-do-stacji albo jako medium
dla innych protokołow takich jak TCP/IP lub NetRom.
Podobny jest w swej strukturze do X.25 level 2 z pewnymi
modyfikacjami, które czynią go bardziej użytecznym do pracy w
środowisku radia amatorskiego.
Protokół _N_e_t_R_o_m jest próbą pełnego protokołu sieciowego i w swej
najniższej warstwie używa AX.25 jako protokołu typu datalink.
Dostarcza on sieciowej warstwy, która jest adaptowaną formą AX.25.
Protokół NetRom cechuje się dynamicznym routingiem, posiada też
funkcję pseudonimów dla węzłów.
Protokół _R_o_s_e został wynaleziony i po raz pierwszy zastosowany przez
Tom'a Moulton, W2VY, i jest wariacją protokołu X.25 w warstwie packet.
Pomyślany jest tak, że AX.25 jest jego warstwą typu datalink. Sam
również dostarcza warstwę sieciową. Adresy Rose przyjmują formę 10
cyfrowych numerków. Pierwsze cztery cyfry stanowią Data Network
Identification Code (DNIC) i wzięte zostały z załącznika B z zaleceń
CCITT X.121. Więcej informacji na temat protokołu Rose można uzyskać z
Serwera RATS.
Początkowo, wczesne oprogramowanie AX.25 współpracujące z jądrem
Linuxa wypracował Alan Cox. Następnie Jonathon Naylor przejął
rozwijający się projekt dodając obługę NetRomu i Rose; obecnie on
właśnie zajmuje się opracowywaniem źródeł AX.25 współpracujego z
jądrem Linuxa. DAMA zostało napisane przez Joerg Reuter. Obsługę karty
dźwiękowej jako modemu oraz modem Baycom dodał Thomas Sailor. Programy
narzędziowe AX.25 są obecnie prowadzone przeze mnie.
Linux obsługuje TNC w trybie KISS (Terminal Node Controllers), kartę
Ottawa PI, kartę Gracillis PacketTwin oraz inne oparte na scalaku SCC
Z8530, modem Baycom zarówno seryjny jak i równoległy. Nowy, od
Tomasza, sterownik DźwiękoModemu obsługuje karty dźwiękowe SoundBlaser
oraz te zbudowane w oparciu o Crystal chipset.
Programy użytkownika zawierają prosty PMS (Personal Message System),
program latarnie, liniowy program 'call' do połaczeń, 'listen'
przykładowy program do uchwycenia surowych ramek AX.25 na poziomie
interfejsu, oraz programy do konfiguracji NetRomu. Załączono również
program, ktory jest jakby serwerem AX.25 przechwytującym i
rozprowadzającym wchodzące połączenia; jest też demonik dla NetRomu,
który wykonuje całą czarną robotę dla obsługi protokołu NetRom.
33..11.. JJaakk ttoo wwsszzyyssttkkoo ddzziiaałłaa??
AX.25 pod Linuxem jest zupełnie nową implementacją. Choć na pozór
wygląda podobnie do NOS, BPQ lub innych implementacji AX.25 to jednak
nie przypomina żadnej z nich ani nie jest identyczną z żadną z nich.
AX.25 pod Linuxem można skonfigurować tak, że będzie zachowywać się
niemalże tak jak inne implementacje AX.25 ale proces konfiguracyjny
jest bardzo odmienny.
Aby dopomóc ci w sposobie myślenia przy konfigurowaniu, sekcja ta
stara się wyjaśnić niektóre strukturalne cechy AX.25 oraz umieszcza je
w ogólnej strukturze Linuxa.
UUpprroosszzcczzoonnyy sscchheemmaatt wwaarrssttww pprroottookkoołłóóww ssiieecciioowwyycchh.
-----------------------------------------------
| AF_AX25 | AF_NETROM | AF_INET | AF_ROSE |
|=========|===========|=============|=========|
| | | | |
| | | TCP/IP | |
| | ---------- | |
| | NetRom | | Rose |
| -------------------------------------
| AX.25 |
-----------------------------------------------
Schemat ten ilustruje poprostu, że NetRom, TCP/IP i Rose wszystkie
razem rezydują na protokole AX.25 ale że każdy z nich traktowany jest
osobno u poziomu programowania na interfejsie. Nazwy 'AF' to nazwy
nadawane dla _A_d_d_r_e_s_s _F_a_m_i_l_y każdego z tych protokołów podczas pisania
dla nich programów. Ważne tutaj jest to, że konfiguracja urządzenia
AX.25 kluczowo wpływa na to jak będą konfigurowane NetRom, Rose oraz
TCP/IP.
SScchheemmaatt mmoodduułłóóww ww iimmpplleemmeennttaaccjjii ssiieecciioowweejj LLiinnuuxxaa
----------------------------------------------------------------------------
User | Programs | call node || Daemons | ax25d mheardd
| | pms mheard || | inetd netromd
----------------------------------------------------------------------------
| Sockets | open(), close(), listen(), read(), write(), connect()
| |------------------------------------------------------
| | AF_AX25 | AF_NETROM | AF_ROSE | AF_INET
|------------------------------------------------------------------
Kernel | Protocols | AX.25 | NetRom | Rose | IP/TCP/UDP
|------------------------------------------------------------------
| Devices | ax0,ax1 | nr0,nr1 | rose0,rose1 | eth0,ppp0
|------------------------------------------------------------------
| Drivers | Kiss PI2 PacketTwin SCC BPQ | slip ppp
| | Soundmodem Baycom | ethernet
----------------------------------------------------------------------------
Hardware | PI2 Card, PacketTwin Card, SCC card, Serial port, Ethernet Card
----------------------------------------------------------------------------
Ten schemat jest troszeczkę bardziej ogólny od pierwszego. Stara się
on ukazać zależność pomiędzy programami narzędziowymi, jądrem oraz
sprzętem. Pokazuje też zależność pomiędzy interfejsem programowania
gniazd dla aplikacji, właściwymi modułami protokołów, interfejsami
sieciowymi jądra, oraz sterownikami urządzeń. Każdy element schematu
polega na tym elemencie, który jest poniżej niego samego i konfigu
rację trzeba rozpoczynać od samego dołu w górę. Więc dla przykładu,
jeśli chesz odpalać program _c_a_l_l to musisz również skonfigurować
sprzęt, następnie upewnić się, że jądro posiada odpowiedni sterownik
urządzenia, dalej musisz stworzyć właściwy interfejs sieciowy oraz, że
jądro zawiera właściwy protokół, który oferuje odpowiedni dla programu
_c_a_l_l interfejs programowania. W takiej hierarchii starałem się też
rozłozyć ten dokument.
44.. SSkkłłaaddnniikkii oopprrooggrraammoowwaanniiaa AAXX..2255//NNeettRRoomm..
Oprogramowanie AX.25 składa się z trzech części: źrodeł jądra,
narzędzi do konfiguracji sieci oraz programów narzędziowych.
Wersje jądra Linuxa 2.0.xx zawierają w sobie pierwotnie sterowniki dla
AX.25, NetRom, dla kart Z8530 SCC, PacketTwin i Gracillis. Zostały one
znacząco udoskonalone w jądrach 2.1.xx. Niestety, pozostała część
jądra 2.1.* czyni je bardzą chwiejnymi i nie nadają sie w takim stanie
do załączenia w stabilnych wersjach jąder. Aby zaradzić temu
problemowi, Jonathon Naylor przygotował zespół łatek, które oblugę
protokołów radia amatorskiego w jądrach 2.0.xx wynoszą do poziomu
standardu jąder 2.1.*. Jest to bardzą łatwe w zaaplikowaniu i
wprowadza wachlarz usług, które są nieobecne w standardowych jądrach,
np. obługę Rose.
44..11.. GGddzziiee zznnaalleeźźćć jjąąddrroo,, nnaarrzzęęddzziiaa ii zzeessppóółł pprrooggrraammóóww nnaarrzzęęddzziioowwyycchh??
44..11..11.. ŹŹrróóddłłaa jjąąddrraa
Źródła jądra należy szukać w jego zwyczajnym miejscu:
Obecna kopia zespołu łatek według Jonathon'a znajduje się na:
44..11..22.. NNaarrzzęęddzziiaa ssiieecciioowwee
Ostatnia wersja _a_l_p_h_a standardowych narzędzi sieciowych Linuxa
obsługuje AX.25 i NetRom i można ją znależć tutaj:
lub
ftp://ftp.linux.org.uk/pub/linux/Networking/base/net-
tools-1.32-alpha.tar.gz
Ostani pakiet ipfwadm można znaleźć tu:
44..11..33.. PPrrooggrraammyy nnaarrzzęęddzziioowwee AAXX..2255
Istnieją dwie odmienne żyły programów narzędziowych AX.25. Jedna
przeznaczona jest do pracy z jądrami 2.0.* a druga albo do jąder 2.1.*
lub do kombinacji: jądro 2.0.28+łatka module10. Numer wersji pakietu
ax25-utils wskazuje na najstarszą wersję jądra, z którą mogą pracować.
Wybierz sobie taką wersję pakietu ax25-utils, która będzie pracować z
jądrem twojego systemu.
Programy narzędziowe dla 2.1.22 i późniejszych, oraz ax25-utils+module
można znaleźć na domowej stronie Jonathon'a Naylor:
ftp://ftp.cs.nott.ac.uk/jsn/ax25-utils-2.1.22b.tar.gz
lub na:
ftp://sunsite.unc.edu/pub/Linux/apps/ham/ax25/ax25-utils-2.1.22b.tar.gz
Starsze narzędzia, zdolne do pracy z niepołatanym jądrem 2.0.29
nazywają się ax25-utils-2.0.12c.tar.gz w tym samym miejscu.
55.. IInnssttaallaaccjjaa oopprrooggrraammoowwaanniiaa AAXX..2255//NNeettRRoomm..
Aby w sposób udany zainstalować obsługę AX.25/NetRom na systemie Linux
należy skonfigurować i zainstalaować właściwe jądro a następnie
programy narzędziowe AX.25.
55..11.. KKoommppiillaaccjjaa jjąąddrraa..
Jeśli jesteś już zaznajomiony z kompilowaniem jądra na Linuxie to
możesz pominąć tę sekcję, upewnij się tylko, że wybrałeś właściwe
opcje dla jądra. Jeśli nie, to czytaj dalej.
Normalnie, źródła jądra należy rozpakowywać będąc w katalogu /usr/src
do podkatalogu zwanego linux. Aby to uczynić należy się zalogować jako
root a następnie wykonać takie czynności:
# cd /usr/src
# mv linux linux.old
# tar xvfz linux-2.0.29.tar.gz
# tar xvfz ax25-module-12.tar.gz
# patch -p0 < /usr/src/ax25-module-12/ax25-2.0.29-2.1.22.diff
# cd linux
Po tym jak rozpakowałeś i połatałeś jądro, musisz odpalić skrypt
konfiguracyjny i zaznaczyć opcje, które odpowiadają układowi twojego
sprzętu oraz te, które chcesz, aby były obecne w jądrze. Wystarczy
napisać:
# make config
Jeśli wolisz metodę opartą o menu to można też spróbować:
# make menuconfig
Opiszę tutaj metodę zasadniczą, a ty wybierz taką jaka ci najbardziej
odpowiada. W obu przypadkach zostaniesz postawiony wobec pytań, na
które trzeba odpowiedzieć "tak" lub "nie". (Zauważ, że można też
odpowiedzieć naciśnięciem "M" jeśli używaż modułów w Linuxie. Dla
uproszczenia jednak przyjmuję, że ich nie używasz, więc dokonaj
właściwych poprawek jeśli jest przeciwnie.)
Najbardziej zasadniczymi opcjami dla skonfigurowania AX.25 są:
Code maturity level options --->
...
[*] Prompt for development and/or incomplete code/drivers
...
General setup --->
...
[*] Networking support
...
Networking options --->
...
[*] TCP/IP networking
[?] IP: forwarding/gatewaying
...
[?] IP: tunneling
...
[?] IP: Allow large windows (not recommended if <16Mb of memory)
...
[*] Amateur Radio AX.25 Level 2
[?] Amateur Radio NET/ROM
[?] Amateur Radio X.25 PLP (Rose)
...
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[?] BAYCOM ser12 and par96 driver for AX.25
[?] Soundcard modem driver for AX.25
[?] Soundmodem support for Soundblaster and compatible cards
[?] Soundmodem support for WSS and Crystal cards
[?] Soundmodem support for 1200 baud AFSK modulation
[?] Soundmodem support for 4800 baud HAPN-1 modulation
[?] Soundmodem support for 9600 baud FSK G3RUH modulation
[?] Serial port KISS driver for AX.25
[?] BPQ Ethernet driver for AX.25
[?] Gracilis PackeTwin support for AX.25
[?] Ottawa PI and PI/2 support for AX.25
[?] Z8530 SCC KISS emulation driver for AX.25
...
Opcje, które oznakowałem jako '*' to te, na które musisz odpowiedzieć
'Y' - tak. Reszta jest zależna od sprzętu, jaki posiadasz oraz od
opcji, które sobie życzysz. Niektóre z tych opcji są opisane trochę
poźniej, więc jeśli nie wiesz jeszcze czego chcesz to czytaj dalej a
potem tutaj wróć.
Po skończeniu konfiguracji jądra powinieneś teraz gładko skompilować
jądro:
# make dep
# make clean
# make zImage
Upewnij się, aby skopiować plik arch/i386/boot/zImage tam gdzie być
powinien oraz zrób edycje /etc/lilo oraz restartuj lilo, abyś fakty
cznie odpalił system z nowego jądra.
55..11..11.. CCoo jjeesstt nnoowweeggoo ww jjąąddrraacchh 22..00..**++MMoodduulleeXXXX ii 22..11..** ??
Jądra 2.1.* zawierają udoskonalone wersję niemalże wszyskich
protokołów oraz sterowników. Najbardziej znaczące nowinki to:
modularyzacja
protokoły i sterowniki zostały zmodularyzowane tak, że można nimi do
woli żąglować poleceniami insmod, rmmod. Redukuje to wymogi pamięciowe
dla jądra przy sporadycznie używanych modułach oraz sprawia, że
polowanie na pluskwy i pielęgancja są łatwiejsze.
wszystkie sterowniki są teraz sterownikami sieciowymi
wszelkie urządzenia jak Baycom, SCC, PacketTwin, Gracillis itp.
oferują teraz normalny interfejs sieciowy, tzn. wyglądają teraz tak
jak sterownik Ethernetu; nie wyglądają już tak jak TNC w trybie KISS.
Na życzenie, można zbudować interfejs kiss do tych urządzeń przy
pomocy programiku 'net2kiss'.
usunięto pluskwy
wiele pluskw zostało wykrytych i zniszczonych dodano też do
sterowników i protokołów sporo nowych cech i funkcji.
55..22.. NNaarrzzęęddzziiaa ddoo uussttaawwiiaanniiaa ssiieeccii
Teraz, po wykompilowaniu jądra, powinieneś również skompilować nowe
narzędzia do konfiguracji sieci. Przy ich pomocy będziesz mógł
manipulować interfejsami sieciowymi oraz dodawać routing do tablic
routingowych.
Nowa wersja _a_l_p_h_a standardowego pakietu net-tools zawiera obsługę
AX.25 i NetRom. Sprawdzałem to i wydaje się, że u mnie działa to
świetnie.
55..22..11.. BBuuddoowwaa ssttaannddaarrddoowweejj wweerrssjjii nneett--ttoooollss..
Nie zapomnij przeczytać pliku Readme i zastosować się to wszelkich tam
podanych wskazówek. Czynności jakie ja wykonałem, by skompilować net-
tools to:
# cd /usr/src
# tar xvfz net-tools-1.32-alpha.tar.gz
# cd net-tools-1.32-alpha
# make config
W tym stadium zaoferowane ci zostaną pytania podobnie jak przy kompi
lacji jądra. Upewnij się, aby zaznaczyć obsługę jakichkolwiek pro
toków, które zamierzasz używać.W razie, gdybyś nie wiedział co
odpowiedzieć, zaznacz "Y".
Net-tools powinny skompilować się gładko ze źródłami jądra bez żadnych
ostrzeżeń. gdy kompilacja ustanie, wówczas wydaj polecenie:
# make install
to zainstaluje programy w ich właściwe miejsca.
Jeśli planujesz używać usługę IP firewall to potrzebujesz ostatnich
narzędzi ipfwadm do administracji ściany ogniowej. Narzędzie to
podmienia starsze ipfw, które nie pracuje już z nowszymi jądrami.
Programik ipfwadm skompilowałem w taki sposób:
# cd /usr/src
# tar xvfz ipfwadm-2.0beta2.tar.gz
# cd ipfwadm-2.0beta2
# make install
# cp ipfwadm.8 /usr/man/man8
# cp ipfw.4 /usr/man/man4
55..33.. PPooggrraammyy nnaarrzzęęddzziioowwee AAXX..2255
Po skompilowaniu i restarcie nowego jądra, potrzebujesz jeszcze
skompilować programy narzędziowe. Aby skompilować programy narzędziowe
należy wykonać takie czynności:
# cd /usr/src
# tax xvfz ax25-utils-2.1.22b.tar.gz
# cd ax25-utils-2.1.22b
# make config
# make
# make install
Pliki zostaną zainstalowane pierwotnie do katalogu /usr w podkatalogi
takie jak: bin, sbin, etc and man.
Jeśli pokażą ci się ostrzeżenia podobnej treści:
gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c
call.c: In function `statline':
call.c:268: warning: implicit declaration of function `attron'
call.c:268: `A_REVERSE' undeclared (first use this function)
call.c:268: (Each undeclared identifier is reported only once
call.c:268: for each function it appears in.)
zatem powinieneś pozprawdzać czy masz na swoim systemie zainstalowany
poprawnie pakiet ncurses. Skrypt konfiguracyjny stara się zlokalizować
pakiet ncurses na twoim systemie w znanych katalogach. Niektóre jednak
instalacje źle wpisują ncurses i skryp nie potrafi ich znaleźć.
66.. NNaajjppiieerrww oo zznnaakkaacchh rraaddiiooaammaattoorrkkiicchh ,, aaddrreessaacchh,, iittpp..
Każdy port AX.25 lub NetRom na twoim systemie musi mieć przydzielony
znak i przypięty do niego numeryczny identyfikator stacji. Rzeczy te
konfigurujemy w plikach, które zostały opisane dalej. Niektóre
implementacje AX.25, np. BPQ lub NOS, pozwalają na przypisanie tego
samego znaku/indentyfikatora na obu portach AX.25 i NetRom. Linux na
to nie pozwala z pewnych technicznych, skomplikowanych powodów. W
praktyce, nie jest to taki wielki problem.
Oznacza to, że przy konfigurowaniu trzeba być świadomy tych rzeczy i
wziąć je pod uwagę:
1. Każdy port ax.25 lub NetRom musi być konfigurowany z unikalnym
znakiem/identyfikatorem.
2. TCP/IP używać będzie tego znaku/identyfikatora, na którego porcie
odbywa się odbiór i transmisja AX.25, tj. ten, który
skonfigurowałeś w punkcie 1.
3. NetRom używać będzie tego znaku/identyfikatora, który został mu
przydzielony w jego własnym pliku konfiguracyjnym. Znak ten używany
będzie tylko wówczas, gdy twój NetRom rozmawia z innym NetRomem.
Nie jest to znak, ktory użytkownicy AX.25 mają używać przy
wchodzeniu do twojego węzła. Więcej na ten temat powiemy dalej.
4. Rose, pierwotnie, będzie używał znaku/identyfikatora należącego do
portu AX.25 chyba, że wyraźnie zostanie przekonfigurowany
poleceniem 'rsparms' na inny. Jeśli przydzielisz znak/identyfikator
dla Rose poleceniem 'rsparms' wówczas Rose używać będzie tego znaku
na wszystkich swych portach.
5. Inne programy, takie jak 'ax25d' mogą słuchać na jakichkolwiek
znakach/identyfikatorach i w dodatku można te znaki duplikować po
wszelakich portach.
6. Będąc ostrożny przy routingu, możesz nawet przyznac wszystkim
portom ten sam adres IP.
66..11.. CCzzyymm ssąą oowwee TT11,, TT22,, TT33 ii iinnnnee rrzzeecczzyy??
Analogicznie, tak jak nie każdy radiooperator jest inżynierem, tak
samo nie każda implementacja AX.25 jest zgodna ze standardem TNC2.
Linux stosuje nomenklaturę, która różni się w pewnym względzie od tej,
jakiej używałbyś,jeśli jedynym twoim doświadczeniem w packet radio
byłby TNC. Podana niżej tablica powinna być pomocna w interpretacji
czym są poszczególne elementy, które daje się konfigurować, zatem
jeśli napotkasz je później w tym tekście pomoże ci to w ich
zrozumieniu.
-------------------------------------------------------------------
Linux | TAPR TNC | Description
-------------------------------------------------------------------
T1 | FRACK | czas wyczekiwania przed retransmisją
| | niepotwierdzonej ramki
-------------------------------------------------------------------
T2 | RESPTIME | minimalny czas wyczekiwania na inną ramkę
| | przed transmisją potwierdzenia
| |
-------------------------------------------------------------------
T3 | CHECK | czas wyczekiwania pomiędzy sprawdzeniami czy
| | lącze jest nadal aktywne
-------------------------------------------------------------------
N2 | RETRY | ilość retransmisji zanim założymy, że lącze
| | padło
-------------------------------------------------------------------
Idle | | okres czasu, który łącze może stać bezczynnie
| | zanim zostanie zamknięte
-------------------------------------------------------------------
Window | MAXFRAME | maksymalna liczba niepotwierdzonych,
| | wytransmitowanych ramek
-------------------------------------------------------------------
66..22.. PPaarraammeettrryy,, kkttóórree ddaajjąą ssiięę kkoonnffiigguurroowwaaćć ww ttrraakkcciiee pprraaccyy..
Jądra 2.1.* oraz 2.0.29+module mają nową cechę, która pozwala na
zmianę uprzednio niemożliwych do manipulacji wartości w trakcie pracy.
Jeśli uważnie przyjrzysz się strukturze katalogu /proc/sys/net/ to
zauważysz parę plików o sugestywnych nazwach, które wskazują na różne
parametry do konfigurowania sieci. Każdy plik w katalogu
/proc/sys/net/ax25 reprezentuje jeden ustawiony port AX.25. Nazwa
pliku odnosi się do nazwy portu. Struktura plików wygląda następująco:
No. Nazwa Znaczenie Wartość domyślna
1 IP Default Mode 0=DG 1=VC 0
2 AX.25 Default Mode 0=Normal 1=Extended 0
3 Allow Vanilla Connects 0=No 1=Yes 1
4 Backoff 0=Linear 1=Exponential 1
5 Connected Mode 0=No 1=Yes 1
6 Standard Window 1 <= N <= 7 2
7 Extended Window 1 <= N <= 63 32
8 T1 Timeout 1s <= N <= 30s 10s
9 T2 Timeout 1s <= N <= 20s 3s
10 T3 Timeout 0s <= N <= 3600s 300s
11 Idle Timeout 0m <= N 20m
12 N2 1 <= N <= 31 10
13 AX.25 Frame Length 1 <= N <= 512 256
14 Max Queue 1 <= N <= 20 2
15 Digipeater Mode 0=None 1=Inband 2=XBand 3=Both 3
W powyższej tablicy T1, T2, T3 zostały podane w sekundach a Idle
Timout podano w minutach. Zauważ jednak, że wartości używane przez
interfejs sysctl mierzone są wartościami wewnętrznymi, gdzie czas w
sekundach mnożony jest przez 10, co pozwala na rozdrobnienie na 1/10
sekundy. Tam, gdzie liczniki pozwalają na wartość zero, np. T3 lub
Idle, zero oznacza, że licznik jest wyłączony.
77.. KKoonnffiigguurroowwaanniiee ppoorrttuu AAXX..2255..
Każdy program AX.25 wpierw czyta plik konfiguracyjny, aby uzyskać
potrzebne parametry poszczególnego portu AX.25, obecnego na twoim
systemie Linux. Dla portów AX.25 jest to plik /etc/ax25/axports. Każdy
port AX.25, który chcesz mieć na swoim systemie, musi być w tym pliku
opisany.
77..11.. JJaakk uuttwwoorrzzyyćć pplliikk //eettcc//aaxx2255//aaxxppoorrttss??
Plik /etc/ax25/axports to prosty tekstowy plik, który tworzymy zwykłym
edytorem. Format pliku /etc/ax25/axports jest następujący:
portname callsign baudrate paclen window description
Gdzie:
portname
to wolna nazwa, krórą należy ochrzcić port, używana do nazewnictwa
tego portu
callsign
znak/identyfikator, który przypisujesz dla portu AX.25
paclen
to maksymalna długość pakietów, które będą możliwe na tym porcie przy
transmisjch AX.25 w trybie 'connected'.
window
to parametr (K) AX.25 window. To samo co MAXFRAME w wielu urządzeniach
TNC.
description
to dowolny opis tego portu
W moim przypadku wygląda to tak:
radio VK2KTJ-15 4800 256 2 4800bps 144.800 MHz
ether VK2KTJ-14 10000000 256 2 BPQ/ethernet device
Pamiętaj, że należy przypisać unikalny znak/identyfikator dla każdego
portu AX.25, który utworzysz. Wprowadź jeden wpis dla każdego
urządzenia AX.25, które chcesz używać. Odnosi się to do portów: KISS,
Baycom, SCC, PI, PT, DźwiękoModem. W tym miejscu każdy wpis ma
odnosić się do każdego z osobna urządzenia AX.25. Wpisy w tym pliku
powiązane są z interfejsami sieciowymi poprzez ich znak/identyfikator.
Plik ten używany będzie przez programy opisane dalej.
77..22.. JJaakk uuttwwoorrzzyyćć iinntteerrffeejjssyy ssiieecciioowwee AAXX..2255??
Interfejs sieciowy jest tym, co widać na ekranie po wydaniu polecenia
'ifconfig'. Jest to objekt, poprzez który jądro Linuxa odbiera i
wysyła dane sieciowe. Prawie zawsze interfejs sieciowy związany jest z
fizycznym portem, są jednak wypadki, kiedy nie jest to konieczne.
Interfejs sieciowy odnosi się wówczas bezpośrednio do sterownika
urządzenia fizycznego. W oprogramowaniu AX.25 pod Linuxem istnieje
wiele sterowników urządzeń fizycznych. Najpopularniejszym jest zapewne
sterownik KISS, lecz są też inne jak np. sterownik SCC, Baycom czy
SoundModem (DźwiękoModem).
Każdy z tych sterowników, przy uruchomianiu go, spowoduje również
otworzenie interfejsu sieciowego.
77..22..11.. JJaakk ddoołłąącczzyyćć uurrzząąddzzeenniiee KKIISSSS??
Najczęściej spotykaną konfiguracją bedzię chyba KISS TNC na porcie
seryjnym. Należy uprzednio skonfigurować sam TNC i doczepić go do
portu seryjnego. Aby wprowadzić swój TNC w tryb KISS można użyć
programu terminala, jak np. minicom lub seyon. Z kolei, aby utworzyć
urządzenie KISS należy użyć polecenia 'kissattach', które to polecenie
w swej najprostszej formie może wyglądać tak:
# /usr/sbin/kissattach /dev/ttyS0 radio
# kissparms -p radio -t 100 -s 100 -r 25
Polecenie kissattach utworzy też sieciowy interfejs KISS. Interfejsy
te noszą wtedy nazwę od 'ax[0-9]'. Przy pierwszym wydaniu polecenia
'kissattach' powstaje 'ax0', przy następnym 'ax1', itd. Każdy
interfejs KISS powiązany jest ze swoim portem seryjnym.
Polecenie 'kissparms' pozwala na manipulowanie różnymi parametrami
interfejsu KISS.
W podanym wyżej przykładzie dołączony zostałby sieciowy interfejs KISS
do seryjnego urządzenia w Linuxie '/dev/ttyS0' i do portu oznaczonego
w pliku /etc/ax25/axports jako 'radio'. Następnie konfigurowany on
jest z wartościami 100 milisekund dla txdelay oraz slottime i
wartością 25 dla ppersist.
Więcej informacji można znaleźć w man pages w Linuxie.
77..22..11..11.. KKoonnffiigguurroowwaanniiee uurrzząąddzzeeńń TTNNCC oo ddwwóócchh ppoorrttaacchh..
Programik 'mkiss', zawarty w programach narzędziowych ax25-utils,
pozwala na wykorzystanie obydwu modemów w urądzeniach TNC o dwóch
portach. Ustawienie jest dość proste. Programik ten działa tak, że
biorąc pojedyncze urządzenie dołaczone do wieloportowego TNC
przedstawia je tak, iż wygląda ono, jakby to były dwa urządzenia,
każde z własnym TNC. Czynność tę trzeba wykonać zanim zaczniesz
jakąkolwiek konfigurację AX.25. Powstałe na skutek tego interfejsy
pseudo-TTY, (/dev/ttypf*), które nie są rzeczywistymi urządzeniami
seryjnymi, wykorzystywane są z kolei do konfiguracji AX.25. Interfejsy
Pseudo-TTY wyprowadzają swego rodzaju fajkę, poprzez którą programy
umiejące nadawać do urządzeń /dev/tty mogą sie porozumiewać między
sobą. Każda fajka posiada końcówkę master i slave. Końcówki master są
ogólnie oznaczane jako /dev/ptyp*, końcówki slave mają emblem
/dev/ttyp*. Pomiędzy master a slave istnieje intymna zależnośc, zatem
/dev/ptyp0 stanowi koncówkę master dla przewodu, ktory ma /dev/ttyp0
na końcówce slave. Zanim otworzysz końcówkę slave, musisz najpierw
otworzyć końcówkę master. 'mkiss' wykorzystuje ten właśnie mechanizm
do rozczepienia pojedynczego urządzenia seryjnego, na osobne.
Przykład: jeśli posiadasz TNC o dwóch portach i jest ono doczepione do
seryjnego urządzenia /dev/ttyS0 o prędkości 9600 bps, to polecenie:
# /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyp0 /dev/ptyp1
# /usr/sbin/kissattach /dev/ttyp0 port1
# /usr/sbin/kissattach /dev/ttyp1 port2
utworzy dwa interfejsy pseudo-tty, a każde z nich wyglądać będzie tak,
jakby było pojedynczym seryjnym portem, każde z własnym TNC. Wowczas
interfejsy /dev/ttyp0 i /dev/ttyp1 możesz potraktować tak jak inne
konwencjonalne seryjne porty z doczepionymi do nich urządzeniami TNC.
W praktyce oznacza to, ze odpaliłbyś dla obydwu polecenie 'kissattach'
przy zachowaniu wpisów o portach AX.25 jako port1 i port2. Nie należy
odpalać polecenia 'kissattach' dla rzeczywistego urządzenia /dev/ttyS0
ponieważ zajęte zostało ono przez program 'mkiss'.
Polecenie 'mkiss' przyjmuje szereg dodatkowych argumentów, które są do
twojej dyspozycji. Oto ich streszczenie:
-c pozwala na dodanie checksum o jednym byte.
Większość implementacji KISS tego nie obsluguje, jest to
możliwe przy użyciu Rom'u G8BPG KISS.
-s
ustawia prędkość portu urządzenia seryjnego.
-h omożliwia hardware handshaking na porcie seryjnym, pierwotnie
jest wyłączone. Większść implementacji KISS tego nie obsługuje.
Niektóre jednak to mają.
-l umożliwia prowadzenie log'u do plików typu syslog.
77..22..22.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee BBaayyccoomm
Wbrew powszechnemu przekonaniu, że nie będzie to zbyt dobrze działać,
Thomas Sailor podjął się rozbudowy obsługi modemów Baycom pod Linuxem.
Jego sterowniki obsługują modemy Ser12 na port seryjny, oraz Par96 i
udoskonalony PicPar na porty równoległe. Więcej informacji o samych
modemach można uzyskać na Web Serverze Baycoma
Najpierw musisz sprawdzić adres wejścia/wyścia oraz adresy bazowe
portu seryjnego lub równoległego, do którego masz doczepiony modem
Baycom. Z tą informacją możesz dopiero konfigurować sterownik samego
Baycom'a.
Programik sethdlc pozwala na użycie tych parametrów ze sterownikiem,
lub, jeśli masz tylko jeden modem Baycom i używasz modułów w Linuxie
to można te parametry podać ręcznie jako opcje dla programu 'insmod'
ładującego moduł Baycom'a.
Dla przykladu, prosty układ. Wyłączenie sterownika urządzenia
seryjnego COM1:, a następnie ustawienie tam sterownika modemu Baycom
Ser12 na COM1: z użyciem detekcji typu software DCD:
# setserial /dev/ttyS0 uart none
# insmod baycom mode="ser12*" iobase=0x3f8 irq=4
Albo modem Par96 na porcie równoległym LPT1: z użyciem detekcji
hardware DCD:
# insmod baycom mode="par96" iobase=0x378 irq=7 options=0
Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze
zarówno z jednym jak i z wieloma urządzeniami.
Podręcznik systemowy 'man' programiku sethdlc opisuje szczegóły na ten
temat, jednak kilka przykładów pozwoli zilustrować ważniejsze aspekty
tejże konfiguracji. Poniższy przykład zakłada, że załadowałeś już
moduł Baycom'a poleceniem:
# insmod baycom
Ustawienie sterownika dla interfejsu bc0 stusując równoległy modem
Baycom na LPT1: detekcja typu software DCD:
# sethdlc -p -i bc0 mode par96 io 0x378 irq 7
Ustawienie sterownika dla interfejsu bc1 stosując seryjny modem Baycom
na COM1::
# sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4
77..22..33.. JJaakk uussttaawwiićć ppaarraammeettrryy ddoossttęęppuu ddoo kkaannaałłuu AAXX..2255??
Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS,
takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku
sethdlc.
I znów podręcznik systemowy 'man' jest głównym źródłem informacji na
temat sethdlc, ale jak zwykłe jeden czy drugi przykład nie zaszkodzi:
Ustawienie interfejsu bc0 z wartością 200ms dla TxDelay, 100ms dla
Slottime, wartość 40 dla ppersist oraz half-duplex:
# sethdlc -i bc0 -a txd 20 slot 10 ppersist 40 half
Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund.
77..22..44.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee DDźźwwiięękkooMMooddeemm??
Thomas Sailor napisał nowy sterownik dla jądra Linuxa pozwalający na
użycie karty dźwiękowej komputera jako modemu do packet radio. Można
teraz podłączyć radio bezpośrednio do karty dźwiękowej i zabawić się w
packet!! Thomas poleca przynajmniej procesor 486DX/66 ponieważ cały
ciężar obliczeniowy sygnału cyfrowego spada w tym wypadku na CPU.
Obecnie sterownik emuluje takie typy modemów: 1200 bps AFSK, 4800 HAPN
and 9600 FSK (G3RUH compatible). Jedyne karty, które są obługiwane tym
sterownikiem to te, zgodne z SoundBlaster oraz WindowsSoundSystem.
Karty dźwiękowe potrzebują dodatkowego układu wspomagającego układ PTT
a informację na ten tema można zasięgnąć na domowej stronie Thomas'a
Sailora, tutaj. Istnieje szereg możliwości: detekcja syganłu z karty
dźwiękowej, lub przez port równoległy, seryjny, port midi. Przykłady
schematów są na stronie Thomas'a.
Przy załączeniu sterownik DźwiękoModemu dołącza interfejsy sieciowe:
sm0, sm1, sm2, itp.
Uwaga: Sterownik DźwiękoModemu współzawodniczy w zagarnianiu zasobów
komputera ze sterownikiem karty dźwiękowej. Jeśli więc planujesz
używać sterownik DźwiękoModemu to upewnij się, czy sterownik karty
dźwiękowej jest wyinstalowany. Jak zwykłe możesz obydwa skompilować
jako moduły i używać je wtedy, gdy jest to wygodne.
77..22..44..11.. KKoonnffiigguurroowwaanniiee kkaarrttyy ddźźwwiięękkoowweejj..
Sterownik DźwiękoModemu nie wzbudza karty dźwiękowej przy ładowniu się
systemu. Pakiet ax25-utils zawiera programik 'setcrystal', który
obluguje karty oparte o Crystal Chipset. jeśli posiadasz inną kartę to
potrzebujesz innego oprogramowania, aby ją pobudzić. Składnia
programiku jest oczywista:
setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]
Jeśli, zatem życzysz sobie doczepić kartę soundblaster na adresie
0x388, irq 10 i DMA 1, to dj tak:
# setcrystal -s 0x388 -i 10 -d 1
Jeśli ustawiasz kartę WinSoundSystem na adresie 0x534, irq 5, DMA 3,
to daj tak:
# setcrystal -w 0x534 -i 5 -d 3
Parametr -f synthio służy do zdeklarowania adresu syntezatora, a -c
dma2 do podania drugiej wartości dla DMA, ktora pozwala na operację
full-duplex.
77..22..44..22.. JJaakk uussttaawwiićć iinntteerrffeejjss DDźźwwiięękkooMMooddeemmuu??
Po skonfigurowaniu karty dźwiękowej musisz teraz powiedzieć
strownikowi DźwiękoModemu gdzie może jej szukać oraz jakiego rodzaju
modem ma emulować.
Parametry te mogą zostać zdeklarowane programikiem 'sethdlc', lub,
jeśli używać będziesz tylko jednej karty można je podać ręcznie
programowi 'insmod', który ładuje sterownik Dźwiękomodemu. Dla
przykładu, prosta konfiguracja: jedna karta dźwiękowa SoundBlaster
ustawiona według powyższego przykładu i emulująca modem 1200 pbs:
# insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
Nie jest to jednak najlepszy sposób. Programik sethdlc działa dobrze
zarówno z jednym jak i z wieloma urządzeniami.
Man pages programiku sethdlc piszą w szczegółach na ten temat, jednak
kilka przykładów pozwoli zilustrować ważniejsze aspekty tejże
konfiguracji. Poniższy przykład zakłada, ze załadowałeś już moduł
sterownika DźwiękoModemu poleceniem:
# insmod soundmodem
Ustawienie sterownika do obługi uprzednio skonfigurowanej karty Win
SoundSystem, aby emulował modem G3RUH 9600 jako interfejs sieciowy
sm0, na porcie równoległym z układem PTT o adresie 0x378:
# sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378
# ifconfig sm0 up
Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster,
aby emulował modem HAPN 4800 bps jako interfejs sieciowy sm1 z ukladem
PTT na porcie seryjnym o adresie 0x2f8:
# sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8
# ifconfig sm1 up
Ustawienie sterownika uprzednio skonfigurowanej karty SoundBlaster,
aby emulował modem AFSK 1200 bps jako interfejs sieciowy sm1, na
seryjnym porcie z układem PTT o adresie 0x2f8:
# sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8
# ifconfig sm1 up
77..22..44..33.. JJaakk uussttaawwiićć ppaarraammeettrryy ddoossttęęppuu ddoo kkaannaałłuu AAXX..2255??
Parametry dostępu do kanałów AX.25 są analogiczne do parametrów KISS,
takich jak ppersist, txdelay, slottime. Tutaj też używamy programiku
sethdlc.
I znów man pages są głównym źródłem informacji na temat sethdlc, ale
jak zwykle jeden czy drugi przykład nie zaszkodzi:
Ustawienie interfejsu sm0 z wartością 100ms dla TxDelay, 50ms dla
Slottime, wartość 128 dla ppersist oraz half-duplex:
# sethdlc -i sm0 -a txd 10 slot 5 ppersist 128 full
Zauważ, że wartości licznika są tutaj podane w 10-tkach milisekund.
77..22..44..44.. UUssttaalleenniiee ppoozziioommuu aauuddiioo ii ddoossttrroojjeenniiee sstteerroowwnniikkaa
Każdy modem radiowy domaga się do poprawnej pracy właściwej regulacji
poziomu audio. Dotyczy to również DźwiękoModem'u. Thomas napisał
programy narzędziowe, które ułatwiają to zadanie. Są to: 'smdiag' i
'smmixer'.
smdiag
dostarcza dwóch typów wyświetlacza, typu oscyloskopowego i typu "eye
pattern"
smmixer
pozwała na właściwe wyregulowanie poziomu nadawania i odbioru.
To polecenie odpala programik 'smdiag' w trybie "eye" dla interfejsu
sm0:
# smdiag -i sm0 -e
To polecenie odpala programik 'smmixer' dla interfejsu sm0:
# smmixer -i sm0
77..22..44..55.. PPrrzzyyggoottoowwaanniiee cczzęęśśccii AAXX..2255 jjąąddrraa ddoo wwyykkoorrzzyyssttaanniiaa
DDźźwwiięękkooMMooddeemmuu..
Sterownik DźwiękoModemu powoduje dołączenie standardowego interfejsu
sieciowego, gotowego do wykorzystania przez jądro. Konfiguracja
przypomina tę, jaką stosujemu przy kartach PacketTwin oraz PI.
Najpierw, interfejsowi trzeba przypisać znak/identyfikator. Używamy
programu 'ifconfig'. Polecenie:
# /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up
przypisze interfejsowi sm0, należącemu do DźwiękoModemu, znak/identy
fikator VK2KTJ-15 w protokole AX.25.
Następny krok to dokonanie wpisu do pliku /etc/ax25/axports podobnie
jak dla innych urządzeń fizycznych. Tenże wpis w pliku ax25ports jest
powiązany z interfejsem sieciowym, który powyżej skonfigurowałeś na
tymże znaku/identyfikatorze. Wpis w pliku axports noszący
znak/identyfikator, ktorego użyłeś przy DźwiękoModemie będzie używany
jako odnośnik do tego modemu.
Tak ustawione urządzenie AX.25 możesz teraz spożytkować jak każde
inne. Skonfiguruj je do pracy w TCP/IP, dodaj je do demona ax25d, użyj
do NetRom lub Rose, jak tylko chcesz.
77..22..55.. JJaakk ddoołłaacczzyyćć uurrzząąddzzeenniiee zz kkaarrttąą PPII??
Sterownik karty PI generuje powstanie interfejsów sieciowych typu
`pi[0-9][ab]. Pierwszej wykrytej karcie PI zostanie przypisany
interfejs pi0, kolejnej pi1, itd. Literki 'a' i 'b' odnoszą sie do
fizycznych portów znajdujących się na karcie PI. Jeśli zbudowałeś
jądro z obsługą karty PI, oraz jeśli została ona poprawnie wykryta to
możesz skonfigurować sobie interfejs sieciowy w taki sposób:
# /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up
Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty
PI przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby go akty
wnym. Zauważ, że znak musi mieć swój odpowiednik w pliku
/etc/ax25/axports, aby móc używać tego portu.
Sterownik do karty PI napisany został przez David'a Perry,
dp@hydra.carleton.edu
77..22..66.. JJaakk ddoocczzeeppiićć uurrzząąddzzeenniiee zz kkaarrttąą PPaacckkeettTTwwiinn..
Sterownik karty PacketTwin generuje powstanie interfejsów sieciowych
typu `pt[0-9][ab]. Pierwszej wykrytej karcie PacketTwin zostanie
przypisany interfejs pt0, kolejnej pt1, itd. Literki 'a' i 'b' odnoszą
sie do fizycznych inerfejsów znajdujących się na karcie PacketTwin.
Jeśli zbudowałeś jądro z obsługą karty PacketTwin, oraz jeśli została
ona poprawnie wykryta to możesz skonfigurować sobie interfejs sieciowy
w taki sposób:
# /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up
Polecenie to skonfigurowałoby pierwszy port pierwszej wykrytej karty
PacketTwin przypisując jej znak/identyfikator VK2KTJ-15 i uczyniłoby
go aktywnym. Zauważ, że znak musi mieć swój odpowiednik w pliku
/etc/ax25/axports, aby móc używać tego portu.
Sterownik karty PacketTwin został napisany przez Craig Small, VK2XLZ,
csmall@triode.apana.org.au.
77..22..77.. JJaakk ddoocczzeeppiićć ggeenneerryycczznnee uurrzząąddzzeenniiee SSCCCC??
Joerg Reuter, DL1BKE, jreuter@lykos.tng.oche.de wypracował sterownik
do generycznej obsługi kart opartych o scalak Z8520 SCC. Sterownik ten
daje się konfigurować do obsługi wielorakich kart oferując interfejs,
który zachowuje się tak jak TNC w trybie KISS. Traktuj więc go tak,
jakby to był TNC w trybie KISS.
77..22..77..11.. GGddzziiee uuzzyysskkaaćć ii jjaakk zzbbuuddoowwaaćć ppaakkiieett ddoo nnaarrzzęęddzzii kkoonnffiigguurraa
ccyyjjnnyycchh??
Choć sterownik zawarty jest w standardowym żródle jądra to jednak
Joerg uwalnia wciąż nowsze wersje źródłowe razem ze specjalnymi
narzędziami do konfiguracji, które również potrzebujesz.
Pakiet z narzędziami do konfiguracji znajdziesz tutaj:
db0bm.automation.fh-aachen.de
/incoming/dl1bke/
lub:
insl1.etec.uni-karlsruhe.de
/pub/hamradio/linux/z8530/
lub:
ftp.ucsd.edu
/hamradio/packet/tcpip/linux
/hamradio/packet/tcpip/incoming/
Znajdziesz tam różnorakie wersje, więc wybierz te, które odpowiadają
twojej wersji jądra:
z8530drv-2.4a.dl1bke.tar.gz 2.0.*
z8530drv-utils-3.0.tar.gz 2.1.6 lub nowsze
Oto polecenia, które musiałem wykonać, aby skompilować i zainstalować
ów pakiet z jądrem 2.0.25:
# cd /usr/src
# gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -
# cd z8530drv
# make clean
# make dep
# make module # jeśli chcesz aby sterownik był modułem
# make for_kernel # Jeśli chcesz, aby sterownik był wbudowany w jądro
# make install
Po zakończonej operacji powinieneś mieć trzy programy w katalogu
/sbin: gencfg, sccinit i sccstat. To właśnie one nadają się do tego,
aby skonfigurować sterownik dla twojej karty.
Zostanie rownież utworzona specjalna grupa plików w katalogu /dev/
zwanych scc0 .. scc7. Zostaną one później użyte jako urządzenia KISS i
właśnie te będziesz stosował.
Jeśli zdecydujesz sie na polecenie 'make for_kernel', wówczas będziesz
musiał przebudować jądro. Przy budowaniu jądra po wydaniu polecenia
'make config' zadbaj o to, abyś odpowiedział "Y" na pytanie o obsługę
`Z8530 SCC kiss emulation driver for AX.25'.
Nie potrzebyjesz przebudowywać jądra jeśli wybierzesz polecenie 'make
module', wówczas plik scc.o zostanie umieszczony w odpowiednim
katalogu /lib/modules. Nie zapomnij o poleceniu 'insmod' przed próbą
użycia i konfiguracji starownika.
77..22..77..22.. JJaakk sskkoonnffiigguurroowwaaćć sstteerroowwnniikk ddoo ttwwoojjeejj kkaarrttyy??
Sterownik Z8530 SCC został pomyślany, tak aby dał się nagiąć do
niemalże każdej karty. Lecz z elastycznością idzie w parze trud jej
konfiguracji. Bardziej pouczającej lektury dostarczą pliki samego
pakietu i powinieneś tam szukać informacji. A w szczególności należy
zajrzeć tutaj: doc/scc_eng.doc or doc/scc_ger.doc. Zparafrazowałem
poniżej parę ważniejszych detali, lecz w rezultacie pominąłem
szczegóły niższego rzędu.
Program sccinit czyta najpierw plik /etc/z8530drv.conf. Plik dzieli
się na dwa etapy: ustawienie parametrów dla sprzętu i dla kanału
AX.25. Po tym wystarczy tylko dać polecenie:
# sccinit
77..22..77..22..11.. UUssttaawwiieenniiee ppaarraammeettrróóww sspprrzzęęttuu..
pierwsza sekcja dzieli się na strofy, każda strofa reprezentuje scalak
8530. Strofy to poprostu lista 'słów' i 'argumentów'. Można w tym
pliku zdeklarować do 4 scalaków SCC. Jeśli potrzebujesz więcej to da
się to zrobić w pliku scc.c ustawiając żądaną wartosć w #idef MAXSCC
4.
Dozwolone 'słowa' i 'argumenty' to:
chip
słowo chip służy do oddzielania strof. jego argumentem może być wszys
tko. Argumenty nie są używane.
data_a
używane do zdeklarowania adresu portu "data" dla kanału 'A'. Argument
w formie hexadecymalnej, tj. 0x300.
ctrl_a
używany do zdeklarowania adresu portu "control" dla kanału 'A'. Argu
ment w formie hexadecymalnej, tj. 0x304
data_b
używany do zdeklarowania adresu portu "data" dla kanału 'B'. Argument
w formie hexadecymalnej, tj. 0x301.
ctrl_b
używany do zdeklarowania adresu portu "control" dla kanału 'B'. Argu
ment w formie hexadecymalnej, tj. 0x305
irq
używany do zdeklarowania IRQ używanego przez 8530 SCC w beżącej
strofie. Argument w formie liczby całkowitej, tj. 5
pclock
używany do zdeklarowania częstotliwości zegara na igle PCLK w 8530..
Argument w formie liczby całkowitej w Hz. Wartość domyślna wynosi
4915200.
board
typ płyty. Argumentem jest napis. A oto dozwolone wartości:
PA0HZP
karta PA0HZP SCC
EAGLE
karta Eagle
PC100
karta DRSI PC100 SCC
PRIMUS
karta PRIMUS-PC (DG9BL)
BAYCOM
karta BayCom (U)SCC
escc
jest nie dobowiązkowe i dołącza obsługę polepszonych scalaków, takich
jak:8580, 85180, lub 85280. Argumentem jest tylko 'yes' lub 'no'.
vector
dla kart PA0HZP jest to wartość tzw. "intack port". Może być tylko
jeden dla wszystkich scalaków. Wartość domyślna = 0. Nieobowiązkowy.
special
określa rejestry funkcyjne na niektórych kartach. Nieobowiązkowy.
Wartość domyślna = 0.
option
jest nieobowiązkowy i przyjmuje warość domyślną 0.
Oto przykładowe konfiguracje dla najbardziej popularnych kart:
BayCom USCC
chip 1
data_a 0x300
ctrl_a 0x304
data_b 0x301
ctrl_b 0x305
irq 5
board BAYCOM
#
# SCC chip 2
#
chip 2
data_a 0x302
ctrl_a 0x306
data_b 0x303
ctrl_b 0x307
board BAYCOM
PA0HZP SCC
chip 1
data_a 0x153
data_b 0x151
ctrl_a 0x152
ctrl_b 0x150
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
#
#
#
chip 2
data_a 0x157
data_b 0x155
ctrl_a 0x156
ctrl_b 0x154
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
DRSI SCC
chip 1
data_a 0x303
data_b 0x301
ctrl_a 0x302
ctrl_b 0x300
irq 7
pclock 4915200
board DRSI
escc no
Jeśli twoja karta pracuje pod NOS'em i masz do niej konfigurację, to
możesz użyć polecenia 'gencfg' do konwersji poleceń sterownika PE1CHL
NOS. Powstaje wtedy plik przydatny do załączenia w pliku konfigura
cyjnym dla sterownika z8530.
Polecenia 'gencfg' odpala się z tymi samymi paramatrami co sterownik
PE1CHL pod NET/NOS, np.:
# gencfg 2 0x150 4 2 0 1 0x168 9 4915200
Powyższe wygeneruje szkic konfiguracyjny dla karty OptoSCC.
77..22..77..33.. KKoonnffiigguurraaccjjaa kkaannaałłuu..
Sekcja Konfiguracji Kanału zajmuje się zdeklarowniem tych wszystkich
parametrów, które rządzą portem , na którym chcesz pracować. Znów mamy
tutaj strofy. Każda strofa reprezentuje jeden logiczny port, zatem
będziemy mieli dwie strofy ponieważ każda karta 8530 SCC może mieć dwa
porty.
Poniższe 'słowa' i 'argumenty' są również zapisywane do pliku
/etc/z8530drv.conf i muszą występować za sekcją o parametrach sprzętu.
Kolejność w tej sekcji jest bardzo istotna, lecz jeśli będziesz
podążał za sugerowaną sekwencją to powinno działać wszystko w
porządku. Dozwolone 'słowa' i 'argumenty to:
device
musi stać w pierszym wierszu deklaracji portu i określa nazwę pliku w
katalogu /dev/ stanowiącego podstawę dalszej konfiguracji, tj.
/dev/scc0
speed
określa prędkość interfejsu w bitach na sekundę. Argumentem jest
liczba calkowita, np. 1200.
clock
określa w parametry dla zegara. Dozwolone wartości to:
dpll
normalny tryb halfduplex
external
MODEM dostarcza swój własny zegar Rx/Tx
divider
użycie devidera fullduplex, jeśli jest zainstalowany
mode
określa czy kodowanie danych ma być załaczone. Argumentami są: nrzi
lub nrz
rxbuffers
określa liczbę buforów odbioru, dla których należy rezerwować pamięć.
Argumentem jest liczba całkowita, np. 8.
txbuffers
określa liczbę buforów nadawania, dla których należy rezerwować
pamięć. Argumentem jest liczba całkowita, np. 8.
bufsize
określa rozmiary buforów odbioru i transmisji. Argumentem jest liczba
bytów i stanowi on od sumę wszystkich 'ramek', zatem trzeba więc wziąć
pod uwagę również nagłówki protokołu AX.25 a nie li tylko pole danych.
Słowo to jest nieobowiązkowe i przyjmuje wartość domyślną 384.
txdelay
to wartość opóżnienia transmisji dla KISS, argumentem jest liczba
całkowita.
persist
to wartość parametru persist dla KISS, argumentem jest liczba
całkowita.
slot
to jest wartość slottime dla KISS. argumentem jest liczba całkowita w
mS.
tail
to jest wartość tail dla KISS. argumentem jest liczba całkowita w mS.
fulldup
to jest oznaczenie fullduplex dla KISS, argumentem jest liczba
całkowita. 1==Full Duplex, 0==HALF DUPLEX.
wait
to jest wartość wait dla KISS, argumentem jest liczba całkowita w mS.
min
to jest wartość min dla KISS, argumentem jest liczba całkowita w S.
maxkey
to jest wartość maximum keyup dla KISS, argumentem jest liczba
całkowita w S.
idle
to jest wartość licznika idle dla KISS, argumentem jest liczba
całkowita w S.
maxdef
to jest wartość maxdef dla KISS, argumentem jest liczba całkowita.
group
to jest wartość group dla KISS, argumentem jest liczba całkowita.
txoff
to jest wartość txoff dla KISS, argumentem jest liczba całkowita w mS.
softdcd
to jest wartość softdcd dla KISS, argumentem jest liczba całkowita.
slip
to jest oznaczenie slip dla KISS, argumentem jest liczba całkowita.
77..22..77..44.. UUżżyywwaanniiee sstteerroowwnniikkaa..
Przy używaniu sterownika traktujemy urządzenia /dev/scc* tak, jak
urządzenie seryjne tty z doczepionym TNC w trybie KISS. Na przykład,
aby skonfigurować jądro do obługi sieci pod Linuxem przy użyciu swojej
karty należy użyć polecenia:
# kissattach -s 4800 /dev/scc0 VK2KTJ
Można też doczepić NOS'a w dokładnie taki sam sposób. Z JNOS'a, np.
wykonać mógłbyś polecenie:
attach asy scc0 0 ax25 scc0 256 256 4800
77..22..77..55.. NNaarrzzęęddzziiaa ''ssccccssttaatt'' oorraazz ''ssccccppaarraamm''..
Pomocnym przy diagnostyce urządzenia SCC jest program 'sccstat'.
Wyświetla on bieżącą konfigurację. Spróbuj go tak uruchomić:
# sccstat /dev/scc0
wyświetli to szeroką gamę informacji związanych z ustawieniem i ogólną
kondycją portu /dev/scc0 SCC.
Polecenie 'sccparam' pozwala na zmianę i modyfikowanie parametrów
podczas pracy. Składnia przypomina polecenie 'param' z NOS'a, zatem
aby ustawić txtail urządzenia na 100mS, należałoby napisać:
# sccparam /dev/scc0 txtail 0x8d
77..22..88.. JJaakk uuttwwoorrzzyyćć uurrzząąddzzeenniiee BBPPQQ zz eetthheerrnneetteemm??
Linux jest kompatybilny z BPQ Ethernet. Umożliwia to na przepust
protokołu AX.25 po Lokalnej Sieci ethernetowej i doczepienie swojej
maszyny do innej obsługującej BPQ na Lokalnej Sieci.
Interfejsy sieciowe typu BPQ noszą nazwę 'bpq[0-9]'. Interfejs 'bpq0'
powiązane jest z interfejsem 'eth0', a 'bpq1' z interfejsem 'eth1',
itd.
Konfiguracja jest trywialna. Najpierw trzeba ustawić standardowe
urządzenie Ethernet. To oznacza, że po wkompilowaniu obsługi karty
Ethernet do jądra należy zobaczyć czy pracuje poprawnie. Zajrzyj do
Ethernet-HOWTO jak tego dokonać.
Aby ustawić obsługę BPQ potrzebujesz przypisać interfejsowi Ethernet
znak/identyfikator AX.25. Oto polecenie, które to spowoduje:
# /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up
I znów, nie zapomnij, że znak/identyfikator, który tutaj podajesz musi
zgadzać się z wpisem w pliku /etc/ax25/axports dla portu, którego
chcesz używać.
77..22..99.. UUssttaawwiieenniiee wwęęzzłłaa BBPPQQ ddoo wwssppóółłpprraaccyy zz oobbssłłuuggąą AAXX..2255 ppoodd LLiinn
uuxxeemm..
W normalnych warunkach BPQ Ethernet stosuje adres multicast. Pod
Linuxem tak nie jest, zamiast tego stosowany jest zwyczajny
Ethernetowy adres broadcast. Należy zatem zmodyfikować plik NET.CFG
dla sterownika BPQ ODI w nasępujący sposób:
LINK SUPPORT
MAX STACKS 1
MAX BOARDS 1
LINK DRIVER E2000 ; lub inne MLID według własnej karty
INT 10 ;
PORT 300 ; według własnej karty
FRAME ETHERNET_II
PROTOCOL BPQ 8FF ETHERNET_II ; wymagane dla BPQ - zmienić PID
BPQPARAMS ; nieobowiązkowe - tylko wtedy,
; gdy znieniasz docelowy adres
ETH_ADDR FF:FF:FF:FF:FF:FF ; docelowy adres
77..33.. UUssttaawwiieenniiee ppaarraammeettrróóww ooppeerraaccyyjjnnyycchh ddllaa iinntteerrffeejjssuu AAXX..2255
Pakiet ax25-utils zawiera w sobie program narzędziowy 'axctl', który
pozwala na ustawienie różnorodnych parametrów interfejsu AX.25.
Polecenie to jest zupełnie proste w użyciu a podręcznik systemowy
'man' dostarcza kompletnego opisu, przykładowym jednak sposobem użycia
tego programu może być:
# /usr/sbin/axctl radio -window 2 -t1 5 -n2 10
Powyższe polecenie ustawiłoby wartości takie jak Window, T1 oraz N2
dla portu AX.25 nazwanego tu 'radio'.
77..44.. UUssttaawwiieenniiuu rroouuttiinngguu AAXX..2255..
Jeśli jest potrzeba można ustawić domyślne ścieżki do digipeaterów dla
konkretnych węzłow. Przydaje się to przy zarówno czystych łączach
AX.25 jak i opartych o IP. Robimy to poleceniem 'axparms'. Znowu,
podręcznik systemowy 'man' podaje wszystkie szczegóły, lecz prosty
przykład może być taki:
# /usr/sbin/axparms -route add radio VK2XLZ VK2SUT
Polecenie to utworzyłoby ścieżkę digipeatera dla stacji VK2XLZ przez
stację VK2SUT na porcie AX.25 noszącego nazwę 'radio'.
88.. UUssttaawwiiaanniiee iinntteerrffeejjssuu AAXX..2255 ddoo pprraaccyy ww TTCCPP//IIPP..
Ustawienie portu AX.25 do pracy w TCP/IP jest bardzo proste. Jeśli
posiadasz interfejs KISS to masz dwie metody do ustawienia adresu IP.
Polecenie 'kissattach' posiada opcję, która pozwala na określenie
adresu IP. Metoda konwencjonalna przy użyciu polecenia 'ifconifg'
zadziała na wszystkich typach interfejsów.
A zatem, zmieniając poprzedni przykład dla KISS:
# /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio
# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0
# /sbin/route add default ax0
utworzy to interfejs AX.25 z adresem IP 44.136.8.5 oraz MTU 512 bytów.
Jeśli zachodzi potrzeba to należy inne parametry ustawić tez polece
niem 'ifconfig' raz jeszcze.
Jeśli posiadasz jakikolwiek inny typ interfejsu to stosujesz polecenie
'ifconfig' do ustawienia adresu ip i netmask dla danego portu i
dodajesz routing przez ów port, tak jak zrobiłbyś to dla każdego
jednego interfejsu TCP/IP. Poniższy przykład jest dla interfejsu Karty
PI, ale zadziała równie dobrze dla każdego interfejsu sieciowego
AX.25:
# /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up
# /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512
# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 pi0a
# /sbin/route add default pi0a
Polecenia powyższe powinny być znane dla tych, którzy używali NOS lub
jego pochodne lub jakiekolwiek inne oprogramowanie TCP/IP. Zauważ, że
jeśli masz już ustawione jakiś interfejs sieciowy to routing domyślny
nie jest ci potrzebny.
Aby to wypróbować zpróbuj 'zapingować' lub zrób telnet do lokalnego
węzła:
# ping -i 5 44.136.8.58
Zauważ zastosowanie '-i 5', które sprawia, że pingowanie odbywa się co
5 sekund, a nie jak pierwotnie co 1 sekundę.
99.. UUssttaawwiieenniiee ppoorrttuu ddllaa NNeettRRoomm..
Protokół Netrom wykorzystuje i zależy od portów AX.25, które
utworzyłeś uprzednio. Protokół NetRom biega po plecach protokołu
AX.25. Należy zrobić edycję dwóch plików, aby ustawić sobie NetRom na
interfejsie AX.25. Jeden plik określa interfejsy NetRomu, a drugi
porty AX.25, po których NetRom będzie biegał.
99..11.. EEddyyccjjaa pplliikkuu //eettcc//aaxx2255//nnrrppoorrttss
Na początek plik /etc/ax25/nrports. Plik ten określa porty NetRomu
podobnie jak plik /etc/ax25/axports określa porty AX.25. Każde
urządzenie NetRom musi zawierać swój wpis w pliku /etc/ax25/nrports.
Normalnie, na Linuxie spotykamy tylko jedno urządzenie Netrom, które
używa wielu zdeklarowanych portów AX.25. W niektórych tylko wypadkach,
jak np. z BBS'em, można utworzyć dodatkowy pseudonim dla węzła NetRom,
wówczas będzie więcej niż jeden.
Plik ten ma taką formę:
name callsign alias paclen description
Gdzie:
name
to tekst, według którego chcesz odwoływać sie do tego portu.
callsign
to jest znak/identyfikator, na którym pracować będzie protokół NetRom.
Uwaga: nie jest to znak, do którego użytkownicy będą się łączyć, aby
wejść do twojego węzła. (program 'node' opisany jest dalej). Znak ten
powinien być unikalny i nie powinien powtarzać się nigdzie w pliku
/etc/ax25/axports lub /etc/ax25/nrports.
alias
to jest przypisany pseudonim dla portu NetRom
paclen
to jest maksymalny rozmiar ramek NetRom transmitowanych przez ten port
description
dowolna nazwa dla tego portu
Oto jak może to wyglądać:
netrom VK2KTJ-9 LINUX 236 Linux Switch Port
Plik ten używany jest m. in. przez program _c_a_l_l.
99..22.. UUssttaawwiieenniiee pplliikkuu //eettcc//aaxx2255//nnrrbbrrooaaddccaasstt
Następny plik to /etc/ax25/nrbroadcast. Zawiera on parę wpisów.
Normalnie potrzebny jest jeden apis dla każdego portu AX.25 po którym
puszczany będzie protokół NetRom.
Plik przyjmuje taki format:
axport min_obs def_qual worst_qual verbose
Gdzie:
axport
to nazwa portu uzyskana z pliku /etc/ax25/axports. Jeśli w pliku
/etc/ax25/axports nie ma wpisu dla danego portu oznacza to, że
zabraknie routingu dla NetRom na tym porcie oraz, że broadcasts będą
ignorowane.
min_obs
jest to wartość dla min obscelecence dla tego portu
def_qual
określa wartość default quality dla NetRomu na tym porcie
worst_qual
określa wartość 'worst quality' dla NetRomu na tym porcie, wszystki
routingi o tej wartości będą ignorowane
verbose
to jest oznakowanie czy z tego portu wychodzić będzie NetRom broadcast
w pełnej formie czy też jednynie broadcast o tym wężle.
Oto przykład:
radio 1 200 100 1
99..33.. JJaakk uuttwwoorrzzyyćć iinntteerrffeejjss ssiieecciioowwyy ddllaa NNeettRRoomm..
Po ustawieniu powyższych dwóch plików należy teraz utworzyć urządzenie
NetRom w bardzo podobny sposób do tego, w jaki czyniliśmy do dla
urządzeń AX.25. Tym razem stosujemy polecenie 'nrattach'. Działa ono
tak samo jak 'axattach' z tą różnicą, że powoduje doczepienie
sieciowych interfejsów zwanych 'nr[0-9]'. I znów, przy pierwszym
użyciu utworzon zostaje interfejs 'nr0', przy następnym użyciu, 'nr1'
itd. Zatem, aby doczepić sieciowy interfejs do portu NetRom, który
zdefiniowaliśmy uprzednio, wydalibyśmy polecenie:
# nrattach netrom
Polecenie to wygenerowało by pojawienie się interfejsu (nr0), z
parametrami według szczegółów określonych w pliku /etc/ax25/nrports
dla portu 'netrom'.
99..44.. OOddppaalleenniiee ddeemmoonnaa NNeettRRoomm..
Jądro Linuxa obsługuje wszystkie mechanizmy protokołu NetRom, nie
potrafi tylko wykonać niektórych funkcji. Demon NetRomu bierze na
siebie tablice routingowe i broadcasty NetRomu. Uruchamiamy go
poleceniem:
# /usr/sbin/netromd -i
Po pewnej chwili powinieneś zobaczyć jak plik /proc/net/nr_neigh
wypełnia się powoli informacjami o sąsiednich stacjach NetRom.
Nie zapomnij umieścić polecenia /usr/sbin/netromd w jednym z plików
*rc, aby zostało odpalone przy ładowaniu systemu operacyjnego.
99..55.. uussttaawwiieenniiee rroouuttiinngguu ddllaa NNeettRRoomm
Możliwe jest ustawienie statycznych ścieżek NetRom do poszczególnych
węzłów. Pozwala na to polecenie 'nrparms'. podręcznik systemowy 'man'
podaje kompletny opis, a tutaj mamy prosty przkład:
# /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9
Polecenie to utworzyłoby ścieżkę statyczną #MINTO:VK2XLZ-10 poprzez
sąsiada VK2SUT-9 na porcie AX.25 o nazwie 'radio'.
Można też ręcznie dokonać wpisu dla sąsiednich stacji przy użyciu
polecenia nrparms, Przyklad:
# /usr/sbin/nrparms -routes radio VK2SUT-9 + 120
polecenie to wpisałoby VK2SUT-9 jako sąsiada z wartością 'quality'
120, wpis nie zostanie usunięty automatycznie lecz jest stały.
1100.. UUssttaawwiieenniiee iinntteerrffeejjssuu NNeettRRoomm ddllaa pprraaccyy ww TTCCPP//IIPP..
Ustawianie interfejsu NetRom dla pracy w TCP/IP przypomina zupełnie
konfigurowanie interfejsu AX.25 dla pracy w TCP/IP. Tutaj też, można
albo określić adres IP i wartość MTU w wierszu poleceń dla 'nrattach',
albo zastosować polecenie 'ifconfig' i 'route'. Należy jednak ręcznie
wprowadzić wpisy ARP dla węzłów, do których chcesz mieć routing
ponieważ brakuje mechanizmu, dzięki któremu twój komputer mógłby
dowiedzieć się o adresach NetRom, które powinien użyć aby dotrzeć do
poszczególnego węzła IP.
Zatem, doczepimy teraz interfejs nr0 z adresem IP 44.136.8.5 i MTU 512
oraz ustawimy go według szczegółów zawartych w pliku
/etc/ax25/nrports na porcie NetRom o nazwie "netrom":
# /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom
# route add 44.136.8.5 nr0
lub można zrobić to tak, ale ręcznie:
# /usr/sbin/nrattach netrom
# ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9
# route add 44.136.8.5 nr0
Następnie, dla każdego węzła IP, który chesz aby był osiągalny,
potrzeba dopisać recznie wartości dla ARP i route. Dopiszmy zatem
węzeł docelowy z adresem IP 44.136.80.4 o adresie NetRom BBS:VK3BBS
osiągalnego przez sąsiada VK2SUT-0:
# route add 44.136.80.4 nr0
# arp -t netrom -s 44.136.80.4 vk2sut-0
# nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0
Argumenty '120' i '6' podane dla 'nrparms' to 'quality' i 'absole
cence' dla NetRomu, który używa ich dla tej ścieżki.
1111.. UUssttaawwiieenniiee ppoorrttuu RRoossee
Sieciowa warstwa packet protokołu Rose przypomina trzecią warstwę
specyfikacji protokołu X.25. Obsługa Rose w jądrze Linuxa jest odmianą
implementacji Rose przyjętej przez FPAC.
Sieciowa warstwa packet protokołu Rose używa i polega na portach
AX.25, które uprzednio utworzyłeś. Protokół Rose biega po plecach
protokołu AX.25. Aby ustawić Rose potrzeba dopisać plik konfiguracyjny
dla portów Rose.
1111..11.. UUssttaawwiieenniiee pplliikkuu //eettcc//aaxx2255//rrssppoorrttss..
Plikiem, gdzie dopisujemy interfejsy dla Rose jest /etc/ax25/rsports.
Określa on porty Rose w podobny sposób jak plik /etc/ax25/axports
robi to dla portów AX.25. Oto jego format:
name addresss description
Gdzie:
name
jest tekstem, według którego chcesz odwoływać się do tego portu.
address
jest 10-cio cyfrowym adresem Rose, który przypisujesz temu portowi.
description
jest dowolnym tekstem opisującym port.
Oto jak można to wpisać:
rose 5050294760 Rose Port
Zauważ, że Rose używać będzie domyślnie znaku/identyfikatora podanego
dla portu AX.25 , chyba że specjalnie podasz inny. Aby podać osobny
znak/identyfikator dla Rose, który używany będzie na każdym używanym
porcie, trzeba wydać polecenie 'rsparms' w taki sposób:
# /usr/sbin/rsprams -call VK2KTJ-10
Przykład ten spowodowałby, że Linux słuchałby na znaku/identyfikatorze
VK2TKJ-10 i używałby tegoż znaku na wszystkich portach AX.25 ustaw
ionych dla łączności drogą Rose.
1111..22.. JJaakk ddoocczzeeppiićć ssiieecciioowwyy iinntteerrffeejjss RRoossee??
Po utworzeniu pliku /etc/ax25/rsports można doczepić urządzenie Rose
w taki sam spoób jak urządzeia AX.25. Tym razem używa się polecenia
'rsattach'. Polecenie 'rsattach' doczepia sieciowe interfejse zwane
'rose[0-5]'. Przy pierwszym poleceniu rsattach powstaje interfejs
'rose0', przy drugim, 'rose1', itd. Przykład:
# rsattach rose
Polecenie to wygeneruje interfejs Rose (rose0) ustawiony według
szczegółów podanych w pliku /etc/ax25/rsports dla wpisu nazwanego
'rose'.
1111..33.. UUssttaawwiieenniiee rroouuttiinngguu ddllaa RRoossee..
Obecnie, protokół Rose obsługuje jedynie ścieżki statyczne. Program
'rsparms' pozwala na zapisanie tablic routingowych dla Rose pod
Linuxem.
Na przykład:
# rsparms -nodes add 5050295502 radio vk2xlz
Powyższe dodałoby ścieżkę do węzła Rose 5050295502 na porcie AX.25
'radio' znajdującego w pliku /etc/ax25/axports przez stację sąsiednią
o znaku VK2XLZ.
Możliwe jest ustawienie ścieżki, która uchwyci wiele docelowych stacji
Rose w formacie jednego wpisu. Składnia wygląda następująco:
# rsparms -nodes add 5050295502/4 radio vk2xlz
co jest jednoznaczne w wyżej podanym przykładem z tą różnicą, że uch
wycone zostają tutaj wszystkie stacje docelowe rozpoczynające się od 4
cyfr początkowych, w tym wypadku 5050. Jeszcze inaczej można zapisać
to tak:
# rsparms -nodes add 5050/4 radio vk2xlz
co jest chyba mniej dwuznaczne.
1122.. ŁŁąącczznnoośśccii AAXX..2255//NNeettRRoomm//RRoossee..
Po zaktywizowaniu i ustawieniu wszystkich interfejsów AX.25, NetRom i
Rose można w końcu popróbować łaczności.
Pakiet programów narzędziowych AX.25 zawiera program zwany 'call',
który jest programem terminala z rozłącznym ekranem dla AX.25, NetRom
i Rose.
Prosta łączność wygląda tak:
/usr/bin/call radio VK2DAY via VK2SUT
Łączność z węzłem NetRom o pseudonimie SUNBBS wygląda tak:
/usr/bin/call netrom SUNBBS
Łączność przez Rose do stacji HEARD o węźle 5050882960, w ten sposób:
/usr/bin/call rose HEARD 5050882960
Uwaga: 'call' musi wiedzieć na jakim porcie odbywa się łączność
ponieważ te same stacje mogą być przecież osiągalne przez jakikolwiek
port uprzednio skonfigurowany.
Więcej informacji można znaleźć w podręczniku systemowym 'man'.
1133.. UUssttaawwiieenniiee LLiinnuuxxaa ddoo pprrzzyyjjmmoowwaanniiaa łłąącczznnoośśccii..
Linux jako system operacyjny posiada ogromne możliwości i nagina się
do wielu sytuacji, gdy trzeba go konfigurować. Z elastycznością
przychodzi też trud ustawiena go tak, żeby robił to czego chcemy.
Trzeba zadać sobie wiele pytań przed rozpoczęciem ustawienia Linuxa do
przyjmowania łączności z zewnątrz przez Rose, AX.25 i NetRom.
Najważniejszym z nich jest:"Co chcę, aby użytkownicy zobaczyli podczas
łączności?". Ludzie piszą rozmaite ciekawe programy, które mogą służyć
użytkownikom, na przykład 'pms' zawarty w ax25-utils, lub 'node',
bardziej rozbudowany' też dostępny w ax25-utils. Można też dać
użytkownikom szansę zalogowania sie i użycia powłoki systemowej lub
napisać własny program, jakąś grę lub bazę danych i pozwolić
użytkownikom zrobić do niej łączność. Cokolwiek postanowisz musisz
określić to oprogramowaniu AX.25, aby wiedziało co odpalić podczas
wchodzących łączności.
Program 'ax25d' przypomina 'inetd' stosowany powszechnie do
przyjmowania wchodzących łączności TCP/IP na unixach. Czuwa on i
nasłuchuje na wchodzące łączności. Jeśli ją wykryje to sprawdza swój
plik systemowy, aby zdecydować jakim programem usłużyć tej konkretnej
łączności. Wytłumaczymy zatem jak ustawić ten plik, który jest
standardowy, narzędziem do przyjmowania wchodzących łączności.
1133..11.. EEddyyccjjaa pplliikkuu //eettcc//aaxx2255//aaxx2255dd..ccoonnff..
Plik ten ustawia demona 'ax25d' protokołu AX.25, który to demon
zajmuje się wchodzącymi łącznościami AX.25, NetRom i Rose.
Na perwszy rzut oka jest troche powikłane ale po chwili przekonasz
się, że "nie taki diabeł czarny, jak go malują". Trzeba być tylko
świadomy paru małych pułapek.
Ogólny format pliku ax25d.conf jest taki:
# This is a comment and is ignored by the ax25d program.
[port_name] || || {port_name}
window T1 T2 T3 idle N2
window T1 T2 T3 idle N2
parameters window T1 T2 T3 idle N2
window T1 T2 T3 idle N2
default window T1 T2 T3 idle N2
Gdzie:
#
stając na początku wiersza oznacza komentarz i jest całkowicie pomi
jane przez program 'ax25d'.
nazwa portu AX.25, NetRom lub Rose korespondująca kolejno do plików
/etc/ax25/axports, /etc/ax25/nrports and /etc/ax25/rsports. Nazwa
portu objęta jest nawiasem '[]' dla portu AX.25, '<>' dla NetRom, '{}'
dla Rose. Można też inaczej zapisać to pole stosując 'znak/identyfika
tor via' przed nazwą portu, pokazując w ten sposób, że będzie można
łączyć się do tego interfejsu przez podany tutaj znak. Podamy dalej
przykład, który to zilustruje.
znak/identyfikator węzła wchodzącego, dla którego te ustawienia będą
obowiązywać. Jeśli nie podasz tutaj numerycznego identyfikatora to
każdy będzie pasował.
window
parametr Window dla AX.25 (K) lub MAXFRAME dla tego ustawienia
T1
licznik retransmisji Ramki (T1) w jednoskach półsekundowych
T2
czas wyczekiwania oprogramowania AX.25 na następną ramkę przed przygo
towaniem odpowiedzi, w jednostkach jednosekundowych.
T3
czas wyczekiwania zanim oprogramowanie AX.25 zamknie bezczynną
łączność, mierzone w jednostkach 1 sekundy.
idle
wartość licznika braku akrywności w sekundach
N2
liczba kolejnych retransmisji, które nastąpią zanim łącze zostanie
zamknięte.
dostarcza mechanizmu pozwalającego na określenie pewnego typu zez
woleń. Podając rozmaite literki, każda reprezentuje jakieś zezwolenie,
można manipulować tą funkcją. Literki muszą być albo małe albo duże i
muszą być w jednym ciągu bez spacji. Oto do one:
u/U
UTMP - nie używane
v/V
Validate call - nie używane
q/Q
Quiet - nie prowadzi log-u dla łączności
n/N
check NetRom Neighbour - nie używane
d/D
Disallow Digipeaters - łączność musi być bezpośrednia, bez digi
l/L
Lockout - odrzuca łączność
*/0
marker - ustawia znaczek, nie zmienia zezwoleń
'userid' w Linuxie dla programu, który będzie obsługiwał wchodzącą łącznśść
pełna ścieżka dostępu programu, bez żadnych argumentów
tekst, który wystąpi dla tego programu po wydaniu polecenia systemowego
'ps' (Najczęsciej nazwa własna programu bez ścieżki dostępu).
są to argumenty podawane w wierszu poleceń dla . Argumenty
te przybierają rozmaite znaczenie w zależności od poniższych ustawień:
%d Nazwa portu, na którym przyjęto łączność.
%U znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, dużymi
literami.
%u znak/identyfikator AX.25 dołączonej stacji bez numerka SSID, małymi
literami.
%S znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, dużymi
literami.
%s znak/identyfikator AX.25 dołączonej stacji z numerkiem SSID, małymi
literami.
%P znak/identyfikator węzła, od którego dokonuje się
łączność, bez numerka SSID, dużymi literami
%p znak/identyfikator węzła, od którego dokonuje się
łączność, bez numerka SSID, małymi literami
%R znak/identyfikator węzła, od którego dokonuje się
łączność, z numerkiem SSID, dużymi literami
%r znak/identyfikator węzła, od którego dokonuje się
łączność, z numerkiem SSID, małymi literami
Potrzebna jest jedna sekcja według powyższego formatu dla każdego
interfejsu AX.25, NetRom i Rose, na którym przyjmowane mają być
wchodzące łączności typu AX.25, NetRom i Rose.
W paragrafie tym są jeszcze dwa specjalne wiersze, jeden rozpoczyna
się od słowa 'parameters' a drugi od 'default' (tak, tak, różnią się).
Wiersze te służą do specjalnych cełów.
Wiersz 'default' służy jako siatka-na-wszystko. Wchodzące łączności,
które nie mają własnych zezwoleń na danym interfejsie
dostaną wartości domyślne podane w 'default'. Jeśli wpisu 'default'
nie ma w ogóle to wszystkie wchodzące łączności nie posiadające
własnych zezwoleń będą natychmiast odrzucone bez ostrzeżenia.
Wiersz 'parameters' jest trochę bardziej subtelny i to tutaj jest ta
pułapka, o której wspominałem u początku. Jakiekolwiek pole,
którejkolwiek deklaracji dla węzła wchodzącego można wypełnić
znaczekiem '*' by uzyskać 'wartość domyślną'. Wiersz 'parameters' jest
wierszem, który deklaruje wspomniane 'wartości domyślne'.
Oprogramowanie jądra z kolei posiada swoje własne wartości domyślne,
których użyje jeśli nic nie określisz w wierszu 'parameters'. Pułapka
polega na tym, że wartościustawione wierszem 'parameters' działają
tylko w dól, a nie w górę. Można mieć więcej niż tylko jeden wpis
'parameters' dla poszczególnych interfejsów grupując sobie wartości
domyślne.
1133..22.. PPrroossttyy pprrzzyykkłłaadd pplliikkuu aaxx2255dd..ccoonnff ffiillee..
No dobrze, teraz ilustracja:
# ax25d.conf for VK2KTJ - 02/03/97
# This configuration uses the AX.25 port defined earlier.
# Win T1 T2 T3 idl N2 []
[VK2KTJ-0 via radio]
parameters 1 10 * * * * * root /usr/sbin/axspawn axspawn %u +
VK2XLZ * * * * * * *
VK2DAY * * * * * * *
NOCALL * * * * * * L
default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj
[VK2KTJ-1 via radio]
default * * * * * 0 root /usr/sbin/node node
parameters 1 10 * * * * *
NOCALL * * * * * * L
default * * * * * * 0 root /usr/sbin/node node
{VK2KTJ-0 via rose}
parameters 1 10 * * * * * root /usr/sbin/axspawn axspawn %u +
VK2XLZ * * * * * * *
VK2DAY * * * * * * *
NOCALL * * * * * * L
default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj
{VK2KTJ-1 via rose}
default * * * * * 0 root /usr/sbin/node node radio
Powyżej ukazane jest, że ktokolwiek usiłujący łączności do znaku
`VK2KTJ-0' na porcie AX.25 o nazwie 'radio' otrzyma takie zezwolenia:
Jeśli ktoś ma ustawione 'NOCALL' zostanie odrzucony, patrz użycie
literki 'L'.
Wiersz 'parameters' zmienia dwie wartości spośród domyślnych wartości
jądra (Windows i T1) oraz wyznacza program /usr/sbin/axspawn program,
aby był odpalony. Ktorakolwiek instancja programu 'axspawn'
uruchomiona w ten sposób będzie widoczna po wydaniu polecenia 'ps' w
Linuxie jako axspawn. Dwa następne wiersze dostarczają definicji dla
dwóch stacji, do których powyższe reguły zostaną zastosowane.
Ostatni wiersz w paragrafie jest definicją typu siatka-na-wszystko i
zostanie zastosowana do wszystkich innych stacji (łącznie z VK2XLZ i
VK2DAY jeśli mieć będą inne numerki SSID niż -1). Definicja ta ustawia
wprost wszystkie wartości, dodatkowo odpala wchodzącym łącznościom
typu AX.25 program 'pms' informując go, że łączność jest typu AX.25 i
że właścicielem jest znak VK2KTJ. (Patrz 'Ustawianie PMS'a' poniżej).
Następna konfiguracja przyjmuje łączności do znaku VK2KTJ-1 przez port
'radio'. Odpala ona program 'node' dla wszystkich, którzy się do niego
łączą.
Kolejna konfiguracja obsługuje NetRom. Zauważ zastosowanie nawiasów
znaku-większości i znaku-mniejszości zamiast nawiasów kwadratowych.
One właśnie deklarują wejście do NetRom. Ustawienie jest prostsze i
mówi tylko tyle, że ktokolwiek wchodzi do stacji przez NetRom na
porcie zwanym 'netrom' otrzyma program 'node', chyba że ma znak
'NOCALL' i wtedy zostanie odrzucony.
Dwie ostanie konfiguracje przeznaczone są dla wchodzących łączności
Rose. Pierwsza dla ludzi, którzy poprzez adres naszego węzła Rose
wołają znak 'vk2ktj-0' a druga dal tych, co wołają znak 'VK2KTJ-1'.
Działają one w dokładnie ten sam sposób. Zauważ zastosowane nawiasy,
które odróżniają port Rose.
Powyższy przykład jest zmyślony ale myślę, że jasno ilustruje ważne
cechy składni pliku konfiguracyjnego. Pełny opis pliku znajdziesz w
podręczniku systemowym 'man' dla ax25d.conf. Załączono bardziej
szczegółowy przykład w pakiecie ax25-utils, który też się może
przydać.
1133..33.. UUrruucchhaammiiaanniiee ddeemmoonnaa aaxx2255dd..
Po edycji wspomnianych dwóch plików można odpalić program ax25d
poleceniem:
# /usr/sbin/ax25d
Gdy program pracuje, wówczas użytkownicy powinni móc łączyć się przez
AX.25 do twojego Linuxa. Pamiętaj, abyś umieścił polecenie ax25d w
plikach rc, aby startowało za każdym razem gdy właczasz komputer.
1144.. UUssttaawwiieenniiee wwęęzzłłaa..
Oprogramowanie węzła zostało zrobione przez Tomi'ego Manninen
tomi.manninen@hut.fi i opierało się głownie na programie PMS.
Dostarcza ono dość elastycznych i kompletnych możliwości dla węzła,
które łatwo ustawić. Użytkownicy, po ustaleniu łączności, mogą odpalić
Telnet, wykonać dalsze łączności NetRom, Rose lub AX.25 jak również
uzuskiwać rozmaite informacje tak jak Finger, lista Węzłow i stacji
ostanio słyszanych, itp. Węzeł można ustawić dość prosto tak, że
zaserwuje on jakąkolwiek usługę dostępną pod Linuxem.
Normalnie, 'node' wywoływany może być przez program 'ax25d', odpowie
on też na wezwania wchodzące drogą TCP/IP dzięki 'inetd', który wpuści
użytkownika i odpali go dla niego, lub można go uruchomić z wiersza
poleceń.
1144..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//nnooddee..ccoonnff..
Plik node.conf decyduje o głównej konfiguracji węzła. Jest prostym
plikiem tekstowym, a jego składnia jest taka:
# /etc/ax25/node.conf
# configuration file for the node(8) program.
#
# Linie rozpoczynające się od # są komentarzami i są ignorowane.
# Hostname
# deklaruje nazwę 'hostname' dla węzła
hostname radio.gw.vk2ktj.ampr.org
# Local Network
# pozwala na określenie tego co 'local' w celach rewizji zezwoleń
# przy użyciu node.perms
localnet 44.136.8.96/29
# Hide Ports
# Jeśli wpisane, pozwala na ukrycie portów przed użytkownikami. Podane porty
# nie będą wyświetlane poleceniem (P)orts.
hiddenports rose netrom
# Callserver
# jeśli wpisane, pozwoli użytkownikom na dostęp do callserver'a.
callserver zone.oh7rba.ampr.org
# Node Identification.
# to pojawi się w zachęcie systemowej węzła
NodeId LINUX:VK2KTJ-9
# NetRom port
# To jest nazwa portu NetRom, który używany będzie do wychodzących łączności
# z węzła 'node'.
NrPort netrom
# Node Idle Timeout
# Określa w sekundach wartość "idle time" dla łączności z tym węzłem
idletimout 1800
# Connection Idle Timeout
# określa licznik "idle" dla łączności uczynionych przez ten węzeł, w sekundach
# seconds.
conntimeout 1800
# Reconnect
# Określa czy łączność z użytkownikami powinna być ponowiona gdy ich łączność
# z innymi stacjami została przerwana czy też mają być rozłączeni na dobre.
#
reconnect on
# Pseudonimy dla poleceń
# pozwala na uproszczenie uwikłanych poleceń węzła
alias CONV "telnet vk1xwt.ampr.org 3600"
alias BBS "connect radio vk2xsb"
# Pseudonimy dla poleceń zewnętrzych
# Pozwala na odpalanie programów z zewnątrz spod węzła 'node'.
# extcmd
# Flag == 1 to jest jedyna dotychczas stosowana funkcja.
# jest pisane tak jak dla ax25d.conf
extcmd PMS 1 root /usr/sbin/pms pms -u %U -o VK2KTJ
# Logging
# Ustawienie log-u do log-u systemowego. 3 - najbardziej gadatliwe,
# 0 - wyłączone.
loglevel 3
1144..22.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//nnooddee..ppeerrmmss..
Węzeł 'node' pozwala na ustawienie pewnych zezwoleń dla użytkowników.
Zezwolenia te pozwalają ci decydować, którzy użytkownicy mogą używać
opcji takich jak (T)elnet, i (C)onnect, na przykład, a którzy nie
mogą. Plik node.perms zawiera właśnie te informacje i składa się z
pięciu kluczowych pól. Jeśli pole zawiera znaczek '*' to zastępuje
cokolwiek. Przydaje się to do definicji reguł domyślnych.
user
zawiera znak lub użytkownik do którego kolejne zezwolenia się tyczą.
Numerki SSID są ignorowane, zatem umieścić tutaj należy goły znak.
method
każdy protokól i metoda dostępu może otrzymać swoje zezwolenia. Na przyklad
możesz zezwolić użytkownikom dołączonym protokołem AX.25 i NetRom używać
opcji (C)onnect, ale zabronić tego innym, którzy weszli telnetem
z nie-lokalnego węzła. Drugie pole zatem pozwala określenie reguł
dla łączności, które weszły różnymi metodami. Oto te metody:
method description
------ -----------------------------------------------------------
ampr Użytkownik wszedł telnetem z adresu amprnet (44.0.0.0)
ax25 Użytkownik wszedł drogą AX.25
host Użytkownik wszedł odpalając 'node' z wiersza poleceń
inet Użytkownik wszedł telnetem z adresu 'non-local'i z poza amprnet
local Użytkownik wszedł telnetem z komputera typu 'local'
netrom Użytkownik wszedł drogą NetRom
rose Użytkownik wszedł drogą Rose
* Użytkownik wszedł jakkolwiek.
port
Dla użytkowników wchodzących przez AX.25 można udzielać zezwoleń osobno
każdy port Ax.25. Pozwala to decydować co użytkownicy AX.25 mogą robić
zależnie od tego do jakiego portu się podłączyli. Trzecie pole zawiera
nazwę owych portów, jeśli używasz tej funkcji. Działa to tylko dla
łączności przez AX.25.
password
nieobowiązkowo, można ustawić węzeł tak, że przedstawi on użytkownikom
zachętę systemową, aby wprowadzili hasło zanim się dołączą. Przydaje się
to do ochrony tych użytkowników, którzy ustawiony mają wysoki stopień
zezwoleń. Jeśli czwarte pole ma być wypełnione to jego wartość jest
hasłem, które będzie przyjęte.
permissions
to pole stoi jako ostanie dla każdego wpisu w pliku. Jest ono kodowane
bitowo tak, że każda usługa posiada swoją wartość bitową, której wpisanie
powoduje, że zezwolenie na usługę jest udzielone lub zabronione. Oto
lista usług i im korespondujących warości bitowych:
value description
----- -------------------------------------------------
1 Zezwolenie na Login
2 Zezwolenie na (C)onnect drogą AX.25
4 Zezwolenie na (C)onnect drogą NetRom
8 Zezwolenie na (T)elnet do 'lokalnych' węzłów
16 Zezwolenie na (T)elnet do węzłów z sieci amprnet (44.0.0.0)
32 Zezwolenie na (T)elnet do 'nie-lokalnych', węzłów z poza amprnet
64 Zezwolenie na (C)onnect drogą AX.25 przez ukryte porty
128 Zezwolenie na (C)onnect drogą Rose
Aby zakodować wartość zezwoleń dla danej reguły poprostu wybierz te
zezwolenia, które chcesz, aby użytkownik miał i dodaj ich wartości
bitowe. Otrzymaną w ten sposób cyfrę należy umieścić w polu nr. 5.
Oto jak można ustawić plik node.perms:
# /etc/ax25/node.perms
#
# Operatorem węzła jest VK2KTJ, posiada hasło 'secret' i wolno mu szystko
# jakąkolwiek metodą wszedł
vk2ktj * * secret 255
# Ci użytkownicy są nie wejdą w ogóle
NOCALL * * * 0
PK232 * * * 0
PMS * * * 0
# Użytkownicy INET też nie wejdą w ogóle
* inet * * 0
# Ci, którzy weszli drogą AX.25,NetRom, Local, Host i AMPR mają zezwolenie
# na (C)onnect i (T)elnet do węzłów 'lokalnych' i amprnet, ale nie innych
# adresów IP.
* ax25 * * 159
* netrom * * 159
* local * * 159
* host * * 159
* ampr * * 159
1144..33.. UUssttaawwiieenniiee wwęęzzłłaa,, aabbyy bbyyłł uurruucchhaammiiaannyy zz aaxx2255dd..
Program 'node' powinien normalnie być uruchamiany przez program
'ax25d'. Dokonujemy tego wpisując odpowiednie reguły w pliku
/etc/ax25/ax25d.conf. Na mojej maszynie chcialem, aby użytkownicy
mieli wybór łączności do węzła lub innych programów usługowych.
'ax25d' pozwala właśnie na to jeśli sprytnie powpisujesz pseudonimy
portów. Dla przykładu, stosując powyższą konfigurację ax25d chcę
ustawić 'node' tak, aby użytkownicy łączący się do VK2KTJ-1 dostali
się do węzła 'node'. Wpisałem zatem takie wiersze do pliku
/etc/ax25/ax25d.conf:
[vk2ktj-1 via radio]
default * * * * * 0 root /usr/sbin/node node
To oznacza, że oprogramowanie jądra Linuxa odpowie na prośbę o
łączność dla znaku 'VK2KTJ-1' na porcie AX.25 nazwanego 'radio', i
odpali potem program node.
1144..44.. UUssttaawwiieenniiee wwęęzzłłaa,, aabbyy bbyyłł uurruucchhaammiiaannyy zz ''iinneettdd''..
Jeśli chcesz, aby użytkownicy mogli wejść telnetem do twojej maszyny i
uzyskać dostęp do węzła 'node' to nie ma nic prostszego. Najpierw
zdecyduj na jaki port użytkownicy powinni się łaczyć. W tym wypadku
wybrałem arbitralny numer 4000, choć Tomi podaje w swojej dokumentacji
szczegóły na temat jak podmienić zwyczajnego demona telnetu na demona
węzła 'node'.
Potrzebujesz zmodyfikować dwa pliki.
Do pliku /etc/services powinieneś dodać:
node 4000/tcp #OH2BNS's node software
a do pliku /etc/inetd.conf dodaj:
node stream tcp nowait root /usr/sbin/node node
Po wykonaniu tego i po restarcie programu 'inetd' użytkownicy, którzy
wchodzą telnetem na port 4000 w twojej maszynie dostaną zachętę syste
mową, aby się zalogować, i jeśli zostało to dla nich skonfigurowane to
hasło, po podaniu którego podłączeni zostaną do węzła 'node'.
1155.. UUssttaawwiieenniiee pprrooggrraammuu aaxxssppaawwnn..
Program axspawn pozwala wchodzącym drogą AX.25 stacjom na zalogowanie
się do twojego komputera. Może on zostać wywołany programem ax25d w
taki sam sposób jak program 'node'. Należy dodać tego typu zapis do
pliku /etc/ax25/ax25d.conf, jeśli pragniesz, aby użytkownicy mogli
logować się do twojego komputera:
default * * * * * 1 root /usr/sbin/axspawn axspawn %u
Jeśli wiersz zakończony zostanie znaczniek '+' to użytkownicy, przed
zalogowaniem, będą musieli uderzyć przycisk 'Return'. Wartość domyślna
ma to wyłączone. Poszczególne zapisy dla stacji, które występują pod
tym wierszem spowodują uruchomienie programu 'axspawn' podczas
wchodzącej łączności. Po uruchomieniu, 'axspawn' najpierw sprawdza czy
na wierszu poleceń ukazał się legalny znak/edentyfikator, pozbawia go
numerka SSID, a potem sprawdza plik /etc/passwd czy użytkownik posi
ada założone konto. Jeśli tak, i hasło jest ""(puste) lub '+', wtedy
wpuszcza użytkownika. Jeśli w polu hasła jest cokolwiek innego to
użytkownik jest odpytywany o swoje hasło. Przy nieistaniejących kon
tach w pliku /etc/passwd 'axspawn' można ustawić tak, że utworzy je
sam.
1155..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//aaxxssppaawwnn..ccoonnff..
Zachowanie programu axspawn można zmieniać plikiem
/etc/ax25/axspawn.conf. Plik ten ma formę:
# /etc/ax25/axspawn.conf
#
# pozwala na automatyczne zakładanie kont dla użytkowników
create yes
#
# wpuszcza użytkownika 'gość' jeśli wyżej jest 'no' lub niepowiodły sie
# inne rzeczy. Wyłacza sie 'no'.
guest no
#
# ID dla groupy lub nazwa konta dla samozakładania konta
group ax25
#
# first user id to use
first_uid 2001
#
# maximum user id
max_uid 3000
#
# gdzie umieszczać katalog domowy dla nowych użytkowników
home /home/ax25
#
# powłoka systemowa dla użytkownika
shell /bin/bash
#
# kojarzenie znaków z użytkownikami dla łączności wychodzących.
associate yes
Powyższe osiem ustawialnych przełaczników mają takie znaczenie:
# wskazuje, ze to komentarz
create
jeśli ustawione na 'yes' to 'axspawn usiłuje sam założyć konto dla
użytkownika, który jeszcze nie ma wpisu w pliku /etc/passwd.
guest
pole to określa nazwę login-u konta dla ludzi włączających się ale
nie mających jeszcze konta przy 'create' ustawionym na 'no'. Zwykle
jest to ax25 lub guest
group
to pole określa nazwę grupy, jaka zostanie użyta dla włączających się
użytkowników nie mających jeszcze wpisu w pliku /etc/passwd.
first_uid
jest to cyfra pierwszego userid wybieranego automatycznie dla nowych
użytkowników.
max_uid
jest to najwyższy numer, jaki będzie użyty dla userid nowych użytkowników
home
to jest katalog domowy (login) dla nowych uzytkowników
shell
to określa powłokę systemową dla nowych użytkowników
associate
to oznaczenie wskazuje czy użytkownik, po zalogowaniu się, wykonujący
łączność wychodzącą będzie miał swój własny znak, czy też znak twojej
stacji.
1166.. UUssttaawwiieenniiee PPMMSS..
Program pms to implementacja prostego 'personal message system'
napisanego początkowo przez Alan'a Cox. Dalszy rozwój podjęty został
przez David'a Brown, N2RGT, dcb@vectorbd.com. Obecnie jest nadal
bardzo prosty mający mozliwość wysłania e-mail'a do właściciela
systemu i uzyskać ograniczone informacje maszynie lecz David pracuje
nad tym, jak poszerzyć jego możliwości i uczynić go bardziej
użytecznym.
Pozostało więc teraz parę prostych plików do stworzenia, które udzielą
użytkownikom pewnych informacji o samym systemie, a potem dodać
odpowiedni zapis do pliku ax25d.conf, aby dołączający się użytkownicy
dostali się do PMS.
1166..11.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//ppmmss..mmoottdd..
Plik /etc/ax25/pms.motd zawiera 'wiadomość dnia', którą użytkownicy
ujrzą po ustaleniu łączności i zwykłym nagłóku BBS. Ten prosty plik
jest tekstowy i wiadomość w nim zawarta będzie wysłana do
użytkowników.
1166..22.. UUttwwoorrzzeenniiee pplliikkuu //eettcc//aaxx2255//ppmmss..iinnffoo..
Plik /etc/ax25/pms.info również ma zawierać tekstowe, bardziej
szczegółowe informacje na tremat twojej stacji. Informacja w nim
zawarta przedstawiana jest użytkownikom w odpowiedzi na ich polecenie
'Info' z zachęty PMS>.
1166..33.. KKoojjaarrzzeenniiee zznnaakkóóww AAXX..2255 zz kkoonnttaammii uużżyyttkkoowwnniikkóóww
Gdy jakiś użytkownik wysyła pocztę do znaku AX.25 to 'pms' spodziewa
się, że znak ten jest własnością prawdziwego użytkownika z kontem na
twojej maszynie. Opisane jest to w osobnej sekcji.
1166..44.. DDooddaanniiee PPMMSS ddoo pplliikkuu //eettcc//aaxx2255//aaxx2255dd..ccoonnff..
Dodanaie programu 'pms' do pliku /etc/ax25/ax25d.conf jest bardzo
proste. Trzeba jednak pamiętać o jednej malutkiej rzeczy. Dave dodał
możliwość podania argumentów dla PMS na wierszu poleceń, które
kontrolują kilkanaście konwencji związanych z końcem wiersza.
Konwencje AX.25 i NetRom oczekują, że 'end-of-line' to 'carriage
return', 'linefeed' podczas gdy w unixach to jest poprostu
'newline'.Więc, dla przykładu, jeśli checiałbyś dodać zapis, który
oznaczałby, że należy odpalić PMS dla wchodzącej łączności przez port
AX.25, to dadaj taki wiersz:
default 1 10 5 100 5 0 root /usr/sbin/pms pms -a -o vk2ktj
To poprostu odpala program pms mówiąc mu, że jest to łączność
wchodząca drogą AX.25 i że właścicielem PMS'a jest vk2ktj. Popatrz na
podręcznik systemowy 'man' w sprawie innych argumentów dla innych
metod dostępu.
1166..55.. SSpprraawwddzzeenniiee PPMMSS''aa
Aby sprawdzić czy PMS działa sprubuj taką komendę z wiersza poleceń:
# /usr/sbin/pms -u vk2ktj -o vk2ktj
Podstaw swój własny znak w miejsce mojego. Polecenie to odpali PMS
mówiąc mu, że ma używać uniksowych konwencji end-of-line, i że
użytkownikiem logującym się jest vk2ktj. Możesz zrobić teraz wszystko
to, co użytkownicy łączący się z zewnątrz.
Dodatkowo mógłbyś poprosić jakąś inną stację, aby się do ciebie
dołączyła, aby potwierdzić, że ustawienie pliku ax25d.conf działa
poprawnie.
1177.. UUssttaawwiieenniiee pprrooggrraammóóww uusseerr__ccaallll..
Programy 'user_call' to w rzeczywistości są 'ax25_call' i
'netrom_call'. Pomuślane są one tak, że mogą być wezwane z 'ax25d', w
celu zautomatyzowania łączności z odległymi komputerami. Naturalnie
można je wywołać z wielu innych miejsc, np. z powłoki systemowej, lub
innych demonów, jak np. programu 'node'.
Przupominają w swej prostocie program 'call'. Nie zajmują się obróbką
żadnych danych, zatem sam musisz zadbać o to jak traktowane będzie
end-of-line.
Rozpocznijmy od tego jak można ich używać. Wyobraź sobie, że posiadasz
małą sieć w domu i że jednym komputerem jest Linux spelniający rolę
bramki radiowej, oraz drugi komputer, który jest węzłem BPQ. Komputery
złączone są razem ethernetem.
Noramlnie, użytkownicy radiowi, aby móc łączyć się z węzłem BPQ
musieliby robić to przez digipeating poprzez twojego linuxa, lub
połączyć się wpierw z programem 'node' na twoim linuxie, a stamtąd
wykonać następne połączenie do węzła BPQ.
Wyobraź sobie, że węzeł BPQ ma znak VK2KTJ-9 a linux ma port o nazwie
'bpq' obsługujący AX.25/ethernet. Również dodajmy, że bramka radiowa
Linux posiada port radiowy 'radio'.
Zapis do pliku /etc/ax25/ax25d.conf wyglądałby w ten deseń:
[VK2KTJ-1 via radio]
default * * * * * * *
root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9
i umożliwiłby użytkownikom połączenie wprost do `VK2KTJ-1' co w grun
cie rzeczy jest demonem ax25d pod Linuxem a następnie przełoczyłoby
ich na łączność AX.25 do `VK2KTJ-9' przez interfejs 'bpq'.
Jest cały asortyment innych możliwych kombinacji, które są do
wypróbowania. Programy 'netrom_call' oraz 'rose_call' pracują w
podobny sposób. Jeden z radioamatorów wykorzystał tę funkcję, aby
ułatwić łączność do odległego BBS-u. Noramalnie użytkownik musiałby
wprowadzić dlugą strunę poleceń, aby wykonać tę łączność więc on
dokonał wpisu, który sprawiał, że wspomniany BBS wyglądał tak, jakby
dostępny on był na sieci lokalnej; demon ax25d pośredniczył w
łączności do odległego BBS-u.
1188.. KKoojjaarrzzeenniiee zznnaakkóóww AAXX..2255 zz kkoonnttaammii uużżyyttkkoowwnniikkóóww LLiinnuuxxaa..
Istnieje wiele sutuacji, w których pożądane jest, aby powiązać znak z
kontem użytkownika Linuxa. Jedną z takich sutuacji byłaby, gdy wielu
radioamatorów dzielą ze sobą tę samą maszynę a chcą używać swoich
znaków dla wychodzących łączności. Innym przykładem jest PMS, którego
użytkownicy chcieliby rozmawiać z jakimś użytkownikiem na twoim
komputerze.
Oprogramowanie AX.25 dostarcza sposobu pozwalającego na skojarzenie
znaku z kontem użytkownika. Wspominaliśmy to już wcześniej w sekcji o
PMS, ale podkreślam to raz jeszcze, żeby nie umknęło to twej uwadze.
Kojarzenia dokonujemy poleceniem 'axparms'. Ota jak wygląda przykład:
# axparms -assoc vk2ktj terry
Polecenie to kojarzy powyższy znak AX.25 vk2ktj z kontem 'terry' na
tym komputerze. Więc przykładowo, każda poczta dla vk2ktj z pms-u
będzie dostarczona do konta 'terry' pod Linuxem.
Zapamiętaj, aby wpisać te kojarzenia do plików rc, aby dostępne były
za każdym razem, gdy odpalasz komputer.
Zauważ, że nigdy nie powinieneś kojarzyć znaku z kontem 'root'
ponieważ spowoduje to dużo problemów konfiguracyjnych w innych
programach.
1199.. JJaakk ppoołłąącczzyyćć ssiieecciioowwee oopprrooggrraammoowwaanniiee NNOOSS zz jjąąddrreemm lliinnuuxxaa??
Wielu ludzi preferuje którąś z wersji NOS uruchamianą w Linuxie
ponieważ oferują one wiele cech funkcji, do któtych przywykli.
Większość tych ludzi chciałoby również mieć taką mozliwość, aby NOS
mógł mówić do jądra Linuxa po to, by móc zaoferować jego niektóre
usługi dla użytkowników radiowych.
1199..11.. ŁŁąącczzeenniiee NNOOSS--aa ii LLiinnuuxxaa zzaa ppoommooccąą ''ffaajjkkii''..
Następująca informacja jest wkładem Brandon'a S. Albery, KF8NH, który
wytłumaczył jak wzajemnie połączyć NOS'a uruchomionego pod Linuxem z
samym jądrem Linuxa przy użyciu urządzenia 'fajka'.
Ponieważ zarówno Linux jak NOS obsługują protokół 'slip' możliwe jest
połączenie nich obu ustawiając łącze slip. Kosztownym sposobem możnaby
to zrobić za pomocą pętli kablowej i dwóch portów seryjnych; byłoby to
powolne łącze. Linux dostarcza funkcji, która dostępna jest na wielu
innych Unixo-podobnych systemach operacyjnych, zwanej 'fajką'. Są to
specjalne pseudo interfejsy, które przedstawiają się dla
oprogramowania jako standardowe urządzenia tty, lecz faktycznie są
tylko pętlami do następnej 'fajki'. Urządzenia te mogą być używane
jeśli program pierwszy otworzy je ze strony 'master', a następnie
program drugi ze strony 'slave'. Gdy oba końce zostaną otworzone,
wówczas programy mogą się komunikować ze sobą pisząc poprostu literki
przez 'fajkę' jakby to było normalne urządzenie terminalowe.
Zanim połączysz jakąś wersję NOS-a lub innego programu z jadrem
Linuxa, wpierw musisz wybrać jakąś 'fajkę'. Znajdziesz ją szukając w
katalogu '/dev'. Końcówki 'master' nazywają się ptyp[1-f] a końcówki
'slave' znane są jako: ttyp[1-f]. Pamiętaj, że występują parami. Jeśli
weźmiesz 'fajkę' /dev/ptypf jako końcówkę 'master' to musisz dobrać
'fajkę' /dev/ttypf jako 'slave'.
Po wybraniu pary urządzeń 'fajka', należy przypisać końcówkę 'master'
dla jądra a końcówkę 'slave' dla programu NOS ponieważ jądro Linuxa
rozpoczyna jako pierwsze, a 'master' musi być otworzone na początku.
Linux, warto wiedzieć, powinien mieć odmienny IP adres od adresu NOS-
a, zatem musisz mu przypisać unikalny adres, jeśli jeszcze tego nie
uczyniłeś.
# /sbin/slattach -s 38400 -p slip /dev/ptypf &
# /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 /
mtu 1536 44.70.4.88
# /sbin/route add 44.70.248.67 sl0
# /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67
W tym przykładzie jądro linuxa otrzynało adres IP 44.70.4.88 a program
NOS adres IP 44.70.248.67. Polecenie 'route' w ostatnim wierszu
instruuje jądro linuxa, że wszelkie datagramy z przeznaczeniem dla
amprnet-u mają iść poprzez łącze slip utworzone poleceniem slattach.
Zwykle polecenia powyższe umieścić należałoby w w plikach
/etc/rc.d/rc.inet2 po tym jak wszystkie inne ustawienia siciowe
zostaną wykonane, po to, aby łącze slip było dostępne po przeładowaniu
komputera. Uwaga: nie ma powodów, aby używać cslip zamiast slip gdyż
to właściwe redukuje osiągi ponieważ łącze to jest virtualne i
zachodzi wystarczająco szybko, a uprzenia kompresja nagłówków zabiera
więcej czasu aniżeli przesył nieskompresowanych datagramów.
Ustawienie łącza po stronie NOS-a można pokusić się i zrobić tak:
# interfejs można nazwać jak ci się podoba. ja nazwałem go dla wygody
# 'linux'
#
attach asy ttypf - slip linux 1024 1024 38400
route addprivate 44.70.4.88 linux
Polecenia te utworzą port slip zwany 'linux' na 'fajce' z końcówką
'slave' i dołączą go do jadra linuxa, dodadzą 'ścieżkę', aby łącze
pracowało. Po wystartowaniu NOS-a pod Linuxem powinieneś móc 'zapin
gować' Linuxa i odwrotnie. Jeśli nie, posprawdzaj, że nie popełniłeś
żadnych błędów, szczególnie przy adresach i na końcówkach 'fajek'.
2200.. ZZaappiissyy ww pplliikkuu //pprroocc..
System plików /proc zawiera pewną liczbę plików związanych
bezpośrednio z oprogramowaniem jądra dla AX.25 i NetRom. Używane są
one głownie przez programy z pakietu ax25-utils ale mają taki
format,że być może chciałbyś je przeczytać. Foramt jest naprawdę łatwy
i nie sądzę, że trzeba wiele tłumaczyć.
/proc/net/arp
zawiera mapę dla protokołu Address Resolution pomiędzy adresami IP
a adresami protokołu warstwy MAC. Te obejmują AX.25, ethernet i niektóre
protokoły wartstwy MAC
/proc/net/ax25
zawiera listę otwartych gniazd AX.25. Mogą one albo sluchać na
nadchodzące łączności lub są aktywne.
/proc/net/ax25_bpqether
zawiera mapę dla AX.25 a BPQ o znakach
/proc/net/ax25_calls
zawiera mapę o userid i znakach ustawioną przez polecenie
axparms -assoc command.
/proc/net/ax25_route
zawiera informację na temat ścieżki digipeaterów
/proc/net/nr
zawiera listę gniazd NetRom, które są otwarte na skutek tego, że
sluchają lub, że są aktywne.
/proc/net/nr_neigh
zawiera informacje o sąsiadach, o których NetRom jest świadome.
/proc/net/nt_nodes
zawiera informacje o węzłach znanych dla oprogramowania NetRom
/proc/net/rose
zawiera listę otwartych gniazd Rose na skutek tego, że albo słuchają
albo są aktywne
/proc/net/Rose_nodes
zawiera mapę o docelowych stacjach Rose przez sąsiadów Rose
/proc/net/rose_neigh
zawiera listę węzłów, które Rose zna
/proc/net/rose_routes
zawiera listę wszystkich aktywnych łączy Rose
2211.. PPrrzzyykkłłaaddoowwee kkoonnffiigguurraaccjjee..
Podane są poniżej przykłady niektórych typowych konfiguracji. Są to
tylko rady ponieważ jest tyle sposobów ustawienia swojej sieci ile
istnieje sieci do skonfigurawania, ale te mogą przydać ci się na
początek.
2211..11.. MMaałłaa ssiieećć zz lliinnuuxxeemm jjaakkoo rroouutteerreemm ddllaa llookkaallnneejj ssiieeccii rraaddiioowweejj
Wielu z was posiada małe, lokalne sieci w domu i chcecie podłaczyć te
komputery do swojej lokalnej sieci radiowej. Właśnie takiego układu
używam sam w domu. Zadbałem o to, aby dostać odpowiednią liczbę
właściwych adresów, tak, aby można było je uchwycić jednym routingiem
dla wygody i używam ich na swojej lokalnej sieci ethernet. Wasz
koordynator adresów IP pomoże wam w tym również jeśli chcecie tego
sprobować. Adresy mojej lokalne sieci Ethernet tworzą podsekcję
adresów sieci radiowej. Następujące ustawienie jest rzeczywistę dla
linuxa jako routera na mojej sieci w domu:
--- .
| Network /---------\ . Network
| 44.136.8.96/29| | . 44.136.8/24 \ | /
| | Linux | . \|/
| | | . |
| eth0 | Router | . /-----\ /----------\ |
|---------------| |-----| TNC |----| Radio |---/
| 44.136.8.97 | and | . \-----/ \----------/
| | | sl0
| | Server | 44.136.8.5
| | | .
| | | .
| \_________/ .
--- . . . . . .
#!/bin/sh
# /etc/rc.net
# To ustawienie dostarcza jednego portu AX.25 w KISS i jednego interfejsu
# Ethernet.
echo "/etc/rc.net"
echo " Configuring:"
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
echo -n " ethernet:"
/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
broadcast 44.136.8.103 up
/sbin/route add 44.136.8.97 eth0
/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
echo " done."
echo -n " AX.25: "
kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
route add -host 44.136.8.5 sl0
route add -net 44.136.8.0 window 1024 sl0
echo -n " Netrom: "
nrattach -i 44.136.8.5 netrom
echo " Routing:"
/sbin/route add default gw 44.136.8.68 window 1024 sl0
echo " default route."
echo done.
# end
/etc/ax25/axports
# name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
/etc/ax25/nrports
# name callsign alias paclen description
netrom VK2KTJ-9 LINUX 235 Linux Switch Port
/etc/ax25/nrbroadcast
# ax25_name min_obs def_qual worst_qual verbose
4800 1 120 10 1
W jądrze trzeba uaktywnić IP_FARWARDING.
Pliki konfiguracyjne AX.25 są mniej więcej takie same ja przykłady we
wcześniejszych sekcjach, więc zajrzyj do nich gdy trzeba.
Zdecydowałem się przypisać adres IP dla portu radiowego, który nie
nałeży do bloku mojej domowej sieci. Nie musiałem tak robić, można
było śmiało użyć 44.136.8.97 na tym porcie.
44.136.8.68 to moja lokalna bramka do enkapsulacji IPIP, zatem tutaj
kieruję ścieżkę domyślną.
Każdy komputer na sieci Ethernet ma ścieżkę:
route add -net 44.0.0.0 netmask 255.0.0.0 \
gw 44.136.8.97 window 512 mss 512 eth0
Stosowanie parametrów mss i window oznacza, że uzyskuję maksymalne
osiągi zarówno na płączeniach Ethernet jak i radiowych.
- na routerze mam odpalone rzownież ftp, http, smail i inne demony więc jest on
jedynym komputerem, który innym serwuje usługi
- mój router to pokorne 386DX20 z 20 Mb twardego dysku i bardzo minimalną wersją
linuxa.
2211..22.. KKoonnffiigguurraaccjjaa pprrzzyykkłłaaddoowwaa ddllaa bbrraammkkii zz eennkkaappssuullaaccjjąą IIPPIIPP..
Linux jest obecnie pospolicie używany jako bramka dla enkapsulacji
TCP/IP po całym świecie. Nowy sterownik 'tunnel' obsługuje wielokrotne
ścieżki enkapsulacji i sprawia, że demon ipip jest przestarzały.
Typowa konfiguracja wygłądałaby w takowy sposób:
--- .
| Network /---------\ . Network
| 154.27.3/24 | | . 44.136.16/24 \ | /
| | Linux | . \|/
| | | . |
| eth0 | IPIP | . /-----\ /----------\ |
---|---------------| |-----| TNC |----| Radio |---/
| 154.27.3.20 | Gateway | . \-----/ \----------/
| | | sl0
| | | 44.136.16.1
| | | .
| | | .
| \_________/ .
--- . . . . . .
Pliki którymi trzeba się zająć to:
# /etc/rc.net
# ustawiamy tutaj jeden port radiowy AX.25 w trybie KISS, jeden Ethernet,
# używamy sterownika 'tunnel' do IPIP encap/decapsulation
#
#
echo "/etc/rc.net"
echo " Configuring:"
#
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
#
echo -n " ethernet:"
/sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \
broadcast 154.27.3.255 up
/sbin/route add 154.27.3.20 eth0
/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
echo " done."
#
echo -n " AX.25: "
kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
/sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
/sbin/route add -host 44.136.16.1 sl0
/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
#
echo -n " tunnel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo done.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.
and:
# /etc/ipip.routes
# This file is generated using the munge script
#
/sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
/sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
/sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
...
...
...
/etc/ax25/axports
# name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
Niektóre uwagi do zanotowania:
- Nowy sterownik 'tunnel' używa pola gw w tablicach routingowych w miejsce
parametru 'pointopoint' do określenia adresu odległej bramki IPIP. Oto
dlaczego obecnie obsługuje wielokrotne ścieżki na każdym interfejsie.
- Można ustawić dwa interfejsy sieciowe z tym samym adresem. W tym przykładzie
zarówno interfejs sl0 jak i tunl0 przyjęły adres IP portu radiowego. Czyni
się tak w tym celu, aby odległa bramka widziała poprawne adresy na enkapsulo-
wanych datagramach wysyłanych do niej z twojej bramki.
- polecenia 'route' do określania enkapsulowanych ścieżek można wygenerować
używając modyfikowanej wersji "skryptu munge". Podane jest to niżej. Polecenia
route wpisane byłyby potem do osobnego pliku i czytane przez bash
z /etc/ipip.routes (założywszy, że nazwałeś plik z poleceniami routingu nazwą
/etc/ipip.routes) tak jak na ilustracji. Plik źródłowy musi mieć format
w stylu poleceń 'route' pod NOS-em.
- Zauważ stosowanie argumentu 'window' dla polecenia 'route'. Ustawienie tego
parametru na właściwą wartość polepsza osiągi na łączu radiowym
Oto nowy skrypt 'tunnel-munge':
#!/bin/sh
#
# From: Ron Atkinson
#
# This script is basically the 'munge' script written by Bdale N3EUA
# for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's
# purpose is to convert a KA9Q NOS format gateways route file
# (usually called 'encap.txt') into a Linux routing table format
# for the IP tunnel driver.
#
# Usage: Gateway file on stdin, Linux route format file on stdout.
# eg. tunnel-munge < encap.txt > ampr-routes
#
# NOTE: Before you use this script be sure to check or change the
# following items:
#
# 1) Change the 'Local routes' and 'Misc user routes' sections
# to routes that apply to your own area (remove mine please!)
# 2) On the fgrep line be sure to change the IP address to YOUR
# gateway Internet address. Failure to do so will cause serious
# routing loops.
# 3) The default interface name is 'tunl0'. Make sure this is
# correct for your system.
echo "#"
echo "# IP tunnel route table built by $LOGNAME on `date`"
echo "# by tunnel-munge script v960307."
echo "#"
echo "# Local routes"
echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
echo "#"
echo "# Misc user routes"
echo "#"
echo "# remote routes"
fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
awk '{
split($3, s, "/")
split(s[1], n,".")
if (n[1] == "") n[1]="0"
if (n[2] == "") n[2]="0"
if (n[3] == "") n[3]="0"
if (n[4] == "") n[4]="0"
if (s[2] == "1") mask="128.0.0.0"
else if (s[2] == "2") mask="192.0.0.0"
else if (s[2] == "3") mask="224.0.0.0"
else if (s[2] == "4") mask="240.0.0.0"
else if (s[2] == "5") mask="248.0.0.0"
else if (s[2] == "6") mask="252.0.0.0"
else if (s[2] == "7") mask="254.0.0.0"
else if (s[2] == "8") mask="255.0.0.0"
else if (s[2] == "9") mask="255.128.0.0"
else if (s[2] == "10") mask="255.192.0.0"
else if (s[2] == "11") mask="255.224.0.0"
else if (s[2] == "12") mask="255.240.0.0"
else if (s[2] == "13") mask="255.248.0.0"
else if (s[2] == "14") mask="255.252.0.0"
else if (s[2] == "15") mask="255.254.0.0"
else if (s[2] == "16") mask="255.255.0.0"
else if (s[2] == "17") mask="255.255.128.0"
else if (s[2] == "18") mask="255.255.192.0"
else if (s[2] == "19") mask="255.255.224.0"
else if (s[2] == "20") mask="255.255.240.0"
else if (s[2] == "21") mask="255.255.248.0"
else if (s[2] == "22") mask="255.255.252.0"
else if (s[2] == "23") mask="255.255.254.0"
else if (s[2] == "24") mask="255.255.255.0"
else if (s[2] == "25") mask="255.255.255.128"
else if (s[2] == "26") mask="255.255.255.192"
else if (s[2] == "27") mask="255.255.255.224"
else if (s[2] == "28") mask="255.255.255.240"
else if (s[2] == "29") mask="255.255.255.248"
else if (s[2] == "30") mask="255.255.255.252"
else if (s[2] == "31") mask="255.255.255.254"
else mask="255.255.255.255"
if (mask == "255.255.255.255")
printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5
else
printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5,mask
}'
echo "#"
echo "# default the rest of amprnet via mirrorshades.ucsd.edu"
echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
echo "#"
echo "# the end"
2222.. PPrrooggrraammoowwaanniiee wwaarrssttwwyy ssiieecciioowweejj AAXX..2255,, NNeettRRoomm ii RRoossee..
Największą bodajże zaletą stosowania protokołów radioamatorskiego
radia packet opartego o jądro linuxa jest łatwość, z jaką możesz pisać
aplikacje i programy i je na nim używać.
Choć temat Programowania Sieci pod Unixem przekracza ramy tegoż
dokumentu, to jednak opiszę tutaj elementarne szczegóły dotyczące jak
wykorzystać protokoły AX.25, NetRom i Rose wewnątrz swojego
oprogramowania.
2222..11.. RRooddzziinnyy aaddrreessóóww..
Programowanie sieciowe pod Linuxem dla AX.25, NetRom i Rose przypomina
programowanie dla TCP/IP. Najwięszą różnicą jest stosowana rodzina
adresu i jego struktura, którą należy poprzekręcać w odpowiednie
miejsce.
Nazwy rodziny adresów dla AX.25, NetRom i Rose to kolejno AF_AX25,
AF_NETROM oraz AF_ROSE.
2233.. PPlliikkii nnaaggłłóówwkkoowwee..
Zawsze należy dołączyć plik 'ax25.h', 'netrom.h' i rose.h' jeśli masz
do czynienia z tymi protokołami. Prosty szkielet górnej części
wyglądałby tak:
Dla AX.25:
#include
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_AX25
Dla NetRom:
#include
#include
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_NETROM;
Dla Rose:
#include
#include
int s, addrlen = sizeof(struct sockaddr_rose);
struct sockaddr_rose sockaddr;
sockaddr.srose_family = AF_ROSE;
2233..11.. KKwweessttiiaa zznnaakkóóww ii pprrzzyykkłłaaddyy..
W bibliotekach /lib/ax25.a zawartych w pakiecie progamów narzędziowych
ax25-utils znajdują się wbudowane rutyny konwerujące znaki wywoławcze.
Jeśli chcesz możesz napisać swoje własne.
Program narzędziowy user_call jest wyśmienitym przykładem na początek.
Źródła dla tych rutyn zawarte są w pakiecie programów narzędziowych
AX.25-utils. Po spędzeniu paru chwil pracując nad nimi zauważysz, że
90 procent roboty to przygotowanie otworzenia 'socket-u'. Wykonanie
łączności jest łatwe podczas gdy przygotowanie zajmuje trochę czasu.
Przykłady są na tyle proste, że nie wprowadzają zamieszania. Jeśli
masz jakieś pytanie to kieruj je na listę linux-hams, gdzie znajdą się
ludzie gotowi udzielć ci odpowiedzi.
2244.. DDyysskkuussjjaa zzwwiiąązzaannaa zz RRaaddiieemm AAmmaattoorrsskkiimm ii LLiinnuuxxeemm..
Jest wiele miejsc, gdzie dyskutuje się na temat Radio Amatorskiego i
Linuxa, na przykład na comp.os.linux.* lub na liście pocztowej
vger.rutgers.edu. Inne miejsca, gdzie się to czyni, to listy pocztowe
tcp-group na ucsd.edu (ojczyzna dyskusji na temat TCP/IP i radia
amatorskiego), jak również kanał #linpeople w sieci linuxnet na IRC.
Aby zapisać się na listę dyskusyjną linux-hams, wyślij pocztę do:
Majordomo@vger.rutgers.edu
z tekstem:
subscribe linux-hams
w częsci listu. Wiersz 'subject:' jest pomijany.
Archiwum listy linux-hams znajduje się na:
http://zone.pspt.fi/archive/linux-hams/ oraz na
http://zone.oh7rba.ampr.org/archive/linux-hams/. Staraj się zajrzeć
tam zanim rozpoczniesz dyskusję ponieważ odpowiedziano tam na wiele
powszechnych pytań.
Aby zapisać się na listę tcp-group, wyślij list do:
listserver@ucsd.edu
z tekstem:
subscribe tcp-group
w częsci listu.
Zauważ, że lista tcp-group jest przeznaczona głównie do dyskusji o
zaawansowanych protokołach, których TCP/IP jest przykładem, w Radiu
Amatorskim. Nie zadaje się tam pytań dotyczących Linuxa.
2255.. PPooddzziięękkoowwaanniiaa..
Następujące osoby przyczyniły się do stworzenia tego dokumentu na
przeróżne sposoby, w sposób świadomy lub nieświadomy. Podaję ich bez
szczególnego uszeregowania (tak jak pamiętam): Jonathon Naylor, Thomas
Sailer, Joerg Reuter, Rot Atkinson, Alan Cox, Craig Small, John
Tanner, Brandon Allbery.
2266.. PPrraawwaa aauuttoorrsskkiiee..
AX25-HOWTO, informacja na temat jak zainstalować i ustawić niektóre z
ważniejszych pakietów obsługujących AX.25 pod Linuxem.
Copyright 1996 Terry Dawson. Jest to oproramowanie darmowe; może
być modyfikowane i rozprowadzane na warunkach Ogólnej Licencji
Publicznej GNU opublikowanej przez Free Software Foundation; licencja
o wersji numer 2, lub dowolnie, jakakolwiek późniejsza.
Program ten rozprowadzany jest z nadzieją, że będzie użyteczny, lecz
BEZ JAKIEJKOLWIEK GWARANCJI; nawet bez gwarancji, że moze być
SPRZEDAWANY lub UŻYTECZNY DLA JAKIEGOKOLWIEK CELU. Więcej szczegółów
znajdzesz w Ogólnej Licencji Publicznej GNU.
Powinieneś był otrzymać egzemplarz Ogólnej Licencji Publicznej z tym
programem; jeśli nie to napisz do:
Free Software Foundation, Inc., 657 Mass Ave, Cambridge, MA 02139,
USA.
2277.. OOdd ttłłuummaacczzaa..
AX25-HOWTO - tłumaczenie na język polski. Informacja jak zainstalować
i ustawić niektóre z najważniejszym pakietów do obsługi protokołu
AX.25 pod Linuxem.
Copyright 1997 Benedict P. Barszcz.
Wiele terminów, które w tym dokumencie zastosowałem może brzmieć
dziwnie w uszach polskiego czytelnika. Przepraszam, wynika to z tego,
że polska terminologia radia packet jest mi zupełnie nie znana.
Radioamatorem zostałem tutaj w USA i polskie nazewnictwo nie było
wymogiem do egzaminu. To jest błąd.
Niektórych zwrotów nie tłumaczyłem ze wzgłędow na ich ewidentność, ale
na pewno w tym miejscu się grubo mylę. Inne zwroty są niezgrabne i w
tym miejscu masz szerokie pole do popisu, czytelniku. Ślij poprawki do
poseidon@ziplink.net. Zwroty idiomatyczne starałem się zastępować
naszymi, polskimi odpowiednikami. Czasem przesadziłem, albo zupełnie
minąłem się z celem:-)
Mam wrażenie, że popełniłem też błędy merytoryczne. Nie poprawiłem ich
bo nie wiem gdzie:-).
Są też neologizmy, które nie zostały konsekwentnie używane w
dokumencie, np. DźwiękoModem.
Fragmenty w skrypcie 'munge' nie są tlumaczone ponieważ należą do
pliku i są komentarzem autora pliku.
Zmiany w stosunku do oryginału:
ppoorrtt 44000000..
Port 4000 i port 3694/tcp dla node przez inetd; autor nie był
konsekwentny. Wybrałem port 4000.
ooddwwoołłaanniiaa..
Odwałanie do Net-2-HOWTO zamieniłem na NET-3-HOWTO wskazując
jednocześnie na jego polskie tłumaczenie. Zdaje się, że
Net-2-howto już nie istnieje.
nnaazzwwiisskkoo PPaannaa RReeuuggeerr..
W jednym z odwołań, Terry podał tylko imię, a na innym miejscu
również nawisko. Dla czytelności w pierwszym wypadku podałem
zarówno imię jak i nazwisko.
bbuuddoowwaa jjąąddrraa..
kolejność komend budowy jądra poprawiona, aby faktycznie
działalo tak, jak autor zamierzył. cd /usr/src postawione przed
mv linux linux.old. Odciąłem też ścieżkę od nazwy pliku
ax25-utils-12.tar.gz tak, aby zadziałało zgodnie z zamierzeniem
autora.
2277..11.. PPooddzziięękkoowwaanniiaa..
Bardzo serdecznie chciałbym podziękować Terry'emu Dawson, że napisał
ten dokument. Dopiero przy tłumaczeniu go, zrozumiałem jaki kawał
roboty odwalił!
Chciałbym podziękować Bartkowi Maruszewskiemu, Piotrowi Tęczyńskiemu
oraz Piotrowi Pogorzelskiemu za (świadomą i nie świadomą) pomoc i
natchnienie, aby ten dokument powstał.
Jednocześnie chciałbym przypomnieć Waldkowi Ogonowskiemu, SP2ONG, że
to on jest wszystkiemu winiem - zaraził mnie Linuxem i nie wskazał
kliniki, gdzie sie to paskuctwo leczy:-).
Oraz dziękuje wszystkim, którzy nadeślą poprawki, które na pewno
udoskonalą to tłumaczenie.
Wyszukiwarka
Podobne podstrony:
ax25 howto pl 2
AX25 HOWTO pl 11
ax25 howto pl 9
ax25 howto pl 26
ax25 howto pl 15
AX25 HOWTO pl 20
ax25 howto pl
ax25 howto pl 13
ax25 howto pl 18
ax25 howto pl 23
ax25 howto pl 17
ax25 howto pl 22
ax25 howto pl 19
ax25 howto pl 10
ax25 howto pl 27
ax25 howto pl 3
ax25 howto pl 6
więcej podobnych podstron