Недавно обзавёлся задачей по балансировке трафика между несколькими usb-модемами. В итоге родилось [решение][1] коим и хочу поделиться с Хабрасообществом.
На момент написания статьи это [balancing\_v0.5.2-alpha][2].
Изначально задача формулировалась примерно так:
> Есть пучёк armhf девайсов c Ubuntu Trusty на борту.
> У них есть несколько подключений к интернету. Обычно это основное проводное подключение (eth0) и несколько HiLink usb-модемов Huawei E303 (eth1-eth5). Через каждое из этих подключений нужно поднять openvpn-клиентов к единственному серверу и через них уже балансировать трафик.
Всё бы ничего, но у этих модемов нет возможности изменения подсети и шлюза (гвоздями прибиты 192.168.1.1/24), причём прошивок с реализацией этой возможности тоже не нашлось (в отличии, например от E3272 для которого есть прошивки с таким функционалом). Кроме того даже если бы и нашлись, то vpn-подключения всё равно были бы в одной подсети и с одинаковым шлюзом. Т.е. без продвинутой маршрутизации (policy routing) не обойтись.
Ах, да, ещё надо мониторить каждое подключение и отключать/включать, если порвалось/возобновилось. Т.е. маршрутизацией нужно управлять динамически.
[Читать дальше →][3]
[1]:
https://github.com/vmspike/balancing
[2]:
https://github.com/vmspike/balancing/archive/v0.5.2-alpha.tar.gz
[3]:
https://habrahabr.ru/post/303056/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut