Minidistribuce   W I S P     Linuxu    
verze 1.0.4 aktualizace 1.4.2004
Na úvod

Dlouhou dobu jsem řešil připojení domácí sítě přes WiFi (LAN atd..) k internetu. Jako poměrně zdatný windowsář jsem to vždy řešil na platformě windows. Nevýhody tohoto rešení jsou známé (viry,transparentnost proxy ,....), proto se tím nebudu dále zabývat. Díky velice dobré dostupnosti počítačů 486 a PI, jsem se rozhodl přejít na nějakou tu minidistribuci Linuxu. Bohuzel jsem vždy narazil na neznalost instalace takového mini produktu. Vše vyrešila distribuce WISP linuxu. Žádná instalace ani dlouhé a zbytečně složité nastavování. Instalaci zvládne každý, kdo umí kopírovat v DOSu


Jak začít a kde vzit instalaci

Nejlepší jak začít je navštívit oficiální stránku projektu, kde se da stáhnout officialni instalace WISPu 2624. Nejnovější beta 2634 verzi lze získat na adrese http://www.hazard.maks.net/wisp-dist/downloads/
Verze :
posledni officialni - wdist-2003-12-22(2624).zip
beta test - wdist-2003-12-22(2634).zip


Stručný postup instalace:

1) pomocí programu fdisk vytvořit 1 či 2 partition na disku.
  • První, která bude primary&active a bude mít velikost 20MB.

  • Druhou, která není povinná na swap. Jaké jsou nároky na druhou presně nevím - používám celý zbytek disku.

  • 2) Zformátovat partition (první), jako FAT.
    3) Pomocí syslinux na ni prenést zavadeč (image DOS diskety je tady nebo tady. Stačí rozzipovat, pak třeba použít program WinImage v něm vytvořit boot disketu, nabootovat a pak napsat A:\syslinux c: ).
    4) Stáhnout si aktuální verzi WISP posledni je 2624
    5) Rozbalit obsah distribuce do kořenového adresáře na první partition (C:\)
    6) Reboot... a vlastni nastaveni WISPU


    Problémy při instalaci

    1) Nelze přenést syslinux na disk.
  • Nabootovali jste z diskety WIN98. Bootování dělejte jen z disket DOS 6.22


  • 2) Wisp nenabootuje správně.
  • zkontrolujte případně editujte syslinux.cfg - pod DOSem !!!
    "default linux rw initrd=initrd.lrp init=/linuxrc root=/dev/ram0 boot=/dev/hda,msdos,/dev/hda,msdos PKGPATH=/dev/hda1 LRP=root,zebra,net-snmp,sshd,netdiag,local"


  • 3) Zatuhávání serveru
  • Při použití ethernet karet s chipem 8139 (rtl8139.o),někdy úplně vytuhne router. Karta má problém když někdo na síti neumí autonegotiation a je to zapojeno do HUBu.


  • 4) Nefunkční ISA ethernet 3Com EtherlinkIII
  • Zde je odkaz na .lrp obsahující funkční modul. tento stačí pomocí např WinSCP WinSCP nakopírovat do /modules. Dále se postupuje podle návodu od bodu 6.1 nebo 7. Pokud se na něj nedostanete po síti, nezbývá než disketa. Postup pro použití diskety:
    1. přihlásit se jako root
    2. pomocí CTRL-C nebo menu ukončit script "wdistconfig", který dělá to překrásné menu
    3. vložit disketu s nahraným 3c509.o
    4. # mount /dev/hda /mnt
    5. # cp /mnt/3c509.o /modules
    6. # umount /mnt
    pokud jste ještě nekonfigurovali zavádění modulů:
    6.1 # vi /etc/modules
    6.2 /#3c509
    6.3 x
    6.4 :wq
    7. # wdistconfig (dostane nás zpět do menu)
    8. z menu zvolíme uložit konfiguraci
    9. restart

    Síťovka by podle mnoha různých informací z Linuxových fór měla mít vypnuté PnP pokud ho podporuje a nesmí mít samozřejmě konflikt s jiným zařízením. Pro konfiguraci je nejlepší použít DOSovou utilitku 3c5x9cfg.exe. Existuje i linuxová verze, která však má dosti velká omezení. Podle popisu, který jsem viděl s ní jde nastavit PnP, nikoliv však již; přerušení či adresa. IRQ a adresa jdou pouze vypsat. Další bezvadnou vlastností DOSové utilitky je, že po nastavení parametrů se provádí kontrola, jestli s něčím nastavení nekoliduje. Před nastavováním pomocí 3c5x9cfg.exe doporučuji v BIOSu pokud je již PnP nastavit v sekci "PCI/PnP settings", či jak se jmenuje, položku "Plug And Play aware OS" na "No", Automatické přiřazování (teď si nevzpomenu jak to tam je, vždy to způsobí rozšíření aktuálního menu o další spoustu řádků, ve kterých jsou vypsané jednotlivé zdroje DMA, IRQ atd.) na "Manual" a některé přerušení na "Legacy/ISA". Toto přerušení je pak třeba použít při konfiguraci pomocí 3c5x9cfg.exe.

    10. po naběhnutí a přihlášení se zase pomocí CTRL-C dostaneme do shellu
    11. # lsmod | grep 3c509 vypíše řádek s ovladačem pokud je zaveden a vypíše cca toto: "3c509 8948 1" první je název modulu druhá je jeho velikost v bajtech a třetí je počet navázaných zařízení. Pokud je vše OK poslední číslo musí odpovídat počtu 3c509 karet v systému.
    12. Nyní se již normálně přes wdistconfig menu nakonfiguruje. Po konfiguraci nesmíte zapomenout na "SAVECONFIG" aby se změny zabalili do .lrp a zůstali i po restartu.

  • 5) Full duplex ISA ethernet 3Com EtherlinkIII
  • Musí se přidat parametr do etc/modules # ISA ethernet cards
    3c509 xcvr=12
    eepro io=0x300



  • Jak na DHCP

    Použitý balíček dhcpd.lrp je odtud. A pak už jenom upravit dhcpd daemon config
    takto:
    dynamic-bootp-lease-length 604800;
    max-lease-time 1209600;

    subnet 192.168.1.0 netmask 255.255.255.0 {
    option domain-name "private.network";
    option domain-name-servers xxx.xxx.xxx.xxx;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.1;
    range 192.168.1.100 192.168.1.200;


    group {
    host pocitac1{
    hardware ethernet xx:xx:xx:xx:xx:xx;
    fixed-address 192.168.1.10;
    }
    host pocitac2{
    hardware ethernet yy:yy:yy:yy:yy:yy;
    fixed-address 192.168.1.11;
    }
    }

    }

    subnet zzz.zzz.zzz.zzz netmask 255.255.255.128 {
    not authoritative;
    }

    Toto nastavení přiděluje IP adresy podle MAC adresy a ostatním přiděluje v rozsahu.


    Jak na DNS - bez záruky pozbírano z czfree.cz

    Na cachování DNS je balík dnscache.lrp.
    Aktuální verze by měla být tady nebo tady.
    Nastavuje se to jednoduše, ve standardním nastavení se to dotazuje kořenových DNS severů, dá se přepnout na používání DNS serverů od ISP.
    Anglická uživatelská příručka je zde
    Pokud bys potřeboval i DNS server pro menší síť, může&š; použít tinydns.lrp.
    Aktuální verze by měla být tady nebo tady.
    Anglická uživatelská příručka je zde

    Vyvětlivky:
    LRP Internal Box - je adresa toho interface routeru, na který budou přicházet DNS dotazy
    Querying hosts IP's - určuje, komu má dnscache odpovídat na dotazy, tj pro síť 10.0.1.0/24 to bude 10.0.1, pro 10.0.0.0/16 to bude 10.0 (nic mezi tím se bohužel udělat nedá).
    Do resolv.conf (pokud mají jít i dotazy přímo z routeru přes dnscache) se potom zadá "nameserver 10.0.1.1".

    Takovéto nastavení je pak kompatibilní i s TinyDNS, které přijímá dotazy na adrese 127.0.0.1 (dnscache s ním nějak spolupracuje, i když zatím nechápu jak).
    Každopádně TinyDNS a DNSCache nemůžou přijímat dotazy na stejné IP adrese.
    Adresa DNS serveru, kterou bude posílat dhcpd je opět adresa vnitřního interface routeru, tj. stejná jako gateway.

    Příklad:

    -----named.conf-----
    options {
    directory "/usr/local/var/named";
    cleaning-interval 0;
    forward only;
    allow-query {
    192.168.0.0/24;
    };
    listen-on port 53 {
    192.168.0.1;
    };
    forwarders {
    62.24.64.2;
    62.24.64.3;
    };
    };
    zone "." {
    type hint;
    file "named.cache";
    };
    -----named.conf-----
    -----named.cache-----
    toto je prázdný soubor - dotazujeme se "forwarders" serveru
    nebo sem lze zadat korenove servery - pak se budeme dotazovat jich
    -----named.cache-----


    Jak na DNS - dle Lukáše Turka

    S DNS souvisí dva programy: Dnscache a Tinydns.
    Dnscache zajistí, že router se bude chovat jako DNS server (tj. počítač e v síti můžou mít jako DNS nastavenou adresu routeru a ne adresu serveru od poskytovatele připojení). Zároveň výsledky DNS dotazů ukládá, čímž se další dotazy urychlí.
    Tinydns vám umožní zavést si v lokální síti DNS jména.

    Dnscache
    Balík dnscache.lrp najdete na stránce distribuce Bering, jejíž je standardní součástí.Viz link v výše. Konfigurační soubory se skrývají v adresáři /etc/dnscache/env. Můžete je editovat přímo, nebo pomocí menu (příkaz lrcfg). Pozor! Každý konfigurační soubor musí končit prázdným řádkem!
    IP (LRP box internal IP) - adresa interface routeru, na který budou přicházet DNS dotazy (pravděpodobně adresa síťovky do lokální sítě)
    IPQUERY (Querying hosts IP's) - určuje, komu má dnscache odpovídat na dotazy. Pro síť 10.0.1.0/24 to bude 10.0.1, pro 10.0.0.0/16 to bude 10.0. Nic mezi tím se asi udělat nedá, nejvýše vyjmenovat několik rozsahů.
    QUERYFWD (FORWARDONLY) - Přepínání, zda bude Dnscache posílat dotazy na DNS serveru vašeho ISP (rychlejší) - YES, nebo bude pracovat zcela nezávisle a bude se dotazovat od nuly (tj. od kořenových DNS serverů) - NO
    DNS0 - Nemá smysl měnit, zde jsou adresy kořenových DNS serverů (nejdůležitějších serverů Internetu, bez nich by se v podstatě rozpadl).
    DNS1 - Používá se, je-li zapnuto FORWARDONLY. Sem se zapíší adresy DNS serverů vašeho ISP.
    Poznámka pro CZFree:
    CZFree používá vlastní doménu .czf s nezyvislou hyearchií DNS serverů. Je tedy nutno zajistit, aby se DNS dotazy do domény .czf neposílaly na server ISP, ale na některý z kořenových DNS serverů CZFree. Proto jsem vytvořil upravenou Dnscache (stačilo upravit spouštěcí skript). Ta přidává nový konfigurační soubor DOMAINS. V něm je na každém řádku doména a její DNS server (oddělené mezerou). Pokud má doména více DNS serverů, bude na několika řádcích tatáž doména pokaždé s jinou adresou serveru.
    Příklad:

    czf 10.24.1.2
    czf 10.15.0.1
    10.in-addr.arpa 10.24.1.2
    10.in-addr.arpa 10.15.0.1

    Další informace:
    Dokumentace k dnscache

    Tinydns
    Balík tinydns.lrp lze stáhnout z téhož místa, kde byla Dnscache. Konfigurační soubory jsou ve dvou adresářích (/etc/tinydns-private/env a /etc/tinydns-public/env), takže je asi lepší použít menu (příkaz lrcfg).
    /etc/tinydns-private/env/DNSTYPE - Nastavení typu serveru: privátní (PRIVATE) je pro lokální síť za překladem adres, veřejný (PUBLIC) je pro standardní DNS server, na který budou přicházet dotazy i zvenčí.
    /etc/tinydns-private/env/IP - IP adresa, na které poběží privátní DNS server
    /etc/tinydns-public/env/IP - IP adresa, na které poběží veřejný DNS server
    /etc/tinydns-private/env/DOMAINS - domény pro privátní server (např. "moje.sit")

    Důležité:
    Adresa, na které běží Tinydns server musí být odlišná od adresy, kde běží Dnscache! Jinak se totiž dotazy odlišit nedají - všechny jsou na standardním portu 53. Vhodné je nastavit adresu Tinydns na 127.0.0.1 (dotazy zvenku půjdou na Dnscache a ta je pošle na 127.0.0.1 (localhost), tahle spolupráce se zajistí automaticky).
    Poznámka:
    Jaký je vlastně (technicky) rozdíl mezi privátním a veřejným serverem? Veřejný server je začleněný do hyearchického doménového systému. Dnscache tedy ani nemusí vědět, že na routeru DNS server běží: prostě se zeptá nadřízeného DNS serveru a od něj získá adresu, kde běží Tinydns. U privátního serveru je to nutné obejít, a Tinydns musí přímo vnutit Dnscache sebou spravovanou doménu (to udělá tak, že nacpe záznam do /etc/dnscache/root/servers).

    Vlastní nastavení domén je v souborech /etc/tinydns-public/root/data (veřejný server) a /etc/tinydns-private/root/data (privátní server). Každá řádka je uvozena jedním znakem, který určuje její typ:
    "#" - komentář
    "." - deklarace domény
    "@" - mailserver pro doménu
    "=" - přiřazení primárního DNS jména k IP adrese
    "+" - přiřazení dalšího DNS jména k IP adrese
    ...a hromada dalších, které nejsou pro normální použití potřeba

    Použití se nejlépe vysvětlí na příkladě (síť 192.168.1.0/24 s doménou moje.sit):
    #Domenu moje.sit spravuje DNS server ns1.moje.sit
    .moje.sit::ns1.moje.sit

    #Reverzni zaznamy 192.168.1.0/24 spravuje tentyz server
    #Povsimnete si opacneho poradi IP adresy!
    .1.168.192.in-addr.arpa::ns1.moje.sit

    #Mailserver domeny je mail.moje.sit
    @moje.sit::mail.moje.sit

    #Router 192.168.1.1 ma hlavni DNS jmeno router.moje.sit (na toto jmeno
    #se nastavi i reverzni zaznam) a dalsi jmena ns1.moje.sit a mail.moje.sit
    =router.moje.sit:192.168.1.1
    +ns1.moje.sit:192.168.1.1
    +mail.moje.sit:192.168.1.1

    #Obdobne se priradi jmena pocitacum v siti (s reverznim zaznamem)
    =adam.moje.sit:192.168.1.2
    =bara.moje.sit:192.168.1.3

    V případě u privátního serveru se ještě do DOMAINS přidá záznam:

    1.168.192.in-addr.arpa
    moje.sit


    Jak na Traffic Shaping - dle Luká�e Turka

    Pokud pomocí WISPu rozdělujete připojení k Internetu, budete dříve či později potřebovat, aby se připojení dělilo spravedlivě. Tedy aby pokud stahují 4 lidé zároveň, dostal každý svojí čtvrtinu pásma. Vše potřebné již; ve WISPu je, ale nastavit to není tak jednoduché, jak to vypadá.
    A teď k věci:
    Nastavení se provádí v /etc/network/ifup.local. Tam již je funkce set_shaper. Volá se: set_shaper ip_adresa rychlost id
    To omezí adresu ip_adresa na rychlost (zadává se např. 128kbit). id je jakékoli číslo (radši nenulové), ale pokud se voláním funkce přidává více pravidel, musí být u každého pravidla jiné.
    Funkce set_shaper bohužel umí omezit jen jednu adresu, neumí udělat spravedlivé rozdělení pásma. K tomu jsem napsal funkci div_bandwidth:

    #Rozdeli pasmo na rozhrani $1 s rychlosti $2 mezi $3 uzivatelu, jejichz IP adresy
    #jdou poporade od $4. Volitelne lze zadat maximalni rychlost pro uzivatele $5.
    div_bandwidth()
    {
    IPRULE=`echo $4 | sed 's/[^.]*$//'`
    HOST=`echo $4 | sed 's/.*\.//'`

    if [ "$5" = "" ]; then
    CEIL=$2
    else
    CEIL=$5
    fi

    tc qdisc add dev $1 root handle 1: htb default 0
    tc class add dev $1 parent 1: classid 1:1 htb \
    rate $2kbit ceil $2kbit burst 2k quantum 1500

    i=0
    while [ $i -lt $3 ]
    do
    tc class add dev $1 parent 1:1 classid 1:1$i htb \
    rate $(expr $2 / $3)kbit ceil $CEIL\kbit burst 2k quantum 1500
    tc filter add dev $1 protocol ip prio 1 parent 1: u32 \
    match ip dst $IPRULE$(expr $HOST + $i) classid 1:1$i
    tc qdisc add dev $1 parent 1:1$i handle 11$i: sfq perturb 10
    i=$(expr $i + 1)
    done
    }

    Abyste ji mohli použít, přidejte tento kód do ifup.local(nejlépe pod funkci set_shaper, tj pod "}"). Funkce se volá div_bandwidth rozhraní rychlost počet_lidí počáteční_ip maximum rozhraní je síťová karta do lokální sítě (např. eth0). rychlost je šířka pásma do Internetu (v kbit), které se rozdělí mezi počet_lidí. Jejich adresy musí být v jednom bloku za sebou, počínaje počáteční_ip. Potom bude každý klient moci využít celé pásmo, když bude připojen sám, a pokud bude stahovat více lidí zároveň, rychlost se spravedlivě rozdělí. Volitelně lze zadat maximum: maximální rychlost pro 1 klienta (tj. i když bude stahovat jako jediný, dosáhne maximálně této rychlosti).
    Příklad:
    div_bandwidth eth0 256 4 192.168.1.1 128Upozornění: Funkce div_bandwidth (tj. vše mezi "{" a "}") se nijak měnit nemusí, mění se jen její volání (které se napíše někam pod funkci div_bandwidth, tj pod "}"). Dosazení hodnot do funkce se provede samo.
    Vytvořená pravidla pro shaping se vymažou příkazem: tc qdisc del dev rozhraní root. Stará pravidla se musí vymazat, než se zadají nová!
    Poznámka 1: Rychlost, kterou zadáváte, se nemůže rovnat skutečné rychlosti připojení. Zadejte přibližně 90% skutečné rychlosti (ideální je to vyzkoušet).
    Poznámka 2: Funkce umí rozdělit jenom download, ne upload. Pokud používáte překlad adres (což je u připojení k Internetu bohužel skoro vždy), je dělení uploadu dosti komplikované. Totéž platí bohužel i pro dělení pásma na 2 rozhraní (typicky eth0 a wlan0). Musí se rozdělit pásmo na 2 části a na každou z těchto částí aplikovat popsané dělení,
    např. :
    div_bandwidth eth0 128 4 192.168.1.1 64
    div_bandwidth wlan0 128 4 192.168.2.1 64 Doplněk: Funkce omezí veškerý provoz na
    zadaném rozhraní na rychlost připojení Internetu. Což není zrovna vhodné, pokud
    vám na routeru běží třeba FTP server. Vytvořil jsem tedy další funkci bypass_shaper,
    která vyřadí lokální přenos z omezení:
    bypass_shaper()
    {
    tc class add dev $1 parent 1: classid 1:2 htb rate $2 ceil $2
    tc filter add dev $1 protocol ip prio 0 parent 1: u32 match ip src $3 classid 1:2
    } Volá se
    bypass_shaper rozhraní rychlost rozsah

    Tím se lokální provoz procházející síťovou kartou rozhraní vyřadí z omezení na rychlost
    připojení do Internetu. Místo toho se omezí na rychlost, která se zde zadává i s jednotkami (např. 2Mbit). rozsah je rozsah adres, který používáte v lokální síti (např. 192.168.0.0/16). Původně jsem chtěl do funkce zadat napevno všechny privátní rozsahy, ale dnes i sítě některých ISP fungují v privátním rozsahu.

    Další informace:
    HTB - jemný úvod - článek na root.cz
    Linux Advanced Routing and Traffic Control - nevyčerpatelný zdroj inf. o Traffic Shapingu
    HTB Homepage - Stránka autora HTB (použitého nástroje pro traffic shaping) s manuálem a příklady nastavení.
    Děkuji člověku s nickem "Pomerančovej Džžus", který mě konečně dokopal napsat uvedenou funkci. Článek vznikl přepsáním ICQ komunikace s ním.

    Tipy triky

    1)Ftp server běžící v privátní sítí se dá snadno zpřístupnit z venku pomocí iptables takto:
    iptables -t nat -A PREROUTING -d VNEJSI_IP -p tcp --dport 21 -j DNAT --to VNITRNI_IP_FTP

    2)jak WISP donutit ukazovat i wlan ?
    upravit soubor /etc/ntop/ntop.config
    ENABLE_NTOP="yes"
    NTOP_CMDLINE="-P /var/ntop -w 3000 -L -d -A 0 -a /dev/null -s 32768 -S 0 -i wlan0, wlan1, wlan2"
    Za -i vypíše seznam všech interface které chceš sledovat, odděluješ čárkou. Za -P je cesta k adresáři, kde si dělá ntop tempy (musí existovat). Pak stačí restartovat daemona ntop.init a už; to jede

    3)jak se přihlásit na WISP z jiného PC ?
    Po prvním spuštění WISP-u dáme hned Save configuration from all packages ! (to proto, že
    se generují klíče pro sshd, Wisp to tam i píše) Použijeme na přístup např. Putty.
    Putty stahujte odtud
    Stáhne se pouze jeden exe soubor, a ten se spustí, to je to bez instalace.
    Vyplňte v části sesion:
    Host name : IP adresa wisp-u
    Protokol : ssh
    Saved session : wisp
    V části SSH je třeba dát:
    Preferred shh protokol version: 2
    Když nedáme SSH version2 nepřihlásíme se.
    Ak si to chceme ulozit pre dalsi pristup dame v casti session Save
    Pro přihláš;ení dáme Open
    Kvůli bezpečnosti změňte heslo pro root-a, default je prázdné když se prihlašujete poprvé.
    Je možné,že když je heslo pro root-a prázdné teda default tak nás Wisp nepřihlásí.
    Po změně hesla dáme:
    Save configuration from all packages
    Reboot

    Problém:Když se při přihlašovaní objeví hláška: Incorrect CRC received on packet
    Tak jste asi nezadaly SSH2 a máte SSH1.

    4)Jak nahraju na WISP další balíček, nebo přenesu soubor ?
    Ukážeme si dva možné způsoby přenosu.Pomoci SCP a FSCP.
    Pro přístup můžeme použít už víše uvedený program WinSCP:

    Program nainstalujeme. Spustíme.
    Nastavíme nové připojení:
    Hostitel : IP adresa wispu
    Číslo portu : 22
    Protokol : SCP
    SSH : SSH2

    A přihlásíme se.

    Pozn:
    při tomto způsobu komunikace s Wisp-em není potřeba nic nastavovat na straně Wisp-u.

    Druhá možnost je komunikace pomoci SFTP.
    Použijeme sftp t.j. secure ftp teda kryptované ftp. sftp.lrp Tady je potřeba si nahrát např. přes disketu balík sftp.lrp
    doplnit ho do suboru syslinux.cfg na konec
    Např.:
    LRP=root,zebra, .....,sftp
    Uložíme subor.
    Spustíme Wisp.
    Pak v suboru /etc/ssh/sshd_config opravíme poslední řádek tak, aby tam byla cesta k suboru
    sftp-server, u mě takto (pro vyhladaní zadáme: find / -name sftp-server):
    Subsystem sftp   /usr/libexec/sft-server
    Save configuration from all packages
    Reboot

    Spustíme program WinSCP:
    Nastavíme nové připojení:
    Hostitel : IP adresa wispu
    Číslo portu : 22
    Protokol : SFTP
    SSH : SSH2

    A přihlásíme se.

    Připravuje se

    Host AP
    Web server
    PHP
    DC Hub

    Poděkování

    Děkuji všem, kteří se zajímají, instalují a pomáhají ostatním při řešení problémů. Speciálně děkuji všem dopisovatelům do CZFree fóra, kde se řeší problémy WISPu.
    Verzi 1.0.1 doplnil Noro - díky. PS:Snad jsem to ze slovenštiny dobře přeložil :-)
    Verze 1.0.2 doplněna o DNS+ drobné úpravy v textu
    Verze 1.0.3 úprava nastavení Ntop - od Diablo666
    Verze 1.0.4 doplněno o Traffic Shaping a DNS - od Lukáže Turka

    Laxx © march 2004