Linux coby Internetová paketová gateway
|
![]() |
Petr Bravenec, OK2PID | |
10. října 1998, dokument verze 1.0 | |
V návodu určitě nenajdete všechno, občas bude něco s chybama nebo vyloženě špatně vysvětlené. Většinu věcí zde uvedených jsem někdy zkoušel, ale ne přímo při psaní tohoto textu. Za případné nepřesnosti se omlouvám.
Paměť minimálně 8 MB. Do desek 386 lze obvykle naskládat 4, 5, 8, 16, 20 a 32 MB. Zkoušel jsem to s pěti megabajty, ale nedá se to používat. Na osmi MB už to sviští docela svižně. Dřívější verze Linuxu (kernel 1.0.9) byly mnohem střídmější, co se týče paměti. Ale zase zase tam chyběla podpora AX25 a dalších věcí, které pro naši gateway budeme nutně potřebovat.
Disketová mechanika 1.44 MB. Na diskety 1.2 MB výrobci nepamatují a Linux z takové diskety nenatáhnete. Ale to je normální - Windows NT se na velkých disketách taky nedodává. Je potěšující, že Linux ke své práci disketovou mechaniku nepotřebuje. Až Linux nainstalujete, můžete mechaniku z počítače vymontovat.
Klávesnice - pro instalaci nutná, pro práci systému nepotřebná. Než klávesnici odpojíte, dejte BIOSu vědět (v SETUPu), že ji nemá připojenou a že ji při startu systému nemá hledat.
Video karta je opět nutná pouze pro instalaci. Až vám bude Linux na PC spolehlivě běhat, můžete kartu z počítače vyhodit. Při té příležitosti je obvykle nutné BIOSu počítače sdělit (v SETUPu), že videokartu nemá hledat. O monitoru platí totéž.
K paketově internetové bráně je obvyklé přistupovat buď z paketu nebo z Internetu. Na klávesnici a monitor je nutné sahat až v případě problémů s natahováním systému. Linux je možné přes síť spravovat velmi účinně a takřka bez omezení.
Disk je vhodný pochopitelně raději větší, rozumné minimum je asi 80 až 100 MB. Na 40 MB velkém disku se Linux provozovat dá bez problémů, ale instalace je poněkud náročnější. Disk by měl být v dobrém stavu. Na disku bude vytvořená odkládací oblast (česky swap) a pro systém by bylo tragédií, kdyby se právě v této oblasti na disku vyskytovaly nějaké chyby.
Síťová karta stačí pravděpodobně i ta nejpomalejší osmibitová NE1000. Těchto karet musí být různě po fabrikách neskutečné množství, ale na burzách a na inzerátech se příliš nevyskytují. Vhodnější je samozřejmě karta šestnáctibitová, ale není až tak nutná, protože síťový provoz na paketovém gateway asi nebude přiliš velký. V pohodě jsem zkoušel karty NI5210, NE2000, 3c509B a v Pentiu pak PCI kartu 3c590. Pokud karta oplývá možnosti Plug and Play, co nejrychleji takovou možnost vypněte. Jsou s tím potíže.
Linux je nejlépe opatřiti si na CD-ROM. Pro instalaci ale není CD-ROM nutný. Můžete použít CD-ROM na jiném počítači - Linux není problém instalovat přes síť. Spolehlivě to funguje protokolem FTP nebo NFS a podle toho, co mi to dalo vybrat, by to šlo i z CD na Windows 95 (ale moc tomu nevěřím, Microsoft se o konkurenci dobře stará).
Sériové porty budou možná pro někoho problémem. Pro spolehlivou a rychlou komunikaci s TNC budete potřebovat sériové porty s FIFO pamětí. Takové bývají označené číslem 16550. V počítačích 386 se tyto porty běžně nevyskytovaly a ani v obchodech s výpočetní technikou vysoce odborní a vyškolení prodavači obvykle neví, co po nich chcete. Občas vám někdo nabídne super rychlý sériový port za moc a moc tisíc. Nebrat. Používá se na nich obvykle čip 16650, který v Linuxu nijak zvlášť dobře nepracuje a navíc by se deska za čtyři tisíce dost špatně vyjímala v počítači, který jste zachránili před vyvezením na smetiště. Já jsem to doma vyřešil tak, že jsem na burze koupil desku, ve které byly čipy 16450 zastrčené do objímek, v GM Electronic jsem koupil asi za tři sta 16550 a prostě jsem je vyměnil.
Možná ale rychlé sériové porty nebudete potřebovat. Při rychlostech do 9600 Bd včetně to chodí bez chybičky. Přesto se občas podívejte do souboru /var/log/messages (nebo kde se u vás píšou takové zprávy) a přesvědčte se, že nejsou s komunikací problémy. Poznáte je podle takovýchto řádků:
datum, čas, port: 1 input overrun(s)Nakonec ještě poznámka:
U TNC je vhodné, aby dokázalo nabootovat při zapnutí přímo do KISS režimu. Doma mám TNC s EPROM, ve které je pouze KISS. Při případném výpadku napájení nejsou problémy s tím, že se TNC přepne do HOST režimu a přestane komunikovat s počítačem. Modemy s HOST režimem se obvykle do KISS režimu přepínají sekvencí "\027@K\r".
Místo TNC a rychlých sériových portů bude pravděpodobně pracovat i SCC karta s čipem Z8530. Linux SCC karty podporuje a při použití SCC karty vám navíc odpadnou starosti se sháněním rychlých sériových portů.
Mimo to podporuje Linux i další paketový hardware. Nejlépe, když se podíváte přímo do dokumentace kernelu.
Dosti obvyklá může být konfigurace, kdy je Linux připojený přímo na FlexNet node kabelem a protokolem KISS. V takovém případě to je jednodušší - žádný modem není potřeba, vše zastane hardware nodu. Na nastavení Linuxu se nic nemění - kernelu je jedno, jestli přes sériový port komunikuje s TNC nebo něčím úplně jiným. Rozhodující je přenosový protokol KISS a ten zůstává stejný.
Mimo gateway můžete na Linuxu provozovat třeba BBS typu F6FBB, terminálový program Xpr a spousty dalších věcí, mimo jiné i takové, které si sami vytvoříte - jde to snadno.
Linux jsem instaloval z CD-ROM RedHat Linux 4.2. Verze je poměrně stará, ale jsem s ní spokojen. Na 80 MB velký disk nainstalujete minimální konfiguraci v pohodě, na 40 MB s problémy. Postup popíšu dál.
Myslím, že je v podstatě jedno, jakou distribuci Linuxu použijete. Já jsem sáhnul po distribuci RedHat jenom proto, že mám jejich CD doma a jsem na RedHat zvyklý. Kdesi bych vyhrabal i staré CD s distribucí Slackware. Pokud si vzpomínám, tak se Slackware instalovalo na malý disk podstatně pohodlněji. Ale to bylo hodně dávno, co jsem si s tím hrál...
Instalace RedHat Linuxu 4.2 na 40 MB je problém. Minimální konfigurace potřebuje asi 60 MB, ale na našem disku bude k dispozici maximálně asi 30 MB. 10 MB si rezervujte pro swap. Pokud máte více místa na disku, vyhráli jste, ale i tak doporučuji seznam nainstalovaných balíků projít a nemilosrdně vyházet vše, co nepotřebujete. Pokud je místa na disku dost a máte i dost paměti (třeba 16 MB), bude velmi vhodné zvětšit i swap - tak aby byl alespoň tak velký, kolik je paměti.
Instalaci na 40 MB velký disk spusťte normálním způsobem. Za chvíli se vám přestane na disku dostávat prostoru. Instalaci stopněte stiskem CTRL-S (znovu se rozběhne po stisku CTRL-Q) a přepněte se na druhou virtuální konsolu. A tam pak mažte a mažte. Hodně ke smazání je toho v adresářích /usr/doc, /usr/info, /usr/man, /usr/share, /usr/X11 a jinde. Nefungoval mi uspokojivě příkaz rm -r, používal jsem místo toho
find /dir_na_zruseni -type f -exec rm {} \;a po instalaci jsem dodatečně zrušil prázdné adresáře.
Softwarové balíky, které nejsou na instalačním CD, bude pravděpodobně nutné přeložit. Na 40 MB těžko nainstalujete překladač C, takže si budete muset přeložit tyhle věci jinde, nebo si opatřit větší disk. Je velmi přínosné, pokud máte vaši gateway připojenou do sítě k nějakému jinému staršímu bráškovi. Z toho bráchy můžete přimontovat přes ethernet disk na sestřičku gateway a na bráchovi překládat, koukat do manuálů apod. Na bráchovi rozhodně překompilujte nový kernel pro sestřičku gateway. Pečlivě si projděte nastavení a bez milosti vyhažte, co nepotřebujete. Věci, které se hodí jenom občas, kompilujte jako moduly. Nebude to pak zbytečně zavazet v paměti.
# Soubor /etc/ax25/axports # id-portu znacka rychlost paclen window komentar 144 OK2PID-15 1200 255 4 Uzivatelsky vstup OK0NO na 144.825Potom nainstalujte protokol ax25 (pokud je přeložen jako modul), připojte TNC k systému a můžete vyzkoušet zavolat nod nebo si vypsat provoz na kmitočtu. Číslo 44.177.74.25 je moje IP adresa. Měli byste si opatřit vlastní IP. V České republice se o to stará OK2XDP. Zařízení /dev/ttyS0 je seriový port, na kterém je připojené TNC komunikující se systémem rychlostí uvedenou v /etc/ax25/axports. Nakonec 144 v příkazu kissattach říká, kterého řádku z /etc/ax25/axports se příkaz týká.
modprobe ax25 modprobe mkiss kissattach -i 44.177.74.25 /dev/ttyS0 144 call 144 OK0NO # zavola nod, ukonceni ~. listen # posloucha provoz na portu, ukonceni Ctrl-CPokud vám nebude fungovat tato jednoduchá konfigurace, nemá cenu pokračovat dál. Místo programu call můžete vyzkoušet třebas můj program Xpr, ale to předpokládá i nainstalované X-Window a to se na 40 MB disk jen těžko vleze.
# Soubor /etc/ax25/axports # id-portu znacka rychlost paclen window komentar 144 OK2PID-15 1200 255 4 Uzivatelsky vstup OK0NO na 144.825 ip OK2PID-13 19200 255 4 Internetová linkaNa port ip se připojí démon ax25ipd, který zprostředkuje komunikaci s naším internetovým protějškem (démon je program, který je v systému stále nastartovaný - slovy dosu to je resident). Jeho konfigurační soubor je /etc/ax25/ax25ipd.conf:
# konfiguracni soubor /etc/ax25/ax25ipd.conf socket ip mode tnc route OK0POV 128.1.96.1 db device /dev/ttysa loglevel 4Za zmínku stojí především řádek route. Těchto řádků může být více. Je to rozcestník, který démonu ax25ipd říká, kam má směrovat které pakety. IP adresa uvedená v route je adresa našeho internetového protějšku. Písmena db znamenají, že tato cesta je defaultní a mohou se skrz ni posílat i UI rámce (broadcast). Loglevel 4 říká, že ax25ipd bude vypisovat maximum informací. Až vám bude brána fungovat, dejte do loglevel číslo maximálně 2, jinak budete zahlceni informacemi o každém paketu, který branou projde.
Naše internetová linka není připojena k žádnému fyzickému zařízení. Používá se proto takzvaný pseudoterminál - na jednom konci je připojený kissattach, na druhém konci ax25ipd. Pro linku jsem si vybral pseudoterminál /dev/ttysa a jeho druhý konec /dev/ptysa. Tohle zařízení se jeví jako seriový port, ale existuje v systému jenom jako. Nakonec musíme sdělit kernelu existenci dalšího portu a nastartovat démona ax25ipd:
kissattach -i 44.177.74.25 /dev/ptysa ip ax25ipdTakhle to ještě nebude pracovat, protože porty 144 a ip jsou oddělené a neví o sobě. Pro předávání dat mezi porty slouží démon rxecho. Jeho konfigurační soubor může v našem případě vypadat takto:
# soubor /etc/ax25/rxecho.conf # odkud kam co # kde co muze byt volaci znacka + wildcards. 144 ip * ip 144 *Program nastartujte a zkuste se z jiného terminálu (tady půjdou výpisy) připojit na náš internetový protějšek OK0POV:
rxecho call 144 OK0POVProgram ax25ipd začne vypisovat spousty výpisů, ze kterých by mělo být patrné, co se děje s pakety. Pokud nic nevypisuje, je někde něco špatně. Zatím nebyl potřeba Internetový protějšek. Pokud naše strana funguje a protějšek zatím ne, ax25ipd by měl vypisovat, že se snaží, ale nejde to. Rozhodně je špatně, pokud píše, že neví, kam routovat naše pakety.
Na další pokusy budete potřebovat počítače dva. Druhý počítač by měl být nastaven zrcadlově. Důležité je vědět, že na volané straně musí něco poslouchat, něco musí čekat na naše pakety. Samotný kernel s příchozím voláním neudělá nic, maximálně napíše "BUSY" a je po ftákách.
Pro první pokusy jsem na volané straně nastartoval program Xpr, který je schopen vyřídit přicházející volání. Stejně dobře mi to fungovalo i s BBS F6FBB a stejně dobře bude fungovat i nastavený démon ax25d či některý z dalších programů v balíku ax25-utils.
Jakmile máte zprovozněný tunel skrze Internet takhle ručně, napište si všechny příkazy do jednoho dávkového souboru a ten pak zahrňte do startovacích skriptů někde v adresáři /etc/rc.d/. Každá distribuce se trochu liší, takže s konkrétním umístěním a provedením startovacího skriptu si musíte poradit sami.
144 OK2PID-14 1200 255 4 Linka na pocitac OK2PID-13a ve druhém počítači
144 OK2PID-13 1200 255 4 Linka na pocitac OK2PID-14Port zprovozníme příkazem kissattach, nastavíme síťové zařízení příkazem ifconfig a řekneme systému, kam má směrovat IP provoz (příkazem route) a můžeme zkusit funkčnost linky:
# počítač OK2PID-14 kissattach -i 44.177.74.25 /dev/ttyS0 144 ifconfig netmask 255.0.0.0 broadcast 44.255.255.255 mtu 230 route add -host 44.177.74.26 irtt 30000 ax0 # počítač OK2PID-13 kissattach -i 44.177.74.26 /dev/ttyS0 144 ifconfig netmask 255.0.0.0 broadcast 44.255.255.255 mtu 230 route add -host 44.177.74.25 irtt 60000 ax0 # a otestování z OK2PID-13: ping 44.177.74.25Linka je v tomto případě nastavená tak, že provoz se děje nespojovanými službami AX25 (Un-numbered Information frames = UI). Taková komunikace je rychlejší, než normální spojení - protokol TCP/IP si hlídá spolehlivost přenosu vlastními prostředky a úplný protokol AX25 by do linky vnášel pouze redundantní zajištění.
Linka 1200 Bd je pomalá. Proto je potřebné na to kernel upozornit parametrem irtt 60000 (tj. 60 sekund potřebných na odezvu). Standardní nastavení irtt předpokládá spojení přes ethernet. Jinak jde o plnohodnotné TCP/IP propojení dvou počítačů. Přes takovou linku bude asi utrpením editovat, přetahovat soubory apod. Pravděpodobně nebude fungovat NFS (sdílení disků) - aspoň mě to nejelo. Pokud ale zvedneme rychlost na 9600, situace se okamžitě změní. Pracovat přes takovou linku můžete celkem v pohodě, funguje NFS, telnet, WWW... na co si vzpomenete.
Linux po volající stanici požadavkem ARP pochtívá hardwareovou adresu, jinými slovy volací značku, SSID a nódy, přes které se lze ke stanici dovolat. Při přímé slyšitelnosti komunikujících stanic (tj. ne přes nódy) se tato informace přenáší UI rámci a problémy nevznikají. Pro práci přes nódy je nutné nastartovat a nastavit démona ax25rtd:
# konfiguracni soubor /etc/ax25rtd.conf ax25-maxroutes 256 ip-maxroutes 256 [144] ax25-learn-routes yes ip-learn-routes no ip-adjust-mode no arp-add yesProgram ax25rtd po nastartování automaticky doplní do kernelu ARP informaci. Linux bude spokojený a připojený uživatel se může třeba prohrabat na WWW stránkách serveru.
Značku OK2PID-14 používám pro přístup na povelovou řádku systému. Potřebuji pro tuto funkci nakonfigurovat dva programy: ax25d a axspawn.
# soubor /etc/ax25/axspawn.conf # podrobnosti man axspawn.conf create yes guest ax25 group ax25 first_uid 4000 max_uid 4999 home /home/ax25 shell /bin/bash associate no # soubor /etc/ax25/ax25d.conf # podrobnosti man ax25d.conf [OK2PID-14 via 144] NOCALL * * * * * * L default * * * * * * - root /usr/sbin/axspawn axspawn %u +Soubor /etc/ax25/axspawn.conf je celkem nezajímavý a bez záludností. Mnohem užitečnější je porozumět funkci démona ax25d. V konfiguračním souboru se říká: Pokud někdo volá značku OK2PID-14 na portu 144, udělej, co je napsáno dále. Dále je napsáno: Pokud nás volá stanice NOCALL, odpoj ji. Pokud volá někdo jiný (default - sem můžete uvést konkrétní značky, na každý řádek jednu), nastartuj program axspawn a propoj tento program s volajícím. Vše tohle se bude dít s právy uživatele root. Hvězdičky, pomlčky a podobné, nevysvětlené znaky si prostudujte v manuálu ax25d.conf.
Programem ax25d prostě zajistíte, aby váš počítač při zavolání udělal nějakou akci. Jaká akce to bude, záleží na tom, kdo vás volá a jak vás volá - jakou volá značku nebo SSID.
Program spuštěný démonem ax25d je propojen s protistanicí stejně, jako by ho uživatel nastartoval přímo z povelové řádky.
Zkusit můžete i další velice jednoduchý přiklad. V adresáři například /usr/local/bin si vytvořte soubor stav:
#!/bin/sh w echo free echo df -k echo ps -xa sleep 60Příkazem
chmod uog+rx /usr/local/bin/stavz něj vytvořte spustitelný program. Můžete program vyzkoušet z povelové řádky - měl by vypsat postupně všechny přihlášené uživatele, obsazení paměti, obsazení disků a vypsat všechny běžící procesy. Když program běží, doplňte do souboru /etc/ax25/ax25d.conf:
[OK2PID-10 via 144] NOCALL * * * * * * L default * * * * * * - root /usr/local/bin/stav stavPo restartu démona ax25d se vypíše informace o systému každému, kdo se připojí na OK2PID-10. Dosti nešikovné je použití sleep 60 - ale bez časové rezervy se spojení ukončí dříve, než se stačí přenést k připojenému uživateli všechny informace. Přes pomalejší linku nemusí stačit ani celá minuta.
Jako první si uděláme a přeložíme jednoduchý program ax25login. Program je velice primitivní, berte jej spíše jako námět, jak podobné programy vyrábět. Návod na jeho přeložení je přímo ve zdrojovém tvaru.
Odkaz na program ax25login.cProgram můžete přímo z povelové řádky vyzkoušet. Po spuštění na vás program vyblafne pět náhodných písmenek a bude chtít heslo. V programu je uvedené, co se po vás bude chtít. Při špatně zadaném hesle se program ukončí s chybovým hlášením - až bude běžet v ostrém provozu, spojení se zruší. Při správně zadaném hesle program nastartuje shell. Soubor ax25d.conf může vypadat třeba takto:
# soubor /etc/ax25/ax25d.conf # podrobnosti man ax25d.conf [OK2PID-14 via 144] NOCALL * * * * * * L default * * * * * * - root /usr/sbin/axspawn axspawn %u + OK2ADM * * * * * * - root /usr/local/bin/ax25login ax25loginSoubor je rozšířením dřívější konfigurace ax25d. Každé normální stanici se nabídne přístup do systému s omezenými právy, pouze pokud se připojí stanice OK2ADM (ADM jako administrátor, omlouvám se případnému existujícímu OK2ADM), bude se po něm vyžadovat heslo a po správném zadání bude OK2ADM vpuštěn do systému s absolutními právy.
Xpr je koncipován jako program pro koncového zákazníka sítě AX25, proto vyžaduje pouze jednoduché nastavení na straně kernelu a přebírá některé z vlastností dalších utilit balíku ax25-utils. Program běží v prostředí X11 - pro svou práci tedy může potřebovat poněkud lepší počítač, než je uvedeno v hardwareových požadavcích na začátku tohoto pojednání. Zvláště je kritické místo na disku (ať je kam uložit X11), paměť a rychlost videokarty. Zbytek počítače je podružná záležitost.
Pokud máte počítač nastavený podle tohoto článku, zbylo vám SSID 0 volné. To teď použijeme pro Xpr. Program Xpr se nastavuje programem configure. Postupně se vás zeptá na značku, porty, na kterých má pracovat (u nás připadá v úvahu port 144), umístění deníků, helpů a podobných věcí. Všechny tyto údaje uloží do konfiguračního souboru Xpr. Tento soubor pak uložte buď do adresáře /usr/X11/lib/X11/app-defaults - tam bude platit nastavení globálně pro všechny uživatele systému, nebo do svého domácího adresáře. Soubor Xpr je normální textový soubor s komentáři, můžete do něj dělat dodatečné úpravy. Soubor je veliký, proto zde není uveden.
Značka použitá v Xpr může být zcela odlišná od značky uvedené v /etc/ax25/axports. Každý uživatel, který se lokálně přihlásí, může mít vlastní nastavenou konfiguraci a vlastní značku, pokud má ve svém domácím adresáři uložený vlastní konfigurační soubor Xpr.
Program poslouchá pod značkou, uvedenou v konfiguračním souboru. Pokud je uvedena značka OK2PID, poslouchá program s SSID 0, na všechna další SSID nebo značky nereaguje. Při odcházejícím spojení si program dokáže automaticky změnit SSID, pokud je to třeba a pokud je jeho značka nakonfigurována bez SSID. Tato funkce se ovšem nemá ráda s nastavením axparms --assoc.