fw:
Код:
#!/bin/bash
###############################
#Описываем переменные##########
###############################
ip_lan="192.168.2.50"
ip_interra="1.1.1.1"
ip_kgok="2.2.2.2"
if_lan="eth2"
if_interra="eth0"
if_kgok="eth1"
net_lan="192.168.2.0/24"
net_interra="1.1.1.0/24"
net_kgok="2.2.2.192/26"
gw_interra="1.1.1.2"
gw_kgok="2.2.2.2.193"
#**********************************************
#Включение правил маршрутизации****************
#**********************************************
ip route flush table T1 #Обнуляем первую таблицу
ip route flush table T2 #Обнуляем вторую таблицу
ip route add $net_interra dev $if_interra src $ip_interra table T1 #закидываем в первую таблицу инфу о сети первого провайдера
ip route add $net_lan dev $if_lan table T1 #закидываем в первую таблицу инфу о том, что у нас существует локальная сеть
ip route add $net_kgok dev $if_kgok table T1 #закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть
ip route add 127.0.0.0/8 dev lo table T1 #закидываем в первую таблицу инфу о существовании лупбека
ip route add default via $gw_interra table T1 #закидываем в первую таблицу дефолтный гейт на первого провайдера
ip route add $net_kgok dev $if_kgok src $ip_kgok table T2 #закидываем в первую таблицу инфу о сети второго провайдера
ip route add $net_lan dev $if_lan table T2 #закидываем в первую таблицу инфу о том, что у нас существует локальная сеть
ip route add $net_interra dev $if_interra table T2 #закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть
ip route add 127.0.0.0/8 dev lo table T2 #закидываем в первую таблицу инфу о существовании лупбека
ip route add default via $gw_kgok table T2 #закидываем в первую таблицу дефолтный гейт на первого провайдера
ip rule delete from $ip_interra table T1 #удаляем наши таблицы, если они присутсвуют в текущей конфигурации
ip rule delete from $ip_kgok table T2 #аналогично для второй.
ip rule del fwmark 0xa
ip rule del fwmark 0xb
ip rule add from $ip_interra table T1 #все пакеты от ip адреса первого провайдера маршрутизировать по таблице T1
ip rule add from $ip_kgok table T2 #все пакеты от ip адреса второго провайдера маршрутизировать по таблице T2
ip rule add fwmark 10 table T1 #все пакеты, которые имеют метку 10 маршрутизировать по таблице T1
ip rule add fwmark 11 table T2 #все пакеты, которые имеют метку 11 маршрутизировать по таблицу T2
ip route flush cache #ну и на последок очистить кеш
ip route del default #Удаляем дефолтный шлюз если стоял
ip route add default via $gw_interra #заполняем основную таблицу адресов. дефолтный гейт на interra
#ip route add default via $gw_kgok #заполняем основную таблицу адресов. дефолтный гейт на kgok
#**********************************************************
# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых - запрещен
# Если мы подстрахуемся, хуже не бкдет
echo "1" > /proc/sys/net/ipv4/ip_forward
# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -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 -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Доверяем локальной сети
iptables -t filter -A INPUT -s $net_lan -d $ip_lan -j ACCEPT
iptables -t filter -A OUTPUT -d $net_lan -s $ip_lan -j ACCEPT
#Разрешаем серверу ходить куды угодно
iptables -t filter -A INPUT -m state --state ESTABLISHED -i $if_interra -j ACCEPT
iptables -t filter -A OUTPUT -m state --state NEW,ESTABLISHED -o $if_interra -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED -i $if_kgok -j ACCEPT
iptables -t filter -A OUTPUT -m state --state NEW,ESTABLISHED -o $if_kgok -j ACCEPT
#Разрешаем vpn
iptables -t filter -A INPUT -p gre -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 1723 -j ACCEPT
#Пробрасываем порт 1494 citrix от st2 наружу для офиса
iptables -t nat -A PREROUTING -p tcp -s xx.xx.xx.xx --dport 1494 -j DNAT --to-destination 192.168.2.8
iptables -t filter -A FORWARD -p tcp -s 192.168.2.8 --sport 1494 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -d 192.168.2.8 --dport 1494 -j ACCEPT
#маркируем пакеты (ходим через ИНТЕРРУ)
iptables -t mangle -A PREROUTING -s $net_lan -j MARK --set-mark 10
#маркируем пакеты (ходим через КГОК)
#iptables -t mangle -A PREROUTING -s $net_lan -j MARK --set-mark 11
#Правила SNAT, если пакет с меткой 10 - идем через ИНТЕРРУ, с меткой 11 - идем через КГОК
iptables -t nat -A POSTROUTING -m mark --mark 10 -p ALL -s $net_lan -o $if_interra -j SNAT --to-source $ip_interra
iptables -t nat -A POSTROUTING -m mark --mark 11 -p ALL -s $net_lan -o $if_kgok -j SNAT --to-source $ip_kgok
#Льготные ресурсы интерры всегда, через интерру (метим 10)
iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.76 -j MARK --set-mark 10 #radio.kch.ru
iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.79 -j MARK --set-mark 10 #war.kch.ru
iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.78 -j MARK --set-mark 10 #files.kch.ru
iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.71 -j MARK --set-mark 10 #irc.kch.ru
iptables -t mangle -A PREROUTING -s $net_lan -d 84.254.219.72 -j MARK --set-mark 10 #kino.kch.ru