Недавно один мой товарищ расспрашивал меня о подробностях такой штуки как bonding в контексте Микротиков и я решил запилить для него статейку - ну, вдруг, еще кому-нибудь пригодится. Сразу скажу, что я приведу лишь один из вариантов использования этой зауми - резервирование канала связи, причем резервирование не доступа в Интернет, но канала между сегментами сети.
Информация рассчитана на слегка продвинутый уровень специалиста с небольшим опытом по микротикам.
Вводная такая: имеется два сегмента сети разнесенных между собой на значительное удаление. Связь между ними осуществляется через всякие VPN технологии поверх Интернет. В виду ненадежности одного из подключений (к Интернет) и отсутствия возможности сменить проводного провайдера, было принято решение о приобретении дополнительного канала в Сеть у оператора сотовой связи (3/4G) для уменьшения времени бессвязности между сегментами сети , что критично.
Для осуществления задуманного были приобретены два Mikrotik RB951G-2HnD и один USB модем.
Понятно, что один микротик устанавливается в одном сегменте сети, а другой в другом. Основной сегмент сети имеет хороший, надежный, скоростной канал в Интернет и наличествует публичный статический IP(для реализации схемы потребуется 2 IP адреса - второй запросили у провайдера), второй сегмент сети, как я уже написал - проводное какое-никакое подключение и подключение через ОСС, без публичных адресов.
Суть схемы в следующем. Между микротиками устанавливается связность посредством pptp (или l2tp, sstp) через разные каналы (провод, 3/4G), что регулируется маршрутизацией(как - будет в примерах настройки). Затем натягиваются туннели eoip (Ethernet over IP) и объединяются в bonding с приоритетом на проводной канал.
Новые из коробки микротики имеют ip 192.168.88.1/24, либо вы можете скачать Winbox - утилита для конфигурации микротиков под Windows. Linux пользователям можно пользоваться web-интерфейсом (он включен изначально), либо mac-telnet, либо Winbox, запуская из под wine (работает - проверено).
Для начала приведу пример настройки микротика, который будет в основном сегменте сети с надежным подключением.
Прописываем публичные адреса, полученные от провайдера:
/ip address add address=33.33.33.33/24 interface=ether1
/ip address add address=33.33.33.34/24 interface=ether1
IP адреса, как вы понимаете вымышленные. =)
Теперь маршрут по-умолчанию:
/ip route add dst-address=0/0 gateway=33.33.33.254
Готовим l2tp сервис(pptp или sstp аналогично):
/interface l2tp-server server set enabled=yes
/ppp secret add name=master password=master local-address=172.16.0.1 remote-address=172.16.0.2
/ppp secret add name=slave password=slave local-address=172.16.0.3 remote-address=172.16.0.4
Теперь подготовим eoip туннели:
/interface eoip add name=eoip_master local-address=172.16.0.1 remote-address=172.16.0.2 tunnel-id=1234
/interface eoip add name=eoip_slave local-address=172.16.0.3 remote-address=172.16.0.4 tunnel-id=1235
И объединяем их в bonding:
/interface bonding add name=bonding1 slaves=eoip_master,eoip_slave mode=active-backup primary=eoip_master link-monitoring=arp transmit-hash-policy=layer-3-and-4 mii-interval=300 arp-ip-targets=172.16.0.253
/ip address add address=172.16.0.254/30 interface=bonding1
И последние штрихи:
/interface bridge add name=bridge1
/interface bridge port add bridge=bridge1 interface=ether3
/interface bridge port add bridge=bridge1 interface=bonding1
В ether3 скоммутирован сегмент сети. В итоге получится, что всю эту связку можно будет представить как прямой провод между двумя коммутаторами. При желании можно сюда и VLAN завернуть или даже сделать все на уровне IP, но мне кажется Ethernet (посредством Ethernet over IP) очень удачно вписывается в такую схему.
На второй стороне все делается аналогично, за тем лишь исключением, что там два канала. Маршруты до 33.33.33.33 и 33.33.33.34 необходимо сконфигурировать через шлюзы этих самых каналов.
По условиям задачи, у нас есть статический IP на проводном канале (не важно публичный или приватный) и подключением через ОСС.
Я предполагаю, что у вас не возникло трудностей с подключением USB модема к микротику. После подключения, появляется в списке интерфейсов (/interface print) интерфейс ppp-client(name=ppp-out1) , которое необходимо включить, а в его настройках убрать получение Default gateway:
/interface ppp-client set dial-on-demand=no add-default-route=no
dial-on-demand - это режим подключения, установите его в NO иначе микротик будет ожидать трафика в сторону этого подключения перед тем как установить связь с вышкой, скажем так.
Далее разруливаете доступ к Публичным адресам "центра" через разные каналы.
Через проводное подключение:
/ip route add dst-address=33.33.33.33/32 gateway=192.168.10.254
Через ОСС:
/ip route add dst-address=33.33.33.34/32 gateway=ip.ip.ip.ip
ip.ip.ip.ip вы возьмете в статусе ppp-client подключения, после того как установится соединение с "вышкой", но можно сделать и так:
/ip route add dst-address=33.33.33.34/32 gateway=ppp-out1
После этого необходимо установить связность по l2tp между микротиками, поверх чего мы построим eoip:
/interface l2tp-client add connect-to=33.33.33.33 user=master password=master add-default-route=no name=l2tp-master
/interface l2tp-client add connect-to=33.33.33.34 user=slave password=slave add-default-route=no name=l2tp-slave
Все остальные настройки аналогичные(eoip туннели и bonding), за исключением адреса на bonding интерфейсе.
/ip address add address=172.16.0.253/30 interface=bonding1
И в настройках самого бондинга опция arp-ip-targets должна содержать - 172.16.0.254.
Ну и в настройках eoip тунннелей local и remote address поменять местами.
Как видите, ничего сложного. При пропадании связности по master каналу, трафик пойдет через slave. При хорошем 3/4G коннекте даже не заметите (при соизмеримости широты канала, разумеется).
P.S. На истину не претендую. Конфигурация простая, защиты никакой нет (шифрование отсутствует). И да, можно сделать лучше. И да, можно прикрутить балансировку трафика между каналами, что бы один из них не простаивал...
Надеюсь, информация будет полезна кому-нибудь.
Спасибо, что прочитали.