V následujícím textu se budu snažit popsat, jak jsem nastavil a připojil domácí
síť, kterou tvoří dva počítace s RH71CZ, na internet pomocí modemu. Postup je docela
přehledně, ale anglicky, na
http://www.csh.rit.edu/~mattw/proj/nf/.
Doporučuji si také přečíst slejdy z přednášek z akce
OpenWeekend, kde zazněl výklad Pavla Luptáka
o iptables a nat ve slovenštině.
Pokud někomu bude vyhovovat angličtina, tak mu poslouží
Iptables tutorial.
Mám doma dva počítače RH71CZ s 10Mb síťovými kartami a hubem na kterých jsem nastavil
síť podle článku
Using Red Hat Linux to connect two or more computers.
Zvolil jsem si nejmenší typ sítě a rozsah IP adres 192.168.1.0 až 192.168.1.128, protože
se mi to tak líbí a je to jeden z rozsahů, které jsou vyhrazeny pro lokální sítě.
Nastavení a jména obou počítačů najdete v následující tabulce.
Parametr | Hodnota | Komentář |
---|---|---|
Adresa sítě/Network Address | 192.168.1.0 | pro oba stroje stejná |
Všesměrová adresa/Broadcast Address | 192.168.1.255 | pro oba stroje stejná |
Maska sítě/Subnet Mask | 255.255.255.0 | pro oba stroje stejná |
Jméno 1. počítače/Host Name | jaja | jen pro tento stroj |
IP adresa 1. počítače | 192.168.1.1 | jen pro tento stroj |
Jméno 2. počítače/Host Name | paja | jen pro tento stroj |
IP adresa 2. počítače | 192.168.1.2 | jen pro tento stroj |
Implicitní brána 2. počítače/Gateway | 192.168.1.1 | jen pro tento stroj |
chkconfig --level 0123456 ipchains off service ipchains stop chkconfig --level 235 iptables on service iptables startPak napíšeme jako root
/sbin/iptables -L nebo (defaultně se bere filter) /sbin/iptables -L -t filter /sbin/iptables -L -t nat /sbin/iptables -L -t manglea měli bychom vidět výpis tabulek, které by měly být úplně prázdné, bez pravidel. Pravidla se samozřejmě dají doplnit a vytvořit tak z počítače třeba firewall v kombinaci s připojením lokální sítě.
#!/bin/sh IPTABLES=/sbin/iptables /sbin/depmod -a echo "1" > /proc/sys/net/ipv4/ip_dynaddr echo "1" > /proc/sys/net/ipv4/ip_forward #Turn NAT on. $IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADEpřidá jediné pravidlo do nat tabulky jménem POSTROUTING, které použije modul MASQUERADE pro všechna spojení jdoucí na ppp0 zařízení, což je modem. Pokud máme místo modemu další síťovou kartu, tak jednoduše místo ppp0 dáte jméno té karty. Třeba eth1 v případě, že lokální síť je na eth0, jako u mě doma.
Směrovací tabulka v jádru pro IP Adresát Brána Maska Přízn Metrik Odkaz Užt Rozhraní as-prg2.vol.cz * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default as-prg2.vol.cz 0.0.0.0 UG 0 0 0 ppp0a řádky s prvním a čtvrtým pravidlem byly doplněny automaticky programem Kppp a právě ty zajišťují směrování všeho mimo naši domácí síť na modem (ppp0).
Network | V mangle prerouting | V nat prerouting | V Routovaci rozhodnuti Ma paket moji IP? ANO ---> mangle NE input | | V | mangle filter Forward input | | forward lokalni filter proces | | | mangle | output | | | nat | output | | | filter | output | | +<-------------------------+ | V mangle Postrouting | nat Postrouting | V Network Network -----------+----------- | +-------+------+ | mangle | | PREROUTING | <- MARK REWRITE +-------+------+ | +-------+------+ | nat | | PREROUTING | <- DEST REWRITE +-------+------+ | +-------+------+ | ipchains | | FILTER | +-------+------+ | +-------+------+ | QOS | | INGRESS | <- controlled by tc +-------+------+ | packet is for +-------+------+ packet is for this address | INPUT | another address +--------------+ ROUTING +---------------+ | | + PRDB | | | +--------------+ | +-------+------+ | | filter | | | INPUT | | +-------+------+ | | | +-------+------+ | | Local | | | Process | | +-------+------+ | | | +-------+------+ | | OUTPUT | +-------+-------+ | ROUTING | | filter | +-------+------+ | FORWARD | | +-------+-------+ +-------+------+ | | mangle | | | OUTPUT | MARK REWRITE | +-------+------+ | | | +-------+------+ | | nat | | | OUTPUT | DEST REWRITE | +-------+------+ | | | +-------+------+ | | filter | | | OUTPUT | | +-------+------+ | | | +----------------+ +--------------------+ | | +--+-------+---+ | ipchains | | FILTER | +-------+------+ | +-------+------+ | nat | | POSTROUTING | SOURCE REWRITE +-------+------+