Konfigurace sítě
Pokud nám boot proběhl dobře a Linux běží a vy jste se zalogovali jako root, můžeme pokračovat v konfiguraci. V této fázi již nebudeme potřebovat CD-ROM mechaniku a až skončíme tuto část, tak snad už ani monitor a klávesnici.
Hostname
Hostname počítače změníme nebo vložíme prostým napsáním do souboru /etc/HOSTNAME
, v mém případě obsahuje: thovt.vetrnik.net
.
Routování
Zapneme routování neboli předávání paketů z jednoho rozhraní na druhé, zadejte:
cat /proc/sys/net/ipv4/ip_forward
Pokud vypíše 1, je routování zapnuto, pokud je tam 0, tak je vypnuto. Zapneme ho takto, zadejte:
echo 1 > /proc/sys/net/ipv4/ip_forward
Adresář proc
je totiž jen virtuální a s jeho pomocí komunikujeme s jádrem a předáváme mu parametry. Každý soubor v tomto adresáři reprezentuje nějakou funkci, případně program. Lépe je to popsáno v seriálu Co před námi tají /proc. Pro naše potřeby to ale není nutné teď vše probírat.
Pokud musíte routování ručně zapínat, máte několik možností, jak ho automaticky zapínat hned při startu: projít startovací skripty v adresáři /etc/rc.d
a upravit je, nebo vše, co chcete spouštět sami, prostě pište do souboru /etc/rc.d/rc.local
, ten se spouští jako poslední. Sice se to může zdát spoustě linuxových administrátorů hloupé to takto psát, ale je to na jednu stranu jednoduché a také přehledné, tedy alespoň pro náš případ. Takže pokud routování nebylo zapnuton šup s tím na první řádek rc.local
, nebojte, bude toho více :-)
Síťová rozhraní
Síťovými rozhraními, interfacy, se rozumí jakékoliv propojení počítače s jiným počítačem. Rozhraní je skutečně mnoho, nejpoužívanějším je určitě ethernet, ať už drátový, nebo bezdrátový, pak sériový port a paralelní port. Začneme klasickou ethernetovou kartou.
Jakýkoliv operační systém potřebuje k provozu síťové karty ovladač, driver. Ten je v Linuxu realizován buď modulem, a nebo přímo v jádře systému. Otázka je, co je lepší, ovladač v jádře zabírá více místa a obtížněji se mu předávají parametry. Nahrávání ovladačů přes moduly je zase mnohem pomalejší. My ale budeme realizovat ovladače přes moduly, má to výhodu, že nemusíme sestavovat nové jádro, použijeme to z distribude, bare.i
O zavádění modulů se v Linuxu stará program modprobe ve spolupráci s insmod, který si volá. O výpis zavedených modulů se stará lsmod a o odstraňování rmmod. Modulů je spousta a jsou v adresáři /lib/modules/
… Dají se i mazat ty, které nebudete potřebovat, třeba když máte nedostatek místa na disku (jako například já na svém starším notebooku 386 s 130MB diskem), ale raději to nedělejte, nebo si smažete některý potřebný a pak vám něco nemusí chodit (také odzkoušeno v praxi :-).
Takže pokud máte v počítači PCI síťovou kartu, já používám Edimax 10Mb combo s chipsetem Realtec-8029, napište: modprobe ne2k-pci
. Pokud vše proběhlo dobře, měl by se modul objevit při zadání lsmod, modprobe jich zavedl více podle potřeby. A dále se karta, případně karty, mám dvě a pro obě PCI karty stačí zavést modul jednou, objeví v /proc/net/dev
, odtud můžeme čerpat informace, jak se daná karta jmenuje. Mluvím o tom proto, že moje bezdrátová karta se se současným ovladačem orinoco_pci hlásí jako ethernet (tedy eth), kdežto s předchozími ovladači se hlásila jako wlan. Pořadí karet je určeno pořadím pci slotů, tj. nejblíže ke konektoru klávesnice je 0, v Linuxu se začíná číslovat od 0, tj. eth1 je druhý ethernet. Ale pro jistotu ještě doporučuji vše otestovat pingem a pohledem na ledky :-) Hardware karet si můžeme ještě prověřit příkazem lspci. Pokud se modul správně zavedl, tak šup s ním na další řádek do rc.local
.
Teď si interface spustíme, předpokládám, že kabeláž je v pořádku a máte zde ještě jeden připojený počítač s rozchozenou sítí. Napište:
ifconfig eth1 192.168.1.1 netmask 255.255.255.0 up
Pokud vše proběhlo dobře, tak necháte-li teď vypsat ifconfig
bez parametrů, zobrazí se vám dva interfacy – loopback a ethernet0. A teď otestujeme, zda nám síť chodí. Pingněte na druhý počítač, který máte připojený, řekněme, že má adresu 192.168.1.2, měli byste dostat zhruba toto:
root@thovt:~# ping -c 2 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=0.634 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=0.515 ms
--- 192.168.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1006ms
rtt min/avg/max/mdev = 0.515/0.574/0.634/0.064 ms
Parametr c udává, kolik paketů PC pošle. Pokud se žádná odezva nevrátila, není nic ztraceno, na PC 192.168.1.2 můžete mít ještě ping zakázaný, to prověříme:
root@thovt:~# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.1.2 ether 00:00:B4:BA:C9:30 C eth1
Objevila se nám mac adresa, takže i když počítač neodpověděl, tak je spojení po ethernetu navázáno. Kdyby neodpověděl, bylo by místo mac adresy napsáno incomplete a záznam by po chvíli zmizel. Pominu zde nastavování správných IP adres a masek sítě, defaultních rout a DNS.
Teď se ještě podíváme na nahazování bezdrátových karet. Všechny karty s chipsetem Prism 2 by měly chodit na modul orinoco_pci, karta se pak hlásí jako ethernet. Následující řádky můžete rovnou opět psát do rc.local
modprobe orinoco_pci |
#zavede modul pro wifi kartu, v mém případě jako eth0, možno prověřit příkazem iwconfig, bez parametrů vypíše wireless interface |
iwconfig eth0 essid sit13 |
#konfigurace essid wifi sítě, název sítě je zde sit13, dostanete od providera |
iwconfig eth0 mode managed |
#mód karty, na Linuxu umí chodit i jako AP, většinou není nutné nastavovat, momentální nastavení karty vám prozradí iwconfig |
Kartu pak nahodíme přes ifconfig, jak jsme si ukazovali dříve.
Ještě trochu odbočím ohledně wifi, příkaz iwconfig eth0
vám vypíše údaje o wifi jako kvalitu linky… Příkaz dmesg
vypisuje hlášení například o chybách a o tom, že AP je nedostupné, třeba jako v mém případě u slabšího signálu mi spojení občas vypadává a toto je první krok k diagnostice, proč linka nejede. A jako poslední si dovolím malý skriptík na monitorování kvality linky, za dobré se považuje tak 60 (Pozn. red.: já jsem ráda, když mám 20 :) –Johanka):
#!/bin/bash
while true; do
q=`iwconfig eth0 | grep Link | awk '{print $2}' | sed 's#Quality:##g' | sed 's#/92##g'`
j=$((q / 2))
echo -n "$q "
for i in `seq $j`;do echo -n "="; done
echo ""
sleep .5
done
Poskytuje zhruba takový výpis:
18 ========= 24 ============ 26 ============= 22 =========== 30 =============== 22 =========== 22 =========== 22 =========== 18 ========= 28 ==============
Jak vidíte, jsem na tom se signálem docela bídně :-)
Pokud má vaše veřejné rozhraní dostávat od providera adresu od DHCP serveru a je jedno, zda je to wifi, nebo klasický ethernet, pak se to dělá takhle: dhcpcd eth0
. Program dhcpcd zůstane pak běžet jako daemon a provede následující věci:
- Nahodí interface a přidelí mu IP adresu, kterou dostal, možno ověřit přes ifconfig.
- Zapíše defaultní routu do routovací tabulky, ověříme příkazem route.
- Zapíše DNS servery, které dostal, do
/etc/resolv.conf
. Stávající záznam v souboru bude přepsán a po ukončení činnosti daemona obnoven. - Parametry, co získal, a PID zapíše do souborů
/etc/dhcpc/dhcpcd-eth0.info
a/etc/dhcpc/dhcpcd-eth0.pid
, soubor s PIDem nám samozřejmě může pomoci deamona sestřelit a případně si zažádat o adresu znovu.
Já narazil na jeden takový menší problém, když jsem měl zavedené moduly pro všechny karty, tak dhcpcd nechodil a dokonce shazoval již nahozené interfacy. Možná to byl problém jen mého hardware, ale vyřešil jsem to tak, že jsem nejdříve zavedl modul pro wifi kartu a požádal si o IP, a teprve potom jsem zavedl moduly pro zbylé karty a nahodil je, vše pak fungovalo dobře. Samozřejmě příkaz přidáme do rc.local
.
Pokud IP adresu nedostáváte od providera přes DHCP, tak si teď ukážeme, jak to udělat ručně. Napište:
route add default gw 1.1.1.2
tím jste zadali defaultní gateway na adresu 1.1.1.2, adresu dostanete od providera. V routovací tabulce by to mělo vypadat následovně:
root@thovt:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.8 * 255.255.255.252 U 0 0 0 eth2
192.168.1.0 * 255.255.255.248 U 0 0 0 eth1
1.1.1.0 * 255.255.255.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default 1.1.1.2 0.0.0.0 UG 0 0 0 eth0
Pokud vše funguje, tj. ping do jiných sítí, pak do rc.local
přidáme další řádek. Jen pro pořádek samozřejmě nejdříve nahodíme interface a pak teprve na něj můžeme dávat defaultní routu.
Zadání DNS serverů je velice jednoduché, stačí do souboru /etc/resolv.conf
napsat nameserver 1.1.1.1
a zbytek smazat. A to je vše. Serverů může být samozřejmě i více, jako mi to přidělil DHCP server:
root@thovt:~# cat /etc/resolv.conf nameserver 1.1.1.1 nameserver 194.108.73.1 nameserver 212.65.193.157 search vetrnik.net
Nyní by nám již měla síť chodit a počítač routovat, já ale ještě přidám jednu věcičku, a to připojení k tomuto serveru přes seriový port a nulový modem. Dalo by se sice říci, že je to triviální, ale sám vím, jaké jsem s tím měl jako začátečník problémy. Tímto způsobem připojuji k internetu Palma a také starší notebook, který nemá jinou možnost.
Do souboru /etc/inittab přidejte řádek:
palm:3:respawn:/usr/sbin/pppd /dev/ttyS0 33600 noauth silent persist local crtscts asyncmap 0 lock 192.168.1.13:192.168.1.14
Na serveru se nám to spustí jako daemon a bude čekat na spojení na seriáku.
palm |
název procesu, libovolný |
3 |
runlevel, ve kterém se bude spouštět, nám stačí 3, ale lze napsat i 2345 |
respawn |
příkaz se po skončení znovu spustí, příkaz běží jako daemon |
/dev/ttyS0 |
seriový port, zde com1 |
33600 |
rychlost, 386 neumí více, ale samozřejmě lze použít i 115200 |
noauth |
připojujeme se doma kabelem, který nám nahrazuje ethernet, autorizaci tedy nepotřebujeme |
silent |
pppd se bude chovat jako daemon a bude čekat na spojení |
persist |
po ukončení spojení bude daemon čekat na nové |
local |
pppd nebude používat modemovou kontrolu toku dat |
crtscts |
nastavení hw kontroly toku, je na to nutno více drátů, ale je to rychlejší |
192.168.1.13:192.168.1.14 |
první IP je serveru, druhá klienta |
Propojte to kabelem a na klientovi s Linuxem napište:
pppd 33600 local crtscts lock asyncmap 0 noauth 192.168.1.14:192.168.1.13 /dev/ttyS0
a je to :-)