URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 51574
[ Назад ]

Исходное сообщение
"Интернет через двух провайдеров"

Отправлено Vladimir , 14-Дек-04 15:37 
наша организация подключена в Инет через dsl модем, периодически - примерно два раза в месяц интернет отваливается на периоды в несколько часов. Встал вопрос о втором провайдере, но и от первого не хотим оказываться, как будет выглядеть вся схема работы: надо постоянно пинговать к примеру раз в 1-10 мин., и смотреть на резултаты пинга, по резуьтатам менять шлюз? Поделитесь - кто как работает по схеме в Интернет через двух провайдеров. Как организовать сквид? Как рабоатает почта при этой схеме?

Содержание

Сообщения в этом обсуждении
"Интернет через двух провайдеров"
Отправлено Eugene , 14-Дек-04 16:55 
У меня на двух провайдеров работает. Ниже показал свои настройки для всеобщей критики и советов.
Если у кого руки дошли написать скрипт, чтобы отключать провайдера из таблицы маршрутизации при его пропадании и включать при появлении - БУДУ ОЧЕНЬ БЛАГОДАРЕН.

У меня 1.X.X.1 - шлюз провайдера 1
1.X.X.2 - IF eth0 на провайдера 1
2.X.X.1 - шлюз провайдера 2
2.X.X.2 - IF eth4 на провайдера 2


Мой конфиг:
#!/bin/sh

#Добавить в /etc/iproute2/rt_tables строки примерно такого содержания:
#1      uplink_1
#2      uplink_2

#Задание правил маршрутизации IP по источнику для радоканала
ip rule add from 1.X.X.2 lookup 1;
ip route add 192.168.0.0/24 via 192.168.0.1 table 1;
ip route add 192.168.1.0/24 via 192.168.1.1 table 1;
ip route add 192.168.2.0/24 via 192.168.2.1 table 1;
ip route add 0/0 via 1.X.X.1 table 1;

#Задание правил маршрутизации IP по источнику для модемного соединения
ip rule add from 2.X.X.2 lookup 2;
ip route add 192.168.0.0/24 via 192.168.0.1 table 2;
ip route add 192.168.1.0/24 via 192.168.1.1 table 2;
ip route add 192.168.2.0/24 via 192.168.2.1 table 2;
ip route add 0/0 via 2.X.X.1 table 2;

# Добавление ip route по умолчанию с опцией equalize
ip route del default;
#ip route add default equalize nexthop via 1.X.X.1 dev eth0 nexthop via 2.X.X.1 dev eth4;
ip route add default equalize nexthop via 1.X.X.1 dev eth0 weight 2 nexthop via 2.X.X.1 dev eth4 weight 1;
#ip route add default equalize nexthop via 2.X.X.1 dev eth4 nexthop via 1.X.X.1 dev eth0;
ip route flush cache

Если есть NAT:
#!/bin/sh
# SEE FILE /etc/sysctl.conf
# net.ipv4.ip_forward = 1
# Then type sysctl -p
# Check /proc/sys/net/ipv4/ip_forward (set to 1)
# Check iptables -t nat -n -L
# Mail for USERS
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth0 -p tcp --dport 110 -j SNAT --to-source 1.X.X.2
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth0 -p udp --dport 110 -j SNAT --to-source 1.X.X.2
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth0 -p tcp --dport 25 -j SNAT --to-source 1.X.X.2
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth0 -p udp --dport 25 -j SNAT --to-source 1.X.X.2
# Mail for USERS_backup
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth4 -p tcp --dport 110 -j SNAT --to-source 2.X.X.2
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth4 -p udp --dport 110 -j SNAT --to-source 2.X.X.2
iptables -t nat -A POSTROUTING -d 0/0 -s 192.168.2.0/24 -o eth4 -p tcp --dport 25 -j SNAT --to-source 2.X.X.2



"Интернет через двух провайдеров"
Отправлено fantom , 17-Дек-04 11:36 
А что там писать, в скрипте-то?
#!/bin/sh
rezult=`ping -q -c 5 -I eth0 <gw1_ip> | grep '100%' | wc -l`
# Если через основной канал непингается, то rezul=1
if [ $rezult -eq 1 ]
then
  rezult=`route | grep default | grep eth0 | wc -l`
  # Если default указан на eth0, то меняем default и правила iptables
  if [ $rezult -eq 1 ]
   then
    route del default
    route add default gw <gw1_ip>
    <iptables for eth1>
  fi
else
# Если пингается то
rezult=`route | grep default | grep eth0 | wc -l`
# Если default указывает не на <gw0_ip> то меняем default и iptables
  if [ $rezult -eq 0 ]
   then
    route del default
    route add default gw <gw0_ip>
    <iptables for eth0>
  fi
fi


Вот пожалуй и весь скрипт :)