Linux jako internetová gateway (1)

Jan Vondráček 14. 1. 2004

První díl nového návodu zejména pro začátečníky, kterak si postavit domácí linuxový router. Dnešním díl vás provede instalací distribuce Slackware ve vhodně ořezané verzi.

K napsání tohoto návodu mě přivedly špatné zkušenosti s některými specializovanými distribucemi pro bezdrátový router, ale lze jej použít i pro router provozující drátové připojení třeba přes kabel či něco podobného. Nakonec z toho tedy vyšla vlastní instalace a ruční konfigurace založená na Slackware 9.1. Distribuci Slackware jsem zvolil kvůli její jednoduchosti, vše se sice dělá ručně, ale zato mi to přijde velice pohodlné a i třeba startovací skripty jsou jednoduché.

Příprava:

Jako první krok doporučuji si ujasnit, co vlastně chceme s gatewayí dělat a jaké služby bude poskytovat – Linux umí poskytovat snad úplně všechny služby, na které si vzpomenete. A dále budeme potřebovat mapu sítě, je to důležité z hlediska nastavování firewallu, poskytovaných služeb a rozvržení IP adres, a řekl bych, že je to zcela nezbytné v případě, kdy bude počítač mít více rozhraní. Budu zde přímo popisovat svou instalaci a situaci, ta je následující: PC plní funkci routeru a firewallu s překladem adres pro dvě sítě, do internetu je připojen přes wifi, správa se provádí telnetem, přístup je pouze z vnitřní sítě. Jako poslední věc doporučuji těm, kteří s Linuxem teprve začínají, přečíst základní popis Linuxu a jeho mechanismů, aby se dotyčný při zprovozňování nezasekl na tom, že neví, kdo je to root atd. Dobré články k tomu jsou nejen na ROOTu, ale také na www.abclinuxu.cz, dále doporučuji český překlad slabooku (podrobný popis instalace a hlavně použití fdisku). V návodu odbočuji, aby každý, i Linuxu neznalý človíček, toto mohl nainstalovat. K editaci můžete použít program vim a nebo Midnight Commander, má interní editor a je pro začátečníka jednodušší.

Jako hardware stačí poměrně slabý počítač. Moje konfigurace je P120, 32 MB RAM, 2GB HDD (disk stačí i menší, třeba 450MB). Je výhodné použít všechny síťové karty typu PCI, ISA také funguje, ale zde se při zavádění modulů musí dbát na správné nastavení IRQ a I/O. V mém případě se jedná o karty od edimaxu, moduly ne2k-pci.

No a jako poslední věc je třeba si sehnat software, například na ftp.vslib.cz, smontovat pc a zapojit síť. Jen pro ty, co s Linuxem jako serverem nepracují. Instalovat budeme z CD-ROM, ale ta se pak po nainstalovaní může odpojit a vyndat, po instalaci již není vůbec potřeba. Pokud je něco ještě potřeba doinstalovat, tak to nahrajeme na server pres ftp a nainstalujeme se z disku.

Instalace:

Nabootujeme z instalačního CD1 Slackware, na CD2 jsou doplňkové programy pro tento účel zbytečné a je tam ještě live distribuce, má výhodu, že hledá a snaží se naovládat veškerý hardware, co v PC najde, takže je docela dobrá na otestování hardware. Já to použil, když jsem potřeboval zjistit, jestli mi najde moji wifi kartu XI-626. Tuto kartu doporučuji, protože v Linuxu chodí bez nutnosti patchovat a kompilovat jádro.

Po nabootování to chce vybrat mapu klávesnice, necháme defaultní, tudíž enter. Pak už se zalogujeme jako root, bez hesla.

Teď musíme vytvořit diskové oddíly pro instalaci. Budeme vytvářet dva, Linux native – disk, kam se instaluje, a swap – to není třeba vysvětlovat a troufám si tvrdit, že pro naši potřebu při 64MB RAM ani nebude potřeba, ale pokud tam bude někdo provozovat třeba i web, samba server atd., vyplatí se swap mít. Použijeme program fdisk, je textový a připadá mi nejjednodušší a nejmocnější. Popíšu zde variantu vytvoření oddílů na prázdném disku. Pro rušení stávajících oddílů, případně další věci, se podívejte do nápovědy, není to nic složitého. Takže píšeme:

fdisk /dev/hda
n (n jako nová oblast)
p (partition primarní)
číslo oblasti dáme 1
počáteční cylinder necháme defaultně 0 (začínáme totiž na začátku disku)
koncový dáme buď číslo, nebo velikost, třeba +640M (tím máme vytvořenou oblast pro instalaci systému)
a ještě tuto oblast musíme nastavit jako bootovatelnou, číslo oblasti samozřejmě 1 (ve výpisu disků se u ní zobrazí *)
n
p
2
počáteční stopa teď není 0, ale ta, kde končí datová oblast vytvořená před chvílí
koncovou stopu můžeme nechat jako konec disku, tedy defaultní hodnotu (tím máme oddíl pro swap, pro naše potřeby bude bohatě stačit 64MB prostoru, tak s tím kalkulujte už při vytváření datové oblasti)
t (změna typu oddílu, defaultně je to linux native – datová oblast Linuxu, my z toho musíme udělat linux swap)
2 (swapovací oddíl je v našem případě ten druhý)
82 (číslo typu, které je přiřazeno pro Linux swap, schválně se podívejte, kolik jich fdisk umí :-)
p (ještě si pro jistotu zkontrolujte výpis tabulky oddílů)
w (uloží nastavení tabulky a ukončí fdisk)

Teď jsme připraveni na kopírování souborů. Spustíme program setup a vybereme první pložku ADDSWAP, další položky následují automaticky po úspěšném dokončení této, takže po přípravě swapu se automaticky spustí položka TARGET s formátováním dis­ků.

ADDSWAP – připojuje se a formátuje swapovací oddíl, ukáže všechny swapovací oddíly na připojených hdd
TARGET – určuje, kam se má Linux instalovat, a také se formátuje datová oblast. Doporučuji použít filesystem RaiserFS, je to žurnálovací filesystem a pro nás má výhodu, že při výpadku napájení a následném spuštění nepotřebuje uživatelův zásah pro kontrolu disku tak, jako se to stává u EXT2. Tento filesystem podporuje výchozí jádro bare.i (bootovali jsme pomocí něj při instalaci).
SOURCE – vybíráme zdroj, odkud se má instalovat, a necháme si tedy najít CD-ROM
SELECT – výběr kategorií instalačních balíčků, my kvůli úspoře zaškrtneme pouze A, AP a N, více není potřeba
INSTALL – vybereme instalaci expert a budeme vybírat následující balíčky:

Tabulka č. 534
A – základ
kernel-ide jádro
aaa base naprostý základ, adresářová struktura
bash 2.05b příkazový interpret Bash, základ
bin 8.5.0 základní příkazy, ls, copy…
bzip2 komprimační program, doporučuji instalovat
coreutils pokračování základních příkazů
cxxlibs knihovny nutné pro chod systému
dcron cron daemon, plánovač opakujících se úloh
devfsd správa filesystemu, nutné pro provoz
devs soubory device – jejich seznam, nutné pro provoz systému
e2fsprogs nástroje pro kontrolu filesistémů, nutno instalovat
elflibs knihovny pro spouštění programů, nutné
etc konfigurační adresář etc, nutné
gawk program pro práci s textovým výstupem, budeme potřebovat
gettext programy pro hlášky při logování na systém
getty konzole pro logování do systému, nutné
glibc-solibs knihovny nutné pro chod systému
glibc-zoneinfo knihovny nutné pro chod systému
grep program pro práci s textovým výstupem, budeme potřebovat
gzip pakovací program, nutné pro chod systému
hdparm utility pro disky
infozip vypisuje informace o zip souborech
isapnptools utility pro ISA karty, pokud ISA nepoužíváte, není nutno instalovat
kernel-modules moduly/drivery, nutné
less prohlížeč souborů
lilo zavaděč Linuxu
module-init-tools utility pro práci s moduly
pciutils utility pro práci s PCI sběrnicí
pkgtools nástroj pro instalování a rušení balíčků
procps utility pro práci s procesy, kill…
rieserfsprogs utility pro ReiserFS
sed program pro práci s textovým výstupem
shadow utility pro hesla, nutné pro přihlašování
slocate utilita pro cron
sysklogd syslog daemon pro logování hlášek
sysvinit spouštěcí skripty
tar pakovací program
util-linux provozní utility pro Linux
AP – aplikace
groff program nutný pro manuály
man program zobrazující manuály
man-pages manuálové stránky
mc Midnight Commander, souborový manažer
vim 6.2 editor Vi
N – síť
apache www server, není nutný
bind dns server, není nutný
dhcp DHCP server
dhcpcd DHCP klient
fetchmail SMTP server, není nutný
inetd program pro spouštění síťových daemonů, nutný
iptables firewall, nat…, nutné
iptraff program s menu pro sledování provozu, není nutný
links a linx textové www prohlížeče, není nutné
ncftp vylepšené řádkové ftp, není nutné
nfs-utils network file system, unixová síť, není nutné
ntp network time protokol, řízení času přes Internet, není nutné
open-ssh ssh server a klient, pozor, nutno aplikovat patch, není nutné
php php skripty pro apache, není nutné
ppp ppp utility, hodí se při připojování seriáku, nutné pro modem
proftpd ftp server, není nutné
samba utility pro vytvoření serveru a klienta MS sítě, není nutná
sendmail SMTP server, není nutný
stunnel program pro ssl tunely, není nutný
tcpdump program pro zachytávání paketů na ethernetu, není nutný, ale hodí se
tcpip základní podpora tcp/ip, nutné
traceroute nepotřebuje vysvětlení
wget vysosávač webů, není nutné
wireless-tools utility pro wifi, pokud budete wifi používat, pak je to nutné

Teď se nám budou kopírovat soubory. Tato instalace bez apache, bindu a samby (tedy věci pouze na router) se vejde do 128MB.

CONFIGURE – po nakopírování souborů se spustí závěrečná dokonfigurace v několika krocích.

Linuxový kernel dáme z cdrom a vybereme jádro bare.i, má podporu všeho v modulech, není sice nejvýkonnější, ale určitě dostačuje pro naše potřeby.

Bootdisk opustíme, ten nepotřebujeme.

Nainstalujeme lilo, stačí automatická instalace (tedy simply a v dalších dvou krocích to chce výběr rozlišení konzole, stačí standardní a SCSI tu taky asi nemáme, takže enter) a instalujeme ho do MBR.

Zvolíme root heslo (root je správce systému, superuživatel).

Modem asi potřebovat nebudeme. Ze sítě nás pouze zajímá název počítače. Nakonec si ještě můžeme vybrat spuštění některých daemonů, nechám to už na vás, ale inetd určitě budeme potřebovat spuštěný. Nepopisuji zde úplně všechno, jsme přece lidi a myslíme :-)

Pokud vše proběhlo dobře, opustíme konfigurační program a počítač restartujeme buď příkazem reboot, nebo trojhmatem ctrl+alt+del a necháme ho nabootovat náš právě nainstalovaný Li­nux.

Jistě jste si všimli, že při startu trvaly dost dlouhou dobu dvě věci. Timeout u lila a závislosti modulů. Můžeme si start trochu urychlit:

  • Snížíme timeout u lila, editujte soubor /etc/lilo.conf, zde je parametr timeout v sekundách a dejte třeba 10, ničeho jiného si nevšímejte. Ppo ukončení editace souboru zadejte příkaz lilo, aby se ta změna času projevila při bootování.
  • Vypneme hledání závislostí u modulů, to se totiž provádí jen tehdy, když s moduly něco uděláte, třeba přidáte nový. K tomu slouží příkaz depmod -a. Pro vypnutí při startu editujte soubor /etc/rc.d/rc.modules a zakomentujte vše, co je hned pod nadpisem Update module dependencies. Teoreticky můžete zakomentovat vše v tomto souboru a moduly zavádět ručně v rc.local  nebo v /etc/modules.conf, přijde mi to přehlednější.
Našli jste v článku chybu?
DigiZone.cz: Prima Max bude mít letní kino. Na střeše...

Prima Max bude mít letní kino. Na střeše...

120na80.cz: Aktivita klíšťat: stupeň 9

Aktivita klíšťat: stupeň 9

Vitalia.cz: Jeďte do lázní, to je holistika

Jeďte do lázní, to je holistika

Vitalia.cz: 3× o tucích: proč je potřebujeme?

3× o tucích: proč je potřebujeme?

Měšec.cz: Cestujte bez starostí, získejte výhodné pojištění

Cestujte bez starostí, získejte výhodné pojištění

120na80.cz: Jsou opalovací krémy pro děti jiné?

Jsou opalovací krémy pro děti jiné?

Lupa.cz: Text umírá, na webu zbude jen video

Text umírá, na webu zbude jen video

DigiZone.cz: Boj Markízy a Novy o federální trh vrcholí

Boj Markízy a Novy o federální trh vrcholí

Měšec.cz: Od kdy musí studenti platit pojistné?

Od kdy musí studenti platit pojistné?

Vitalia.cz: Jelení farma produkuje kvalitní maso

Jelení farma produkuje kvalitní maso

Lupa.cz: Zkoušeli operátoři manipulovat měření LTE?

Zkoušeli operátoři manipulovat měření LTE?

Root.cz: Quake slaví 20 let novou epizodou zdarma

Quake slaví 20 let novou epizodou zdarma

DigiZone.cz: Markíza: tady je předběžné opatření

Markíza: tady je předběžné opatření

DigiZone.cz: HbbTV KinoSvět: už jede na dalších TV

HbbTV KinoSvět: už jede na dalších TV

120na80.cz: Proč komáři létají hlavně večer?

Proč komáři létají hlavně večer?

DigiZone.cz: Nova: technické pauzy každé 1. pondělí

Nova: technické pauzy každé 1. pondělí

DigiZone.cz: Skylink: Nova Sport volně

Skylink: Nova Sport volně

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

Vitalia.cz: Máte chutě? Nejezděte do světa, ale do Dobřichovic

Máte chutě? Nejezděte do světa, ale do Dobřichovic