Připojujeme domácí síť

26. 5. 2003
Doba čtení: 10 minut

Sdílet

Poslední dobou je v domácnostech čím dál více počítačů. Většinou už jsou připojeny do domácí sítě. Dnes je internet čím dál tím běžnější součástí domácnosti, ale co udělat, když ho chceme rozvést do celé sítě? Nejjednoduší je řešení s vyhrazeným počítačem zvaným router, přes který je připojena celá domácí síť. V článku si ukážeme, jak na to.

Pokud chceme takovou síť připojit ke komerčnímu providerovi, budeme potřebovat překlad IP adres neboli maškarádu, tomu odpovídá následující schéma sítě. Uvažujme připojení do wifi sítě, pro připojení routeru do drátové sítě jsou potřeba jen drobné úpravy.

Schéma sítě:
Schéma sítě


Budeme uvažovat heterogenní síť, vyjdu ze situace, kterou mám doma. Klienti: Win Me, Win XP, Win 95 OSR2. Router bude běžet na mém oblíbeném Linuxu Slackware.

Nainstalujeme router. Na téma instalace Linuxu a jaký použít HW bylo popsáno mnoho stran, takže jen stručně, doporučuji Slackware a min. Pentium 75 16MB RAM 500MB HDD. Disketová ani CD-ROM mechanika nejsou potřeba (pokud nebudete instalovat ze sítě, je CD-ROM potřeba pro nainstalování, a pokud vám PC nebude bootovat z CD-ROM, tak disketová mechnika pro nabootování). Instalace Slackware je velmi jednoduchá a na domácím routeru se nemusíte zabývat ani fonty nebo češtinou. Bohatě stačí, když dáte nainstalovat tyto skupiny: „A – Base Linux system“, „AP – Various appliacation“, „D – Program development“, „L – system libraries“ a „N – Networking“. Z programů, které jsou přímo v distribuci, budeme aktivně potřebovat MC, SSHD, iptables, gcc, hlavičkové soubory jádra a zdrojáky jádra. Zdrojáky bohužel nejsou na instalačním CD a jsou potřeba pro kompilaci ovladače WiFi karty, takže je potřeba je stáhnout z internetu ještě před samotnou instalací routeru. Na webu www.slackware.com je k nalezení řada mirrorů, odkud lze Slackware stáhnout, tam jsou i ty zdrojáky jádra.

Linux máme v základu nainstalovaný, vrhneme se na prvotní nastavení vnitřní sítě. V souboru /etc/rc.inet1 je nastavení pro síťové karty eth0 a eth1, teď nás bude zajímat eth0, protože ta půjde do vnitřní sítě. Nastavte IP adresu a masku sítě, kterou budete používat. Po restartu routeru a obdobném nastavení na klientech by měla fungovat vnitřní síť. Ze začátku doporučuju do routeru zastrčit pouze síťovku eth0, WiFi (wlan0) kartu nechte zatím venku, teď se zaměříme na rozchození vnitřní sítě.

Jaké použijeme IP adresy? Od serveru (AP), na který se budeme naším routerem připojovat, dostaneme buď automaticky od DHCP, nebo manuálně od jeho administrátora (to je ta pravděpodobnější varianta) IP adresu brány, DNS serveru a IP adresu našeho budoucího routeru. Adresu DNS budeme potřebovat i pro nastavení klientů, protože na routeru nebudeme provozovat DNS službu pomocí programu Bind, je to zbytečné. Pokud máme IP od DHCP serveru, adresa DNS serveru je k nalezení v /etc/dhcpc/dhcpcd-wlan0.info. Na vnitřní síti můžeme použít dva rozsahy (ono jich je víc, ale pro zjednodušení stačí popsat dva). Buď jsme připojeni na síť, která nám dá pouze jednu IP (pro router), potom budeme muset použít maškarádu. Pokud se ale připojujeme na síť kompatibilní s CZFree.NET, dostaneme od administrátora AP přidělenou celou síť, například s maskou 255.255.255.224 (pozn. red.: ale pouze, pokud jsme byli celý rok hodní! :) –Johanka). To znamená, že na rozdíl od prvního případu, kdy bude naše síť vidět pouze pod jedinou IP routeru, bude v druhém případě z vnější sítě vidět každý z vnitřních počítačů, nepoužijeme tedy maškarádu (pozn. red: záleží na vkusu, maškaráda výrazně zvyšuje bezpečnost a usnadňuje tím správu celé sítě, proto ji mám doma dobrovolně, byť mohu dostat od CZFree IPček, kolik si zamanu :) –Johanka). Jestli dostaneme k dispozici celou šíť, nebo máme použít maškarádu, nám prozradí administrátor serveru, ke kterému se budeme připojovat. Průběžně budu popisovat obě situace. V Slackware Linuxu je nastavení sítě v souboru /etc/rc.d/rc.inet1.

První případ, od serveru dostaneme jednu IP adresu. Od administrátora dostaneme tyto adresy: brána, DNS, adresa našeho budoucího routeru. Na vnitřní síťi doporučuji použít jinou síť, než používá provider, takže pokud dostaneme IP routeru 192.168.34.12, na vnitřní síti použijeme adresy z rozsahu 10.0.0.0, a opačně. Naříklad 10.1.1.0/255.255­.255.000, takže router bude mít vnitřní IP 10.1.1.1, maska 255.255.255.000, klienti dostanou 10.1.1.2, maska stejná atd.

Druhý případ, připojení do CZFree sítě. Příklad, dostaneme adresu 10.158.58.37 a pro vnitřní síť 10.193.50.32/255­.255.255.224. Všim­něte si masky, to znamená, že IP adresa před ní uvedená není konkrétní IP počítače, ale celé sítě. V tomto případě dáme našemu routeru vnitřní IP 10.193.50.33, maska 255.255.255.224, klienti dostanou 10.193.50.34, maska stejná atd. Více např. na www.cpress.cz/kni­hy/tcp-ip-bezp.

Předpokládejme, že router se nachází blízko antény a tuďíž na velmi nepřístupném místě (např. v dílně pod střechou jako můj router), budeme ho tedy spravovat na dálku pomocí SSH. Stáhneme si SSH klienta, pro Windows doporučuji PuTTY, jeho konfigurace je snadná a zvládne ji každý. Zadáme tedy adresu routeru, zvolíme SSH a stiskneme Connect. Předem ještě doporučuji nastavit font (položka Window – Appearance) na Courier New, 10pt. Defaultní font je velmi drobný. Nastavení lze uložit. PuTTY se zeptá, zda chceme přijmout certifikát našeho routeru, stiskneme ano. V okně se objeví „login as:“, zadejte „root“ a rootovské heslo. Od tohoto okamžiku prakticky není rozdílu, jestli sedíte u routeru jako takového, nebo u svého pracovního počítače s WinXP.

V tomto okamžiku je vnitřní síť prakticky funkční, zbývá doladit detaily. Sepíšeme si seznam IP adres v naší sítí neboli soubor hosts, ten může vypadat např. takhle:

127.0.0.1 localhost
10.193.64.113 neptun #zdenkuv server vnitrni 255.255.255.248
10.193.64.114 zdenek #zdenkuv hlavni PC 255.255.255.248
10.193.64.115 cyrano #zdenkuv pocitac-matka 255.255.255.248
10.193.64.116 mirek  #pocitac ve zdenkovy siti 255.255.255.248
10.193.64.117 player #mp3 pocitac ve zdenkovy siti 255.255.255.248

Za mřížkou jsou komentáře, všimněte si masek na konci, hodí se to v případech, jako je síť, v které jsem zapojený, kdy máme málo IP adres a musíme rozsahy krájet hodně na drobno, abychom si vystačili. Tento soubor musí být stejný na všech počítačích v síti. Ve Windows 9× je to v c:\windows\host, v NT+ c:\windows\sys­tem32\drivers\et­c\hosts a v Linuxu /etc/hosts. Ve Windows nastavte bránu na IP adresu svého routeru a DNS na IP adresu, kterou vám dal administrátor WiFi AP.

Firewall má chránit vaši síť před útoky zvenčí. Pokud se budete routerem připojovat přes maškarádu nebo dokonce přímo do internetu, je firewall nutností. V síti CZFree ho já osobně nepoužívám (domácí síť je zcela nechráněná), ale takové řešení nelze doporučit. Je potřeba, aby firewall v takovém případě neblokoval nové spojení z žádné ze stran, ale aby propouštěl jen ty porty, které uznáte za vhodné.

Firewall pro ochranu vnitřní sítě před útoky z vnější sítě:

#!/bin/bash
echo "Starting firewall ... /etc/rc.d/rc.firewall"

#zakaz vse
iptables -P INPUT DROP
iptables -P FORWARD DROP

#povoli vstup ICMP
iptables -A INPUT -p ICMP --icmp-type 0 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 3 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 11 -j ACCEPT

#povoli veskery vstup z lo a eth0, wlan0 je zakazany,
#vyjma ICMP viz vyse
iptables -A INPUT -p ALL -i eth0 -j ACCEPT
iptables -A INPUT -p ALL -i lo -j ACCEPT

#povoli vse z eth0 smerujici na wlan0
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

#povoli forward zvenci na eth0 u existujich spojeni
iptables -A FORWARD -i wlan0 -o eth0 -m state --state
 ESTABLISHED,RELATED -j ACCEPT

#povoli vstup zvenci na loopback existujicich spojeni
iptables -A INPUT -i wlan0 -m state --state
 ESTABLISHED,RELATED -j ACCEPT

Tento základní firewall není ukázkou nejvyšší bezpečnosti, ale myslím, že pro základní bezpečnost je dostatečný a je natolik jednoduchý, že z jeho syntaxe jistě dokážete odvodit další příkazy a tím zvýšit bezpečnost nebo povolit některé služby. Jako zdroj informací lze doporučit „man iptables“ nebo seriál Stavíme firewall. Jinou možností je použít už předpřipravený firewall.

Ve Slackware je firewall (kód uvedený výše) v souboru /etc/rd.d/rc.fi­rewall. Ve standardní instalaci soubor neexistuje, tak ho vytvořte a nastavte mu práva 0755. Systém ho automaticky při startu spustí, poznáte to i podle hlášky „Starting firewall …“, která je na začátku souboru.

Pokud se budete připojovat přes maškarádu, na konec souboru přidejte toto:

#vystup z wlan0 opatri skraboskou
iptables -A POSTROUTING -t nat -o wlan0 -j MASQUERADE

Nyní se podíváme na nastavení WiFi karty a připojení sítě do nadřazené sítě nebo do internetu. V souboru /etc/rc.d/rc.inet1 přepište všechny eth1 na wlan0. Slackware natvrdo počítá s tím, že v něm budou dvě ethernetové karty, pro wlan karty si musíme uvedený soubor upravit ručně. Nastavte si IP adresu, masku, bránu a DNS (v souboru /etc/resolv.conf, syntaxe je „nameserver IPadresa_primar IPadresa_sekun­dar“). Driver pro WiFi karty hostap roste na adrese hostap.epites­t.fi, stáhněte si nejnovější verzi. Jak jsem psal, je potřeba mít rozbalené zdrojáky jádra. Pokud toto je, měl by jít hostap zkompilovat pomocí „make pci“ a „make install_pci“. Do souboru /etc/rc.d/rc.inet1 přidejte na začátek „modprobe hostap_pci“. Správně by se sice měly moduly pro síťová rozhraní zavádět v /etc/rc.d/rc.net­device, ale pro první způsob mám dva důvody. Je to přehlednější a na jednom počítači se mi stalo, že systém moduly zaváděl až po spuštění souboru /etc/rc.d/rc.inet1. Po zastrčení WiFi karty do routeru by měl Linux při startu vypsat přibližně tohle (platí pro kartu XI-626):

hostap_pci: 0.0.2 CVS (Jouni Malinen <jkmalinen@cc.hut.fi>)
hostap_pci: Registered netdevice wlan0
wlan0: NIC: id=0x8013
wlan0: PRI: id=0x15 v1.0.7
wlan0: STA: id=0x1f v1.3.6
wlan0: Intersil Prism2.5 PCI: mem=0x2000000, irq=5

Pokud máte chuť, je možné použít už zkompilované moduly, uvedený postup jsem vyzkoušel na jednom routeru, kde jsem kvůli malému disku neinstaloval ani gcc, kernel-headers, natož zdrojáky jádra. Vyžaduje to ovšem hostap zkompilovaný se stejnými Wireless Extensions (WE, jsou součástí jádra. V 2.4.20 jsou WE 13) a Wireless Tools, jako máte v routeru, takže nejlépe z jiného Slackware 9, kde ovšem majitel neupgradoval jádro (WE) nebo WT. Pokud ano, upgradujte taky, WT rostou na adrese www.hpl.hp.com/per­sonal/Jean_Tou­rrilhes/Linux/To­ols.html, doporučuji použít nejnovější beta verzi. WE jsou součástí jádra, takže pokud chcete upgradovat WE, stáhněte si nové jádro nebo patch. Zkopírujte si soubory hostap.o, hostap_crypt.o, hostap_crypt_wep.o, hostap_pci.o z a­dresáře /lib/modules/net a do stejného adresáře na svém routeru je nakopírujte. Nezapomeňte zkontrolovat, zda mají stejná práva jako na zdrojovém počítači. Po restartu by měl systém nahlásit, že našel nové moduly, a pokud už máte „modprobe hostap_pci“ v /etc/rc.d/rc.inet1, tak by je měl i zavést a najít WiFi kartu.

WiFi kartu je potřeba nastavit pomocí iwconfigu, to je nejlepší provést těsně za „modprobe hostap_pci“ v souboru /etc/rc.d/rc.inet1. Příklad nastavení je tady:

iwconfig wlan0 essid "moje-sit" #essid site
sleep 1
iwconfig wlan0 mode managed #managed mod
sleep 1
iwconfig wlan0 rate 2Mbit fixed #rychlost natvrdo
sleep 3

Více informací lze nalézt např. ve fóru CZFree.

V tomto okamžiku by měl fungovat internet jak na routeru, tak i na počítačích v síti. Pokud tomu tak není, budeme postupovat podle následujících kro­ků:

Na routeru:

1) máme IP adresu wlan0?
Pokud má router statickou IP, zkontrolovat /etc/rc.d/rc.inet1, zda tam není překlep. Pokud má IP přes DHCP, zkontrolovat, zda se opravdu ptá DHCP serveru, viz tentýž soubor.

2) ping brána
Je v souboru /etc/resolv.conf nastavená správná IP? Pokud ji router získává z DHCP serveru, tak by tatáž IP měla být v /etc/dhcpc/dhcpcd-wlan0.info. Podívejte se do „man resolv.conf“.

3) ping DNS
Je ve výpisu programu route řádek podobný tomuto?

default 10.193.64.129 0.0.0.0 UG 1 0 0 wlan0

Uvedená IP adresa je adresa brány. Pokud ne, zkontrolujte /etc/rc.d/rc.inet1. Je tam proměnná, ve které by měla být zapsaná IP brány. V případě DHCP je IP brány v souboru /etc/dhcpc/dhcpcd-wlan0.info, ale DHCP klient by ji měl automaticky zapsat do routovací tabulky.

4) ping 81.31.5.5
Pokud nejde, IP adresa uvedená jako brána zřejmě není brána nebo provoz blokuje firewall.

5) ping www.root.cz
Pokud nejde, počítač na adrese DNS serveru zřejmě není schopen zodpovídat DNS dotazy. Možný je i špatně nastavený firewall.

6) links www.root.cz
Pokud nejde, nemáte mít náhodou nastavený proxy server? Nastavuje se v internetovém prohlížeči.

Na klientech:

1) ping vlastni_IP
Nastavení sítě, v ovládacích panelech.

2) ping IP_routeru_vnitrni
Funguje síťová infrastruktura? Huby, kabely? Funguje eth0 na routeru?

3) ping brána
Pokud nejde, je špatně nastavená brána ve Windows, nastavte ji na vnitřní adresu vašeho routeru (eth0). Možný je i problém s firewallem na routeru.

4) ping www.root.cz
Pokud nejde, není nastavená DNS ve Windows.

Pokud internet nejde ani teď, jděte se odreagovat do parku a pak to zkuste znovu.

bitcoin školení listopad 24

(pozn. red.: Bod N: Jste-li v CZFree, je vhodné si zjistit IP adresy strojů, které jsou „po cestě“ k internetu, pomocí pingu na ně pak snadno nahlédnete, kde je problém (tedy že není u vás :)) (traceroute kvůli dynamickému routování nelze při uhnilé síti použít –Johanka).

Užitečné odkazy:
www.czfree.net
www.rokaglass­.com/zstepanek
www.netfilter.org
www.root.cz :-)

Autor článku