echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
# Объявление переменных
export IPT="iptables"
# localhost
export LO="lo"
LO_IP="127.0.0.1"
# Интерфейс который смотрит в интернет
export WAN=eth1
# Локальная сеть(института) 1 eth0
export LAN1=eth0
export LAN_IP_RANGE1=192.168.2.0/24
# Локальная сеть(бухгалтерия) 2 eth2
export LAN2=eth2
export LAN_IP_RANGE2=192.168.1.0/24
# openVPN сеть - через него идет интернет
export VPN=tun0
export VPN_IP_RANGE=10.10.10.0/24
# допольнительное оборудование скажем роутер
export IP_ROUTER="192.168.2.11"
# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i $LO -j ACCEPT
$IPT -A INPUT -i $LAN1 -j ACCEPT
$IPT -A INPUT -i $LAN2 -j ACCEPT
$IPT -A OUTPUT -o $LO -j ACCEPT
$IPT -A OUTPUT -o $LAN1 -j ACCEPT
$IPT -A OUTPUT -o $LAN2 -j ACCEPT
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Приводит к связыванию системных ресурсов, так что реальный обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
$IPT -A FORWARD -i $LAN2 -o $WAN -j ACCEPT
# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT
$IPT -A FORWARD -i $WAN -o $LAN2 -j REJECT
# Маскарадинг для openVPN сети чтобы весь трафик шел через впн сеть
$IPT -t nat -A POSTROUTING -o $WAN -s $VPN_IP_RANGE -j MASQUERADE
# Маскарадинг для бухгалтерии
#$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE2 -j MASQUERADE
# Маскарадинг для роутера
$IPT -t nat -A POSTROUTING -o $WAN -s $IP_ROUTER -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.20.11 -j MASQUERADE -o eth1
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Разрешаем dns серверу
$IPT -A INPUT -i $WAN -p udp --sport 53 -j ACCEPT
$IPT -A OUTPUT -i $WAN -p udp --sport 53 -j ACCEPT
# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT
# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
# Открытие порта udp 1194 для openVPN
$IPT -A INPUT -p tcp --dport 1194 -j ACCEPT
# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p all --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 80 -j ACCEPT
$IPT -A OUTPUT -p udp --sport 80 -j ACCEPT
# Открытие порта 25, 143 для smtp imap
$IPT -A INPUT -i $WAN -p all --dport 25 -j ACCEPT
$IPT -A OUTPUT -i $WAN -p all --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 25 -j ACCEPT
$IPT -A INPUT -i $WAN -p all --dport 143 -j ACCEPT
$IPT -A OUTPUT -i $WAN -p all --dport 143 -j ACCEPT
$IPT -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 143 -j ACCEPT
$IPT -A INPUT -i $WAN -p all --dport 110 -j ACCEPT
$IPT -A OUTPUT -i $WAN -p all --dport 110 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 110 -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -s $WAN -j ACCEPT
$IPT -A OUTPUT -p ALL -s $LAN1 -j ACCEPT
$IPT -A OUTPUT -p ALL -s $LAN2 -j ACCEPT
$IPT -A OUTPUT -p ALL -s $VPN -j ACCEPT
# Открытие портов для игровых серверов
#$IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
#$IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT
# **********************************************************************
# Вывод информации о состоянии
$IPT -L