#первый провайдер
IP1=1.1.1.1
IF1=eth1
P1=1.1.1.2 # шлюз 1го провайдера
P1_NET=1.1.1.0/30
#второй провайдер
IP2=2.2.2.2
IF2=eth2
P2=2.2.2.2 # шлюз 2го провайдера
P2_NET=2.2.2.0/30
#локальная сеть
LOC_IP=192.168.0.1
LOC_NET=192.168.0.0/24
LOC_IF=eth0#очистка и удаление таблиц t1 и t2
ip route flush table t1
ip route flush table t2
ip rule delete table t1
ip rule delete table t2
#сбрасываем кэш маршрутизации
ip route flush cache
ip route add $LOC_NET dev $LOC_IF scope link table t1
ip route add $P2_NET dev $IF2 scope link table t1
ip route add $P1_NET dev $IF1 scope link src $IP1 table t1
ip route add 127.0.0.0/8 dev lo scope link table t1
ip route add default via $P1 table t1
ip rule add fwmark 1 table t1
ip rule add from $IP1 table t1
ip route add $LOC_NET dev $LOC_IF scope link table t2
ip route add $P1_NET dev $IF1 scope link table t2
ip route add $P2_NET dev $IF2 scope link src $IP2 table t2
ip route add 127.0.0.0/8 dev lo scope link table t2
ip route add default via $P2 table t2
ip rule add fwmark 2 table t2
ip rule add from $IP2 table t2
#отключаем статическую антиспуфинговую фильтрацию
sysctl net.ipv4.conf.all.rp_filter=0
#включаем форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward
# Делаем NAT
iptables -t nat -A POSTROUTING -o $IF1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $IF2 -j SNAT --to-source $IP2
# Маркируем пакеты в таблице mangle цепочки FORWARD
iptables -t mangle -A FORWARD -i $IF1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1
iptables -t mangle -A FORWARD -i $IF2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 2
# Восстанавливаем маркировку соединения
iptables -t mangle -A FORWARD -i $LOC_IF -m conntrack --ctstate RELATED,ESTABLISHED -j CONNMARK --restore-mark
# Пробрасываем порт на внутренний сервер
iptables -t nat -A PREROUTING --dst $IP1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.5:80
iptables -t nat -A PREROUTING --dst $IP2 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.5:80
iptables -A FORWARD -i $IF1 -o $LOC_IF -d 192.168.0.5 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $LOC_IF -o $IF1 -s 192.168.0.5 -p tcp -j ACCEPT
iptables -A FORWARD -i $IF2 -o $LOC_IF -d 192.168.0.5 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $LOC_IF -o $IF2 -s 192.168.0.5 -p tcp -j ACCEPT