пятница, 30 марта 2012 г.

Простая балансировка между двумя провайдерами

Простая балансировка между двумя провайдерами
Допустим есть два провайдера, оба канала приходят в один микротик.
Необходимо сделать балансировку нагрузки на оба канала.
Ширина канала установленная провайдерами может отличаться,
поэтому может иметь смысл делить нагрузку в зависимости от скорости.
первый случай. У нас есть три физических интерфейса в два из которых заходит провайдер, один смотрит во внутреннюю сеть.
Провайдер 1 (пров1) дает нам динамический IP-адрес, пров2 дает статический.

[admin@MikroTik] > /interface print
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE MTU
0 R prov1 ether 1500
1 R prov2 ether 1500
2 R local ether 1500

Настроим получение динамического адреса:

[admin@MikroTik] > ip dhcp-client add interface=prov1

[admin@MikroTik] > ip dhcp-client enable
numbers: 0


[admin@MikroTik] > ip dhcp-client print
Flags: X - disabled, I - invalid
# INTERFACE USE ADD STATUS ADDRESS
0 prov1 yes yes bound 192.168.136.136/24

Адрес от второго провайдера вводим вручную:

[admin@MikroTik] > ip address add address=10.10.100.10/16 interface=prov2

И внутренний адрес:

[admin@MikroTik] > ip address add address=192.168.0.1/24 interface=local

Теперь настроим маршрутизацию.
Удалим все старые маршруты по умолчанию
[admin@MikroTik] > ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADC 10.10.0.0/16 10.10.100.10 prov2 0
1 ADC 192.168.0.0/24 192.168.0.1 local 0
2 ADC 192.168.136.0/24 192.168.136.136 prov1 0

У нас их и нет, т.к. в настройках DHCP клиента мы не поставили чек Add Default Route
Т.к в данном случае на все-равно какие пакеты куда идут, главное чтобы уходили) Просто добавим несколько gateway для маршрута по умолчанию

[admin@MikroTik] > ip route add dst-address=0.0.0.0/0 gateway=192.168.136.254,10.10.0.254

[admin@MikroTik] > ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 A S 0.0.0.0/0 192.168.136.254... 1
10.10.0.254 rea...
1 ADC 10.10.0.0/16 10.10.100.10 prov2 0
2 ADC 192.168.0.0/24 192.168.0.1 local 0
3 ADC 192.168.136.0/24 192.168.136.136 prov1 0

Так это выглядит в winbox



Пакеты будут идти как на первый так и на второй шлюз.
Например может быть так что первый провайдер предоставляет больший канал, поэтому большую часть трафика нужно посылать через него.
Поэтому маршрут по умолчанию будет другого вида:
[admin@MikroTik] > ip route add dst-address=0.0.0.0/0 gateway=192.168.136.254, 192.168.136.254, 10.10.0.254

Из трех пакетов два пойдут на 192.168.136.254, можно так поделить соотношение и 80\20 и 60\40.

Второй случай, у вас есть внутренние ресурсы, которые доступны извне. Я об этом писал уже здесь.
Понятно что обращение к ним будет скорее всего через второго провайдера который дал статический адрес.
Настраивается это также как и в том самом посте.
Сначала сделаем проброс портов, пусть у нас будет почтовый сервер SMTP с адресом 192.168.0.10

[admin@MikroTik] > ip firewall nat add chain=dstnat dst-address=10.10.100.10 protocol=tcp dst-port=25 action
=dst-nat to-addresses=192.168.0.10 to-ports=25


Теперь настроим mangle, чтобы пакеты маркировались
Маркировка пакетов идущих с почтового сервера

[admin@MikroTik] > ip firewall mangle add chain=prerouting src-address=192.168.0.10 protocol=tcp src-port=25 action=mark-routing new-routing-mark=inprov2

Вносим изменения в таблицу маршрутизации, чтобы все промаркированные пакеты шли через провайдера 2

[admin@MikroTik] > ip route add gateway=10.10.0.254 routing-mark=inprov2

В случае с почтовым сервером это почти обязательно делать, т.к. на той стороне почтовик может зарезать все пакеты, подумав "отправил по одному адресу, а валятся совсем с другого".

Комментариев нет:

Отправить комментарий