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
|