#!/bin/sh
#
#Машина в офисе
office=192.168.0.2

#Машина администратора
admin=192.168.0.3

#Адреса роутера
server0=192.168.0.1
#server1=10.15.1.2

# Интерфейс смотрящий на клиентов
iface_cli=eth1

# Интерфейс смотрящий во внешний мир
iface_world=ppp0

# Подсеть клиентов
net_cli=192.168.0.0/24

#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555
user_port2=5555

# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых - запрещен
# Если мы подстрахуемся, хуже не бкдет
echo "1" > /proc/sys/net/ipv4/ip_forward
# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

 
# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Разрешаем пингам ходить всюду и всегда
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

 
# Разрешаем всё на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT


# Разрешить серверу общаться со внешним миром
iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT

 
# DNS. Замечу, ДНС работает и по TCP и по UDP
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

 
# Разрешаем админу и машине в офисе доступ по SSH
#iptables -t filter -A INPUT -p tcp -s $office -d $server0 --dport 22 -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp -d $office -s $server0 --sport 22 -j ACCEPT
#iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 22 -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 22 -j ACCEPT

#Разрешаем все админу и офису :)
#Раскоментируйте то что надо
#Админу
#iptables -t filter -A INPUT -s $admin -j ACCEPT
#iptables -t filter -A FORWARD -s $admin -j ACCEPT
#iptables -t filter -A FORWARD -d $admin -j ACCEPT
#iptables -t filter -A OUTPUT -d $admin -j ACCEPT
#Офису
#iptables -t filter -A INPUT -s $office -j ACCEPT
#iptables -t filter -A FORWARD -s $office -j ACCEPT
#iptables -t filter -A FORWARD -d $office -j ACCEPT
#iptables -t filter -A OUTPUT -d $office -j ACCEPT


# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s $net_cli -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $net_cli -s $server0 --sport $conf_port -j ACCEPT
 
# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s $net_cli --sport $user_port2 -d $server0 --dport $user_port1 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d $net_cli --dport $user_port1 -s $server0 -j ACCEPT

#В моем примере еще используется прозрачный прокси сервер squid если он не нужен закоментируйте эти 2 строки
#Разрешаем всем локальный HTTP сервер
iptables -t filter -A INPUT -p tcp -s $net_cli -d $server0 --dport 80 -j ACCEPT                                
iptables -t filter -A OUTPUT -p tcp -d $net_cli -s $server0 --sport 80 -j ACCEPT


#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE


#Тоже относится к прокси серверу. Если не надо то закоментируйте. Если прокси использует другой порт то измените 3128 на него.
iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! $server0  --dport 80 -j REDIRECT --to-port 3128
