Hlava Tady je Ozzyzlakovo
novinky | úvod | o mně | trocha humoru | fotoalbum | software | konfigurace v Linuxu | poslat email | trocha poezie | CZFree.Net | PGP klíč | TCP/IP tools | škola | FZ6 Fazer | Daytona 675 | YZF-R6 | GSX-R 1000 | no a co na závěr ?
DVB-T soubor pro Prahu
Vypalovani pod linuxem
Postfix konfigurace
IBM ThingPad 570 E a linux
IP Masquarading iptables
IP Masquarading ipchains
IP Masquarading ipfwadm
Sendmail konfigurace
PPP daemon a konfigurace na pevné lince
PPP daemon jako dial-up server
Fetchmail, stahování pošty pomocí pop3 na Linux
Vgetty aneb voice pod linuxem
Network Ups Tools upsky pod linuxem howto
Sensors aneb měření teploty




Zprovoznění NATu pod Linuxem (iptables)

* Návod je psán pro distribuci Debian verze 3.0. V jiných distribucích může být poněkud jiné pojmenování souborů.
* Návod popisuje konfiguraci ip masquaradingu (NATu) pro počítač který dělá rozhraní mezi Internetem a lokální sítí postavené na privátních IP adresách:
10.0.0.0/255.0.0.0
172.16.0.0/255.240.0.0
192.168.0.0/255.255.0.0
* Popis si klade za cíl čistě zprovoznění masquaradingu a týká se varianty iptables (jádra 2.4.xx).
* Více informací viz man iptables nebo na (www.iptables.org).

Předpoklady

  • Mít přeložené jádro s podporou iptables, zapnuty filtering a full NAT + Masquarading
  • Zkonfigurovat skripty

Konfigurace:

Startovací skripty jsou u debianu v /etc/init.d/


/etc/init.d/iptables
Soubor do kterého lze přidat obsluhu pro filtry a NAT/Masquarading.

#! /bin/sh

# Script to control packet filtering.
# If no rules, do nothing.

     [ -f /etc/iptables.rules ] || exit 0

     case "$1" in
         start)
             echo -n "Turning on packet filtering: "
             for F in /proc/sys/net/ipv4/conf/*/rp_filter; do
                echo 1 > $F
             done
             grep -v '#' /etc/iptables.rules | while read J 
                do /sbin/iptables $J 
             done
             echo 1 > /proc/sys/net/ipv4/ip_forward                
             echo "done."                              
             ;;      
         stop)
             echo -n "Turning off packet filtering: "
             echo 0 > /proc/sys/net/ipv4/ip_forward 
             /sbin/iptables -X                     
             /sbin/iptables -F
             /sbin/iptables -F -t nat
             /sbin/iptables -P INPUT ACCEPT
             /sbin/iptables -P OUTPUT ACCEPT
             /sbin/iptables -P FORWARD ACCEPT
             echo "done."                        
             ;;      
         *)
             echo "Usage: /etc/init.d/iptables {start|stop}"
             exit 1                                         
             ;;    
     esac
         
     exit 0


/etc/iptables.rules
A zde jsou vlastní pravidla. Je vidět že pro vnitřní síť je použito IP adres 10.0.0.0/255.255.255.0 a pro vnější jakakoli. Takto nakonfigurované spustí čistě Masquarading na eth0, v pripade dialup pripojeni staci zmenit na -o ppp0.

-F
-X
-P FORWARD ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Nyní zde uvedu složitější příklad kdy na routeru běží zároveň serverové služby které musí být přístupné zvenku (DNS, WWW, SMTP) a veškerá další komunikace dovnitř je blokována kromě odpovědí na požadavky zevnitř. Do internetu se 'dívá' rozhraní Eth0 s ipadresou 62.44.1.16 a uvnitř jsou použity adresy 192.168.1.0/255.255.255.0.
-F
-X
-P FORWARD ACCEPT
-P INPUT DROP
### INPUT je standardne zakázán
-P OUTPUT ACCEPT
-A INPUT -d 0.0.0.0/0 -i lo -j ACCEPT
### povolen jakýkoli provoz na loopback
-A INPUT -s 192.168.1.0/24 -d 0.0.0.0/0 -i eth1 -j ACCEPT
### povoleny jakekoli pakety z vnitrni site
-A INPUT -p icmp -d 62.44.1.16/32 -i eth0 -j ACCEPT
### povolen prichod ICMP paketu zvenku
-A INPUT -p udp -d 62.44.1.16/32 -i eth0 -j ACCEPT
### povolen prichod UDP paketu zvenku (kuli fungovani DNS pro vnitrni pocitace)
-A INPUT -p tcp -d 62.44.1.16/32 -i eth0 ! --syn -j ACCEPT
### povolen prichodjakychkoli TCP paketu ktere nenavazuji spojeni (odpovedi)
-A INPUT -p tcp ftp-data -d 62.44.1.16/32 -i eth0 -j ACCEPT
### povolen prichod paketu z portu ftpdata na jakykoli port (kvuli akt ftp)
-A INPUT -p tcp -d 62.44.1.16/32 --destination-port 25 -i eth0 -j ACCEPT
### povoleno navazovani spojeni zvenku (fungovani posty) na port 25
-A INPUT -p tcp -d 62.44.1.16/32 --destination-port 43 -i eth0 -j ACCEPT
### povoleno navazovani spojeni zvenku (fungovani DNS) na port 53
-A INPUT -p tcp -d 62.44.1.16/32 --destination-port 80 -i eth0 -j ACCEPT
### povoleno navazovani spojeni zvenku (fungovani www) na port 80
-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
### pakety z vnitrni site masquaraduj
-A INPUT -s ! 192.168.1.0/24 -d 0.0.0.0/0 -i eth1 -j DENY
-A INPUT -s 192.168.1.0/24 -d 0.0.0.0/0 -i eth0 -j DENY  
### antispoofingova pravidla, zevnitr smi prijit jen paket pochazejici z rozsahu
### vnitrni site zvenku jakykoli krome adres vnitrni site
Soubor musí končit právě jedním prázdným řádkem !
/etc/modules
Do souboru je třeba přidat loadování modulu pro fungování FTP a dalších služeb přes IPmasq, napr:

ip_nat_ftp

A dalsich dle potreby.

Pak už jen stačí zajistit startování skriptu například takto:

ln -s /etc/init.d/iptables /etc/rc2.d/S20iptables
nebo pro Debian
update-rc.d iptables defaults 75




martin@lipinsky.cz 20030127

bla
fotka (c) Martin Lipinský 1997 - 2024