Содержание

Настройка NAT

создаем папку для скриптов

sudo mkdir /etc/fire

там же делаем файлы списки

для тех, кому разрешаем полный доступ к проксе «c улицы»

sudo touch /etc/fire/white.lst

для тех, кому разрешаем доступ наружу по нату(если надо)

sudo touch /etc/fire/inet.lst

для тех, кто будет смотреть видео (хотя можно делать доступ всем и рулить паролями)

sudo touch /etc/fire/video.lst

создаем сам скрипт

sudo nano /etc/fire/firewall

изначально все для статического ИП

#!/bin/sh -e
#
# правила для фаерфола
# переменные

#IP для локальной сети
LOCALIP=192.168.0.0
#внутреняя сеть
LOCALNET=192.168.0.0/24
#IP внешней сети
REMOTEIP=85.172.67.100
#IP внешней сети при использовании DynDNS
#REMOTEIP=`head /root/ipcheck.dat -n 1`

#очищаем все
/sbin/iptables -F
/sbin/iptables -F -t nat

#защита 22 от брутфорса
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

# или запрещаем всем кроме локальной сети
#/sbin/iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 0/0 --dport 22 -j DROP


#разрешает весь локальный трафик
/sbin/iptables -A INPUT -i lo -j ACCEPT
#разрешаем пинг
/sbin/iptables -A INPUT -p icmp -s 0/0 -d 0/0 -j ACCEPT
#разрешаем ssh для настройки - 22
#/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#разрешаем https если веб отчеты на проксе - 443
#/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#разрешаем http если веб на проксе - 80
#/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#разрешаем vpn(pptp) - 1723
#/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

#для натирования и работы pptp
#echo 1 > /proc/sys/net/ipv4/ip_forward

# входящие на проксик c "белого листа"
for i in `cat /etc/fire/white.lst | grep "#" -v`;
     do /sbin/iptables -A INPUT -s $i -d $REMOTEIP -j ACCEPT; done;

# чтоб на проксе работало все(разрешает соединения начатые с прокси)
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# все остальное конекты к проксику c улицы дропаем (можем логировать)
#/sbin/iptables -A INPUT -s 0/0 -d $REMOTEIP -j LOG --log-prefix WHY
/sbin/iptables -A INPUT -s 0/0 -d $REMOTEIP -j DROP


# если у нас есть левые соединения например сетевая для vpn или ppoe
# например eth1 у нас левый интерфейс  то дропаем все что полезет
# c него в локальную сеть
#/sbin/iptables -A FORWARD -i eth1 -s 0/0 -d $LOCALNET -j DROP

#натирование всем в сети
#/sbin/iptables -t nat -A POSTROUTING -s $LOCALNET -d 0/0 -j SNAT --to-source $REMOTEIP
#варианты
#sudo iptables -t nat -I POSTROUTING -s 192.168.8.1 -j MASQUERADE
#sudo iptables -t nat -I POSTROUTING -s 192.168.8.0/255.255.255.0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o eth1 -s 192.168.8.0/255.255.255.0 -j MASQUERADE
#

#натирование по списку
#for i in `cat /etc/fire/inet.lst | grep "#" -v`;
#do
#        /sbin/iptables -t nat -A POSTROUTING -s $i -d 0/0 -j SNAT --to-source $REMOTEIP;
#done;


# видеонаблюдение по списку пример на одну машину
#for i in `cat /etc/fire/video.lst | grep "#" -v`;
#do
#        /sbin/iptables -t nat -A PREROUTING -p tcp -s $i -d $REMOTEIP --dport 80 -j DNAT --to 10.10.10.10:80;
#        /sbin/iptables -t nat -A PREROUTING -p tcp -s $i -d $REMOTEIP --dport 4550 -j DNAT --to 10.10.10.10:4550;
#        /sbin/iptables -t nat -A PREROUTING -p tcp -s $i -d $REMOTEIP --dport 5550 -j DNAT --to 10.10.10.10:5550;
#done;

#пробрасываем https если веб отчеты на другой машине - 443
#/sbin/iptables -t nat -A PREROUTING -p tcp -d $REMOTEIP --dport 443 -j DNAT --to 10.10.10.10:443;

права на запуск

sudo chmod +x /etc/fire/firewall

пример файла списка

# ip которые выходят в инет
# petr
192.168.0.15
# бухи
192.168.0.217
# сервер открывать только для обновления
#192.168.0.150

после изменения списков чтоб они принялись надо запустить скрипт

sudo /etc/fire/firewall

текущие соединения при этом не обрываются (если не удалили из списка)

для автозагрузки с постоянным ИП добавляем скрипт в /etc/rc.local

к примеру у меня этот файл выглядит сейчас так

#!/bin/sh -e
#
# rc.local
#

/etc/fire/firewall

exit 0

если ИП меняется то добавляем /etc/fire/firewall в /etc/ppp/ip-up.d/dyndns_update.sh

просмотр текущих правил делается следующими командами

sudo iptables -L -n
sudo iptables -t nat -L -n

Настройка клиентов

на клиенте надо выставить шлюз по умолчанию делается добавлением\правкой параметра gateway в файле /etc/network/interfaces

и после перезагрузки он будет применен, чтоб заработало без перезагрузки команда

sudo route add default gw 192.168.0.150

DNS сервер прописывается в /etc/resolv.conf

nameserver 192.168.0.150

Подсчет массок и подсетей

http://ispreview.ru/ipcalc.html http://ping.propheta.ru/index.php/ipcalc http://www.opennet.ru/ipcalc.shtml