#!/bin/bash
IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
LOCAL_ETH=eth1
LOCAL_IP=192.168.1.1
LOCAL_NET=192.168.1.0/24
VPN_IP="10.10.0.1"
VPN_IP_RANGE="10.10.0.0/24"
VPN_IFACE="tun0"
GLOBAL_ETH_P1=eth0
GLOBAL_IP_P1=192.168.0.1
MARK_PRIM=10
GLOBAL_ETH_P2=tun0
GLOBAL_IP_P2=10.10.0.1
MARK_SEC=20
SRV11=192.168.1.1
SRV12=192.168.1.5
echo "
- Flushing existing iptables rules..."
$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -F -t raw
$IPTABLES -F -t mangle
$IPTABLES -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$MODPROBE ip_conntrack
$MODPROBE iptable_nat
echo "
- Setting up FORWARD chain..."
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#Так у нас получается, что пакеты приходящие на первого провайдера пропускаются только на первый айпишник сервера, второго — на второй.
$IPTABLES -A FORWARD -i $GLOBAL_ETH_P1 -d $SRV11 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i $GLOBAL_ETH_P2 -d $SRV12 -m state --state NEW -j ACCEPT
#Разрашаем весь исходящий трафик с нашего сервера, опять же это не совсем правильно.
$IPTABLES -A FORWARD -i $LOCAL_ETH -s $SRV11 -j ACCEPT
$IPTABLES -A FORWARD -i $LOCAL_ETH -s $SRV12 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $GLOBAL_ETH_P1 -d $GLOBAL_IP_P1 -j DNAT --to-destination $SRV11
$IPTABLES -t nat -A PREROUTING -i $GLOBAL_ETH_P2 -d $GLOBAL_IP_P2 -j DNAT --to-destination $SRV12
$IPTABLES -t mangle -A PREROUTING -i $LOCAL_ETH -s $SRV11 -j MARK --set-mark $MARK_PRIM
$IPTABLES -t mangle -A PREROUTING -i $LOCAL_ETH -s $SRV12 -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix " IS MARKED: "
$IPTABLES -t mangle -A PREROUTING -i $LOCAL_ETH -s $SRV12 -j MARK --set-mark $MARK_SEC