# Всем скорость от 1 Мбит/c. Входящая и исходящая.
NUMBERS_ALL="192.168.3.12 192.168.3.10 192.168.3.123 192.168.1.180 192.168.1.178 192.168.1.177 192.168.1.186 192.168.2.100 192.168.3.247 192.168.3.245 192.168.3.242 192.168.3.100 192.168.1.162 192.168.1.190"
# Всем скорость от 1 Мбит/c до 8 Мбит/c. Входящая и исходящая.
NUMBERS_PRIV="192.168.2.232 192.168.3.114 192.168.2.101 192.168.3.200 192.168.3.253 192.168.3.201 192.168.3.223 192.168.1.179 192.168.3.244 192.168.3.246 192.168.2.211 192.168.3.78 192.168.1.161 192.168.2.135 192.168.3.79 192.168.1.166 192.168.3.76 192.168.2.82 192.168.1.173 192.168.2.81 192.168.2.65"
NUMBERS_TEST="192.168.1.151 192.168.3.249 192.168.3.230 192.168.2.29 192.168.3.250 192.168.2.163 192.168.2.250 192.168.2.123 192.168.3.243 192.168.3.3"
################ Подключаем все модулю и все запрещаем в фаирволе ###############
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
################# Маскарадинг в инет и локалку ###############################
iptables --table nat --append POSTROUTING --out-interface vlan3 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface vlan4 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface vlan5 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
############################## MAPPING PORTS XEN SERVER FROM INET #####################################
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -j DNAT --to-destination 192.168.3.79
iptables -A FORWARD -i eth1 -o vlan3 -d 192.168.3.79 -p tcp -m tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -i vlan3 -o eth1 -s 192.168.3.79 -p tcp -m tcp --sport 3389 -j ACCEPT
#######################################################################################################
################################ VPN SERVER #########################################################
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1723 -j DNAT --to-destination 192.168.3.223:1723
iptables -A FORWARD -i eth1 -o vlan3 -d 192.168.3.223 -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -i vlan3 -o eth1 -s 192.168.3.223 -p tcp -m tcp --sport 1723 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 47 -j DNAT --to-destination 192.168.3.223:47
iptables -A FORWARD -i eth1 -o vlan3 -d 192.168.3.223 -p tcp -m tcp --dport 47 -j ACCEPT
iptables -A FORWARD -i vlan3 -o eth1 -s 192.168.3.223 -p tcp -m tcp --sport 47 -j ACCEPT
#####################################################################################################
#Выравниваем MTU
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#############Firewall#############
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
#разрешаем локальный траффик для локальной сети
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I INPUT -p gre -j ACCEPT
iptables -A INPUT -i vlan3 -j ACCEPT
iptables -A OUTPUT -o vlan3 -j ACCEPT
iptables -A INPUT -i vlan4 -j ACCEPT
iptables -A OUTPUT -o vlan4 -j ACCEPT
iptables -A INPUT -i vlan5 -j ACCEPT
iptables -A OUTPUT -o vlan5 -j ACCEPT
#Разрешаем гулять всем подсетям
iptables -A FORWARD -i vlan4 -o vlan3 -j ACCEPT
iptables -A FORWARD -i vlan3 -o vlan4 -j ACCEPT
iptables -A FORWARD -i vlan4 -o vlan5 -j ACCEPT
iptables -A FORWARD -i vlan5 -o vlan4 -j ACCEPT
iptables -A FORWARD -i vlan3 -o vlan5 -j ACCEPT
iptables -A FORWARD -i vlan5 -o vlan3 -j ACCEPT
# ICMP разрешаем пинг с локальной сети провайдера до сервера
iptables -A INPUT -i $inet -p icmp -j ACCEPT
iptables -A OUTPUT -o $inet -p icmp -j ACCEPT
#Разрешаем ICMP пакеты для vlan3, vlan4 в интернет
iptables -A FORWARD -i $inet -o vlan3 -p icmp -j ACCEPT
iptables -A FORWARD -i vlan3 -o $inet -p icmp -j ACCEPT
iptables -A FORWARD -i $inet -o vlan4 -p icmp -j ACCEPT
iptables -A FORWARD -i vlan4 -o $inet -p icmp -j ACCEPT
iptables -A FORWARD -i $inet -o vlan5 -p icmp -j ACCEPT
iptables -A FORWARD -i vlan5 -o $inet -p icmp -j ACCEPT
# Разрешаем серверу http, https, ssh, ftp (открываем порты 80,443,21,22)
iptables -A INPUT -i $inet -p tcp --sport 465 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport 465 -j ACCEPT
#HTTP
iptables -A INPUT -i $inet -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $inet -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --sport 80 -j ACCEPT
# passive ftp
##########################################################
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT # ftp-сервер
iptables -A OUTPUT -p tcp -m tcp --sport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT # ftp-data для активного режима
iptables -A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 60000:60235 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 60000:60235 -j ACCEPT
###########################################################
# SSH
iptables -A INPUT -i $inet -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -i $inet -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -i $inet -p tcp --dport 3050 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --sport 3050 -j ACCEPT
#DNS
iptables -A INPUT -i $inet -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --sport 53 -j ACCEPT
iptables -A INPUT -i $inet -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --dport 53 -j ACCEPT
#DHCP
iptables -A INPUT -i $inet -p udp --dport 67 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --sport 67 -j ACCEPT
iptables -A INPUT -i $inet -p udp --sport 67 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --dport 67 -j ACCEPT
#############Шейпер#############
#Режем входящую
NUMBERS_VLAN="vlan3 vlan4 vlan5"
for number_vl in `echo $NUMBERS_VLAN`
do
echo $number_vl
tc qdisc del dev $number_vl root
tc qdisc add dev $number_vl root handle 1: htb
tc class add dev $number_vl parent 1: classid 1:1 htb rate 100Mbit
tc class add dev $number_vl parent 1:1 classid 1:100 htb rate 100Mbit ceil 100Mbit burst 15k
tc class add dev $number_vl parent 1:1 classid 1:90 htb rate 1Mbit ceil 8Mbit burst 15k
tc class add dev $number_vl parent 1:1 classid 1:80 htb rate 1Mbit ceil 3Mbit burst 15k
tc class add dev $number_vl parent 1:1 classid 1:70 htb rate 200Kbit ceil 3Mbit burst 15k
tc qdisc add dev $number_vl parent 1:100 handle 100: sfq perturb 10
tc qdisc add dev $number_vl parent 1:90 handle 90: sfq perturb 10
tc qdisc add dev $number_vl parent 1:80 handle 80: sfq perturb 10
tc qdisc add dev $number_vl parent 1:70 handle 70: sfq perturb 10
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 100 fw classid 1:100
tc filter add dev $number_vl parent 1:0 protocol ip prio 2 handle 90 fw classid 1:90
tc filter add dev $number_vl parent 1:0 protocol ip prio 3 handle 80 fw classid 1:80
tc filter add dev $number_vl parent 1:0 protocol ip prio 4 handle 70 fw classid 1:70
done
#Между подсетями на 100
iptables -t mangle -A FORWARD -i vlan3 -o vlan4 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan3 -o vlan5 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan4 -o vlan3 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan4 -o vlan5 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan5 -o vlan3 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i vlan5 -o vlan4 -j MARK --set-mark 100
###############################################################################
#PRIV
for number_priv in `echo $NUMBERS_PRIV`
do
iptables -t mangle -A FORWARD -s $number_priv -o $inet -j MARK --set-mark 90
iptables -t mangle -A FORWARD -i $inet -d $number_priv -j MARK --set-mark 90
iptables -A FORWARD -s $number_priv -o $inet -j ACCEPT
iptables -A FORWARD -i $inet -d $number_priv -j ACCEPT
done
#### ALL
for number_all in `echo $NUMBERS_ALL`
do
iptables -t mangle -A FORWARD -s $number_all -o $inet -j MARK --set-mark 80
iptables -t mangle -A FORWARD -i $inet -d $number_all -j MARK --set-mark 80
iptables -A FORWARD -s $number_all -o $inet -j ACCEPT
iptables -A FORWARD -i $inet -d $number_all -j ACCEPT
done
#############################################################################
#for number_test in `echo $NUMBERS_TEST`
#do
#iptables -t mangle -A FORWARD -s $number_test -o $inet -p udp -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 70
#iptables -t mangle -A FORWARD -i $inet -d $number_test -p udp -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 70
# iptables -t mangle -A FORWARD -s $number_test -o $inet -p tcp -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 70
# iptables -t mangle -A FORWARD -i $inet -d $number_test -p tcp -m multiport --dport 80,443,110,25,143,5190 -j MARK --set-mark 70
#
# iptables -A FORWARD -s $number_test -o $inet -p tcp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
# iptables -A FORWARD -i $inet -d $number_test -p tcp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
# iptables -A FORWARD -s $number_test -o $inet -p udp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
# iptables -A FORWARD -i $inet -d $number_test -p udp -m multiport --dport 80,443,110,25,143,5190 -j ACCEPT
#done
for number_test in `echo $NUMBERS_TEST`
do
iptables -t mangle -A FORWARD -s $number_test -o $inet -j MARK --set-mark 70
iptables -t mangle -A FORWARD -i $inet -d $number_test -j MARK --set-mark 70
iptables -A FORWARD -s $number_test -o $inet -j ACCEPT
iptables -A FORWARD -i $inet -d $number_test -j ACCEPT
done
#Режем исходящую
tc qdisc del dev $inet root
tc qdisc add dev $inet root handle 1: htb
tc class add dev $inet parent 1: classid 1:1 htb rate 100Mbit
tc class add dev $inet parent 1:1 classid 1:90 htb rate 1Mbit ceil 8Mbit burst 15k
tc class add dev $inet parent 1:1 classid 1:80 htb rate 1Mbit ceil 8Mbit burst 15k
tc class add dev $inet parent 1:1 classid 1:70 htb rate 1Mbit ceil 7Mbit burst 15k
tc qdisc add dev $inet parent 1:90 handle 90: sfq perturb 10
tc qdisc add dev $inet parent 1:80 handle 80: sfq perturb 10
tc qdisc add dev $inet parent 1:70 handle 70: sfq perturb 10
tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $inet parent 1:0 protocol ip prio 2 handle 80 fw classid 1:80
tc filter add dev $inet parent 1:0 protocol ip prio 3 handle 80 fw classid 1:70
sleep 1
/bin/sh /root/script/banned.sh