#!/bin/sh IPTABLES="/sbin/iptables" ECHO="/bin/echo" # Zewnetrzny interfejs EXTDEV="ppp0" EXTIP="x.x.x.x" # Wewnetrzny interfejs INTDEV="eth0" # Wewnetrzny adres IP INTIP="192.168.0.1" # Maska sieci wewnetrznej INTNET="192.168.0.0/24" # Broadcast INTBROADCAST="192.168.0.255" # tu definiujejmy hosty ktorych adresy maskujemy NATED_HOSTS="komp0 komp1 komp2 komp3 \ 192.168.0.14 janek 192.168.0.16 192.168.0.17" case "$1" in start) # Startuje firewall. $ECHO -n "Odpalam firewall: " # Ladowanie Modolow #modprobe ip_tables #modprobe ip_conntrack #modprobe ip_conntrack_ftp # Raczej wymagane dla passive ftp #czyscimy lancuch $IPTABLES -F $IPTABLES -X $IPTABLES -Z $IPTABLES -N in_counter $IPTABLES -N out_counter $IPTABLES -N proxy_in_counter $IPTABLES -N proxy_out_counter # najpierw kierujemy caly liczony ruch przez nasze lancuchy # ruch wejsciowy ppp0 (inet > serwer) $IPTABLES -A FORWARD -i $EXTDEV -d ! $EXTIP -j in_counter # ruch wyjsciowy ppp0 (serwer > inet) $IPTABLES -A FORWARD -o $EXTDEV -d ! $EXTIP -j out_counter # Zapytania proxy (pc > proxy) $IPTABLES -A INPUT -i $INTDEV -p tcp -d $INTIP --dport 8080 -j proxy_out_counter # Odpowiedzi proxy (proxy > pc) $IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 8080 -j proxy_in_counter for HOST in $NATED_HOSTS; do $IPTABLES -A proxy_in_counter -d $HOST $IPTABLES -A proxy_out_counter -s $HOST $IPTABLES -A in_counter -d $HOST $IPTABLES -A out_counter -s $HOST done # Wlaczamy se maskarade # czyli: # pakiety z sieci wew. wychodza do internetu # tak jakby byly wyslane przez nasz gateway. $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j SNAT --to-source=$EXTIP # regolka dla MRTG - ten wpis musi być po maskaradzie for HOST in $NATED_HOSTS; do $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $HOST -j MASQUERADE done # Czyscimy lancuchy #$IPTABLES -F #$IPTABLES -X #$IPTABLES -Z # Polityki domyslne $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP #$IPTABLES -P MAC_check DROP #!!! ..... tu dalsz część firewall następuje