!!! POZOR !!! POZOR !!! POZOR !!! POZOR !!! POZOR !!! POZOR !!! POZOR !!!
Návod zcela přepracován, opraven 22.1.2007Snad 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ě.
1. Konfigurace IPCentrem celého řešení je počítač se dvěma síťovými kartami (eth0, eth1) a s nainstalovaným Ubuntu 6.06 nebo 6.10.
Tento počítač je síťovou kartou eth1 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. Konfiuraci 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
Výchozí brána: III.JJJ.KKK.LLL
DNS server: MMM.NNN.OOO.PPP
Druhá síťová karta tohoto počítače (eth0) může mý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í eth0 provedeme nastavení pro privátní síť, například takto:
IP adresa: 192.168.1.1
Maska: 255.255.255.0
Totoho nastavení dosáhneme zadáním příkazu
sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0
Na ostatních počítačích, které se prostřednictvím "serveru" s Ubuntu budou připojovat k internetu, provedeme nastavení takto:
IP adresa: 192.168.1.2 (na poslední pozici cokoliv 2-254)
Maska: 255.255.255.0 (stejná jako maska na rozhraní eth0 serveru)
Výchozí brána: 192.168.1.1 (ip adresa rozhraní eth0 serveru)
DNS server: MMM.NNN.OOO.PPP (stejný jako DNS server používaný serverem)
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 MMM.NNN.OOO.PPP
IP adresu nastavíte příkazem
sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
a výchozí bránu příkazem
sudo route add default gw 192.168.1.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.
2. Firewall, routování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í. FireHOL nainstalujeme zadáním příkazu
sudo apt-get install firehol
Konfigurace firewallu je uložeba 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 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 eth0 internal
protection strong 10/sec 10
policy drop
server ssh accept # povolime ssh pripojeni k serveru z vnitrni site
client all accept
interface eth1 external
protection strong 10/sec 10
policy drop
server ssh accept # povolime ssh pripojeni k serveru z vnejsi site
client all accept
router incoming inface eth1 outface eth0 # ktere sluzby uvnitr site budou pristupne zvenku, viz. Tipy na konci navodu
route dns accept
route smtp accept dst
route pop3s accept dst
route imaps accept dst
route ssh accept dst
route http accept dst
route https accept dst
route ftp accept dst
route rdp accept dst
router outgoing inface eth0 outface eth1 # ktere sluzby v internetu budou pristupne zevnitr site
masquerade # chceme provadet preklad adres
route dns accept
route smtp accept
route pop3 accept
route pop3s accept
route imap accept
route imaps accept
route http accept
route https accept
route ftp accept
route rdp accept
route icq accept
route jabber accept
route rsync 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 všechno. 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.
Tip: Pokud chcete uvnitr vasi site provozovat nejake servery dostupne z internetu, potrebujete pro tyto stroje verejne IP adresy (nebude se provadet maskarada) nebo je nutne na stavit presmerovani prislusnych portu na pozadovany stroj (stroje).
Tip: Lze kombinovat volby
src a
dst, tím lze docílit povolení spojení mezi předem určenou dvojicí strojů.
Tip: Lze uvést více povolených IP adres, pak se seznam adres uzavře do uvozovek.
Tip: Lze uvádět rozsahy IP adres ve tvaru IP_adresa/maska, např. 192.168.1.0/24 nebo 192.168.1.0/255.255.255.0