The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Iproute2 распределение нагрузки между двумя провайдерами."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Iproute2 распределение нагрузки между двумя провайдерами."  +/
Сообщение от serg_tv (ok) on 08-Авг-11, 13:51 
На шлюзе под управлением Debian 6.0 необоходимо настроить балансинг между двумя интернет-каналами посредством iproute2.

Имеем три сетевых интерфейса:
eth0 - локальная сеть IP сетевого интерфейса 192.168.1.1, локальная сеть 192.68.1.0/24.
eth1 - первый провайдер (provider1), подключение ADSL. Моджем настроен в режиме роутера, IP сетевого интерфейса 192.168.2.2, IP модема 192.168.2.1. Сеть провайдера 2.2.2.0.24.
eth2 - второй провайдер (provider2), подключение через Ethernet, IP 1.1.1.100, шлюз провайдера 1.1.1.254, сеть провайдера 1.1.1.0.24.

Соотвественно имеем, если default gateway указывает на 192.168.1.1 весь трафик идет через первого провайдера, если 1.1.1.254 то через второго. Сейчас основным каналдом является eth2 и настроен скрипт автоматического переключения на eth1 в сулчае падения с возвратом назад. Такая схема работает.

Но клиент хочет, чтобы когда работают оба канала трафик распределялся между двумя каналами (за исключением некоторых портов).

Добавил таблицы:
user@server:/#cat /etc/iproute2/rt_tables
1       intranet
2       provider1
3       provider2

Создал скрипт для добавления маршрутов:
/sbin/ip route flush table default
/sbin/ip route flush table provider2
/sbin/ip route flush table provider1

/sbin/ip rule add from 1.1.1.100 table provider2
/sbin/ip rule add from 192.168.2.2 table provider1

/sbin/ip route add 1.1.1.0/24 dev eth2 src 1.1.1.100 table provider2
/sbin/ip route add default via 1.1.1.254 table provider2
/sbin/ip route add 2.2.2.0/24 dev eth2 src 192.168.2.2 table provider1
/sbin/ip route add default via 192.168.2.1 table provider1

/sbin/ip route replace default scope global nexthop via 1.1.1.254 dev eth2 weight 2 nexthop via 192.168.2.1 dev eth1 weight 1

В iptables:
-A POSTROUTING -o eth2 -j SNAT -s 192.168.100.0/24 --to-source 1.1.1.100
-A POSTROUTING -o eth1 -j SNAT -s 192.168.100.0/24 --to-source 192.168.2.2

При применении такой конфигурации, схема начинает работать. Проверю трейсом на разные айпи, один идут через eth1 другие через eth2. Но периодически пинги к некоторым айпи пропадают. Воспроизводится ситуация так:
находим внешний IP, который идет через eth1, трейс идет, пинг идет. Делаем на шлюзе ip route flush cache и пробуем еще раз трейс и пинг, черезщ несколько таких действйи пинг паропадет, трейс тоже. Смотрю tcpdump -i eth2 на шлюзе и вижу на нем такие пакеты (для примера внешний айпи 8.8.8.8):

IP 192.168.2.2 > 8.8.8.8: ICMP echo request
IP 192.168.2.2 > 8.8.8.8: ICMP echo request

Тоесть пакеты с eth1 и исходящим IP 192.168.2.2 почему-то идут на eth2. Но идут они туда не всегда а периодически. Такое впечатление, что для них второй раз срабатывает маршрутизация scope global nexthop и их поэтмоу кидает на интерфейс eth2.

Хотя указано же, что ip rule add from 192.168.2.2 table provider1, все пакеты и источником 192.168.2.2 должны роутиться на 192.168.2.1.

Не могу понять по какой причине так происходит.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Iproute2 распределение нагрузки между двумя провайдерами."  +/
Сообщение от _dx (ok) on 09-Авг-11, 19:50 
Может поможет
http://habrahabr.ru/blogs/linux/100919/
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру