====== Firewall, router, gateway ======
{{.:ethernet.png}} Snad nejčastější otázka, která se zde ve fóru opakuje, je "Jak použít počítač s Ubuntu, připojený k internetu, pro sdílení připojení pro další počítače?". Možných řešení je mnoho, pokusím se nastínit jedno, velmi jednoduché, efektivní a podle mého názoru i bezpečné. Lze jej snadno použít i pro připojení a zabezpečení celé menší domácí nebo firemní počítačové sítě.
====== Konfigurace IP adres ======
Na výběr máte 3 metody:
===== Ubuntu metoda =====
V Ubuntu veškeré nastavení sítě lze provádět pomocí dvou souborů a to /etc/network/interfaces a již výše zmiňovaného /etc/resolv.conf, žádné další příkazy nejsou třeba akorát po editaci, je potřeba znovu načíst script který se o to vše postará a který se spouští po každém startu a tak editace těchto souborů vám zajistí správné nastavení i do budoucna, restart tohoto scriptu provedeme:
sudo /etc/init.d/networking restart #další volby jsou "start" a "stop"
Nastavení /etc/network/interfaces
* Statická adresa - stejné nastavení jako nahoře
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 10.0.0.2
gateway 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
* Dynamická adresa - to je adresa přidělená vaším serverem nebo poskytovatelem
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface - use DHCP to find our address
auto eth0
iface eth0 inet dhcp
===== Klasická metoda =====
Centrem celého řešení je počítač se dvěma síťovými kartami (eth0, eth1) a s nainstalovaným Ubuntu.
Tento počítač je síťovou kartou eth0 trvale připojen k internetu. Naprosto nehraje roli, jestli má toto rozhraní veřejnou nebo privátní adresu (za NAT), jestli je IP nastavena staticky nebo přes DHCP. Konfiguraci IP pro toto rozhraní stanovuje poskytovatel připojení k internetu. Rekněme, že se jedná o tyto hodnoty:\
IP adresa: AAA.BBB.CCC.DDD\
Maska: EEE.FFF.GGG.HHH nebo /ZZ\
Výchozí brána: III.JJJ.KKK.LLL\
DNS server: MMM.NNN.OOO.PPP
{{.:apt.png}} Pokud máte masku ve tvaru netmask EEE.FFF.GGG.HHH převeďte ji do tvaru prefix /ZZ programem, který [[nainstalujte]] z balíčku ''ipcalc''
ipcalc 255.255.255.0 | grep Netmask
kde pro hodnotu netmask 255.255.255.0 dostanete prefix 24 se kterou budeme dále pracovat:
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111.00000000
Druhá síťová karta tohoto počítače (eth1) může být připojena přímo kříženým kabelem k dalšímu počítači, nebo nekříženým kabelem k nějakému aktivnímu prvku (např. switch), ke kterému budou připojeny další počítače.
Na rozhraní eth1 provedeme nastavení pro privátní síť, například takto:\
IP adresa: 10.0.0.1\
Maska: 255.255.255.0 po převodu /24
Totoho nastavení dosáhneme zadáním příkazu
sudo ip address add 10.0.0.1/24 dev eth1
Na ostatních počítačích, které se prostřednictvím "serveru" s Ubuntu budou připojovat k internetu, provedeme nastavení takto:\
IP adresa: 10.0.0.2 (na poslední pozici cokoliv 2-254)\
Maska: 255.255.255.0 po převodu /24 (stejná jako maska na rozhraní eth1 serveru)\
Výchozí brána: 10.0.0.1 (ip adresa rozhraní eth1 serveru)\
DNS server: MMM.NNN.OOO.PPP (stejný jako DNS server používaný serverem)
{{http://www.volny.cz/lukas_svoboda/ubuntu/router.png}}
Na strojích s Windows XP tyto hodnoty zadáte v Local Area Connection -> Properties -> Internet Protocol (TCP/IP) -> Properties.\
Na strojich s Linuxem DNS server nastavte v souboru /etc/resolv.conf (adresu nastavte podle vaší potřeby)
nameserver 10.0.0.1
IP adresu a masku nastavíte příkazem
sudo ip address add 10.0.0.2/24 dev eth1
a výchozí bránu příkazem
sudo route add default gw 10.0.0.1
Pokud nyní zkusíte ping na adresu serveru, pakety by měly správně přicházet.
Vše lze výrazně zjednodušit nainstalováním a nastavením DHCP serveru na počítač s přímým připojením k internetu.
===== Alternativní metoda =====
Tato metoda je ideální, pokud moc nechcete dumat nad tím, proč je něco tak, jak je, ale chcete mít rychle internet na dvou PC...
Na následujícím příkladu je počítač, který má dvě síťové karty:
* eth0 je síťová karta **připojená k internetu**
* eth1 je síťová karta **připojená k domácí síti**
* 192.168.0.1 je IP adresa počítače, který zprostředkovává připojení k síti (pozor, mluvím o vnitřní adrese, vnější může být jakákoliv!)
* 255.255.255.0 po převodu /24 je maska podsítě ve vnitřní síti
Otevřeme terminál a zadáme následující příkazy:
sudo -s
ip address add 192.168.0.1/24 broadcast 192.168.0.255 dev eth1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
apt-get install dnsmasq ipmasq
/etc/init.d/dnsmasq restart
dpkg-reconfigure ipmasq # vyberte možnost Po nahození sítových rozhraní
nano /etc/sysctl.conf # doplňte řádek net.ipv4.ip_forward = 1
/etc/init.d/networking restart
exit
Na druhém počítači pak nastavíme:
* IP: 192.168.0.2
* Maska podsítě: 255.255.255.0 po převodu /24
* Brána: 192.168.0.1
* DNS: Podle providera různé. Doporučuji DNS zjistit na připojeném počítači a to samé zadat do druhého
====== Firewall a routování ======
{{.:settings.png}} V Ubuntu je k dispozici celá řada nástrojů pro konfiguraci iptables. Po vyzkoušení řady z nich jsem si vybral FireHOL. Nemá (nebo má?) sice pěkné grafické klikací rozhraní jako třeba Firestarter, zato razí zásadu, která se mi nesmírně líbí: Jednoduché věci se dají dělat jednoduše, zároveň ale není nijak znemožněno nebo znepříjemněno nastavování složitějších konstrukcí.
{{.:apt.png}} [[Instalace programů|Nainstalujte]] balík ''firehol''.
Konfigurace firewallu je uložena v souboru /etc/firehol/firehol.conf, jako příklad uvádím stav s povolenými pouze základními službami pro odchozí spojení (http, https, ftp, dns, ssh, icq, [[Jabber|jabber]] apod.). Serverové služby jsou zakázané. Další nastavení najdete na domovské stránce FireHOLu: http://firehol.sourceforge.net/
V posledních řádcích je definované směrování z internetu do privátní sítě.
#
# $Id: client-all.conf,v 1.2 2002/12/31 15:44:34 ktsaou Exp $
#
# This configuration file will allow all requests originating from the
# local machine to be send through all network interfaces.
#
# No requests are allowed to come from the network. The host will be
# completely stealthed! It will not respond to anything, and it will
# not be pingable, although it will be able to originate anything
# (even pings to other hosts).
#
version 5
# Accept all client traffic on any interface
# interface any world
# client all accept
DEFAULT_CLIENT_PORTS="1024:65535"
server_icq_ports="tcp/5190"
client_icq_ports="default"
interface eth1 internal
protection strong 10/sec 10
policy drop
server dns accept
server netbios_ns accept
server netbios_dgm accept
server netbios_ssn accept
server samba accept
server squid accept
server icmp accept
server ping accept
client all accept
interface eth0 external
protection strong 10/sec 10
policy drop
server icmp accept
server ping accept
server ssh accept
client dns accept
client icmp accept
client ping accept
client telnet accept
client http accept
client https accept
client ftp accept
client ntp accept
client ssh accept
client icq accept
client jabber accept
client webcache accept
router internal2external inface eth1 outface eth0
masquerade
route all accept
Firewall aktivujete úpravou souboru /etc/default/firehol (START_FIREHOL=NO změňte na START_FIREHOL=YES)
a zadáním
sudo firehol restart
Nyní můžete na všech počítačích přistupovat na internet, v rámci privátní sítě můžete sdílet soubory, adresáře a tiskárny. Firehol se automaticky spouští s každým startem počítače.
V případě zájmu o FireHOL rád blíže vysvětlím jeho funkci a jednotlivé položky v konfiguračním souboru.
====== Zdroje dalších informací ======
* http://cs.wikipedia.org/wiki/IP_adresa Pokud nerozumíte slovu ipadresa tak článek pro vás
* http://www.root.cz/serialy/vse-o-iptables/ Seriál o iptables na root.cz
* http://deja-vix.sk/sysadmin/firewall.html Vynikající návod ve slovenštině pro Debian (použitelné i pro Ubuntu)
* http://www.debianhelp.co.uk/network.htm V angličtině ale stručný a jasný
{{page>úpravy/grafika}}
{{page>úpravy/konvence}}