Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
firewall_router_gateway [2012/07/20 16:54]
Ubuntu
firewall_router_gateway [2019/02/25 18:21] (aktuální)
Řádek 1: Řádek 1:
 +====== 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:
 +<​code>​
 +sudo /​etc/​init.d/​networking restart ​   #další volby jsou "​start"​ a "​stop"​
 +</​code>​
 +Nastavení /​etc/​network/​interfaces
 +  * Statická adresa - stejné nastavení jako nahoře
 +<​code>​
 +# 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
 +</​code>​
 +
 +  * Dynamická adresa - to je adresa přidělená vaším serverem nebo poskytovatelem
 +<​code>​
 +# 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
 +</​code>​
 +
 +===== 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''​
 +
 +<​code>​
 +ipcalc 255.255.255.0 | grep Netmask
 +</​code>​
 +kde pro hodnotu netmask 255.255.255.0 dostanete prefix 24 se kterou budeme dále pracovat:
 +<​code>​
 +Netmask: ​  ​255.255.255.0 = 24   ​11111111.11111111.11111111.00000000
 +</​code>​
 +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
 +<​code>​
 + sudo ip address add 10.0.0.1/24 dev eth1
 +</​code>​
 +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)
 +
 +<​code>​
 +nameserver 10.0.0.1
 +</​code>​
 +IP adresu a masku nastavíte příkazem
 +
 +<​code>​
 +sudo ip address add 10.0.0.2/24 dev eth1
 +</​code>​
 +a výchozí bránu příkazem
 +
 +<​code>​
 +sudo route add default gw 10.0.0.1
 +</​code>​
 +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:
 +<​code>​
 +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 
 +</​code>​
 +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ě.
 +
 +<​code>​
 +#
 +# $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
 +</​code>​
 +Firewall aktivujete úpravou souboru /​etc/​default/​firehol (START_FIREHOL=NO změňte na START_FIREHOL=YES)
 +a zadáním
 +
 +<​code>​
 +sudo firehol restart
 +</​code>​
 +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}}