RSS
 

Настройка балансировки трафика в Linux

12 Апр

Допустим есть 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
iproute 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   # Выбираем новые сессии
iptables -t mangle -A PREROUTING -s 10.0.0.0/16 -j CONNMARK —restore-mark    # Восстанавливает значение nfmark из CONNMARKiptables -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-нному пакету.

 
Комментарии к записи Настройка балансировки трафика в Linux отключены

Рубрика: Centos, Debian

 

Comments are closed.