The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Балансировка трафика в Linux"
Отправлено auto_tips, 04-Дек-09 13:13 
Данная схема отслеживает новые соединения и равномерно распределяет их по каналам.

Допустим есть 4 канала в интернет:
   Linux Router           ISP
  |ppp0 10.0.0.1|-----|10.0.0.2|
  |ppp1 10.0.0.3|-----|10.0.0.3|
  |ppp2 10.0.0.5|-----|10.0.0.4|
  |ppp3 10.0.0.7|-----|10.0.0.5|

Добавляем в файл /etc/iproute2/rt_tables таблицы:

   108   sat2
   109   sat3
   110   sat4


Настраиваем маршруты (раскидываем трафик по таблицам в зависимости от nfmark):

   ip rule add prio 50 fwmark 1 table sat2
   ip rule add prio 51 fwmark 2 table sat3
   ip rule add prio 52 fwmark 3 table sat4

   ip route add default via 10.0.0.2 dev ppp0

   ip rule add prio 210 from 10.0.0.3 table sat2
   ip route add default via 10.0.0.4 dev ppp1 table sat2

   ip rule add prio 211 from 10.0.0.5 table sat3
   ip route add default via 10.0.0.6 dev ppp3 table sat3

   ip rule add prio 212 from 10.0.0.7 table sat4
   ip route add default via 10.0.0.8 dev ppp4 table sat4


Деление по таблицам осуществляется iptables:

   iptables -t mangle -N NEW_OUT_CONN

   # Выбираем новые сессии
   iptables -t mangle -A PREROUTING -s 10.0.0.0/16 -m state --state NEW,RELATED -j NEW_OUT_CONN

   # Восстанавливает значение nfmark из CONNMARK
   iptables -t mangle -A PREROUTING -s 10.0.0.0/16 -j CONNMARK --restore-mark

   iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 0

    # Каждый четвертый пакет
   iptables -t mangle -A NEW_OUT_CONN -m statistic --mode nth --every 4 -j RETURN
   iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 1

   # Каждый третий пакет
   iptables -t mangle -A NEW_OUT_CONN -m statistic --mode nth --every 3 -j RETURN  
   iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 2
  
   # Каждый второй пакет
   iptables -t mangle -A NEW_OUT_CONN -m statistic --mode nth --every 2 -j RETURN
   iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 3


Модуль CONNMARK отслеживает метки для всех пакетов сессии, это значит, что если пометить пакет в сессии, то все пакеты принадлежащие ей будут иметь эту же метку. --restore-mark копирует метку в метку пакета 'nfmark'. По которой пакет попадает в соответствующую таблицу, и подвергается маршрутизации.

-m statistic --mode nth --every N соответствует каждому N-нному пакету.


URL: http://litec.ru/page.php?id=11
Обсуждается: http://www.opennet.ru/tips/info/2236.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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