OpenWrt – TP-LINK Archer C6 – multi WAN

Преди седмица в непринуден разговор с приятели/колеги за пореден път обсъдихме темата при купуване на WIFI рутер за дома или офиса каква сума пари е най добре да се инвестира. Естествено изредихме разни марки, модели, вкарахме чувства, естестика, технически познания и поетапно стигнахме до сумата 300 лева защото всъщност гонехме съвсем естествени и съвременни ресурси от рода на гигабитови LAN/WAN портове, двубандов 2.4GHz-B/G/N и 5GHz-N/AC, VPN за връзка с друг офис l2tp, IPv6 6in4 tunnel свързаност, Failover – смяна на доставчика при падане на Интернет, Load Balance – обединяване на скоростите на два доставчика, гъвкава защитна стена филтрираща портове, адреси, мрежи и др. Аз явно се по запалих малко повече и изтърсих, че всичките тези неща ще ги “извадя” от рутер за 50~60 лева. Вече бях казал думите след като осъзнах в какъв капан съм се вкарал. Има една Българска поговорка “голям залък лапни, голяма дума не казвай” но не можех да си върна думите назад. Затова цяла седмица в свободното си време съм в проекта “Евтин рутер“. След дълго ровене в Интернет, безброй изчетени статий се спрях на TP-LINK Archer C6 защото го намерих за 64 лева който ще “префлашна” с операционната система OpenWrt която е напълно безплатна. От години ползвам dd-wrt за устройства на които пройзводителите са спрели да обновяват фърмуера им но той е твърде ограничен от към Failover, Load Balance. OpenWrt всъщност не е откритие за мен, преди години го ползвахме с Linksys WRT54G за сапунерка на която да вдигаме pptp client защото така ни беше мрежовата топология но нищо повече от това. С радост и надежда открих колко много се е развил проекта OpenWrt, колко модулен е станал, как е пораснала пакетната му система и колко много ръководства за конфигурации има в Интернет.

Покупка на TP-Link Archer C6

Как се конфигурира OpenWrt

Тъй като има много различни видове ситуации които водят до различни конфигурации, опитваики се да покрия изискванията за съвременен рутер, ще дам този линк към други мои статии за OpenWrt надявайки се да е по ясна картината как се работи със системата.

Всичко по темата за операционната система OpenWrt в този блог.

Но тук ще обърна специално внимание на ситуацията “един рутер – два доставчика на Интернет” (Load Balance/Failover) защото на практика това е може би най неразбрания и най зле конфигурирания сценарий при рутерите които трябва да поддържат две услуги на Интернет.

Защо два доставчика на Интернет

Това естествено по скоро е въпрос на явна нужда а не на личен избор. Има ситуации в които Интернета не трябва никога да спира, основно това важи най много за бизнеса който ползва най вече някакъв онлайн софтуер, бази данни, видеонаблюдение, стрийм услуги, контрол за достъп и много други подобни ситуации. В този случай много по добре е да ползвате два доставчика на Интернет с по евтини услуги и ресурс отколкото един с по голяма скорост както се опитва да ви убеди търговеца на Интернет компанията. Защото каквото и да е трасето на този доставчик от където и да преминава винаги има риск от физическо нарушаване, и вашата голяма скорост и двойните пари които плащате въобще няма да ви сгреят в тази ситуация. Доставчиците на Интернет трябва да се проучат колкото е възможно това за да е сигурно, че нямат нищо общо, трябва да са конкуренция, нямат общи трасета и Интернета който получават не е един и същ, макар в днешно време доставчиците на Интернет да ползват няколко транзитни фирми чрез протокола BGP то трасето до вас, така наречената “последна миля” е само едно. Точно там повярвайте ми е най слабото им място. Затова не може да разчитате на сладките приказки на търговците какви “оптики” имали а трябва да подпишете договора за най ниската скорост и след това да се обадите на комкуренцията им за да поръчате другата услуга ако искате Интернета ви никога да не спира 🙂

Какво е Failover

На първо място нека изясним за тези които не знаят какво всъщност е Failover. Това е ситуацията в която целия ви трафик върви през единия доставчик на Интернет и ако той падне, рутера ви автоматично ще ви превключи на втория доставчик на Интернет. В този случай ако ползвате някаква стрийм услуга или играете онлайн игра ще усетите срива, няма как, но това ще е един момент 10-20 секунди. Много по добре е от това да имате втори рутер и да местите кабели или да се свързвате безжично към друга мрежа. Да се върнем на първия доставчик – ако връзката му се въстанови рутера автоматично ще върне вашият трафик да преминава само през него. Failover е по често използвания и най надеждния вариант за избягването на срив във връзката с Интернет в ситуация с два доставчика.

Какво е Load Balance

Load balance е вариант в който трафика и на двата доставчика се обединяват и ако имате два WAN порта по 50Mbits то теоретично трябва да получите 100Mbits на LAN порта, но !!! Тук е момента в който обичам да разочаровам хората 🙂 защото ако съм искрен обединяването на трафика всъщност не е напълно възможно, и сега ще се опитам да обясня защо. Имаме 3 проблема за решаване:

  1. За да имате Load Balance трябва да имате вече работещ Failover в противен случай при отпадането на един от доставчиците ще се “чупят” пакети. Тук няма драма защото вече написах, че има решение за това.
  2. За да имате Load Balance трябва да сте наясно кой доставчик каква скорост ви предоставя и да опишете в рутера процентно през кой WAN порт колко повече или по малко пакета трябва да насочите. Тук също има решение, нарича се weight и след малко игра вярвам ще го балансирате.
  3. Най големия проблем при Load Balance е връзките (connections) които имат живот (ttl). Представете си, че се логвате в Интернет банкирането си и на следващия клик искате да си видите салдото след което страницата изчезва или иска пак да се логнете 🙂 Това се случва защото първо сте се логнали с ИП адреса на първия доставчик на Интернет и сте пожелали да видите сметката през друг ИП адрес на втория доставчик. Тъпо е, но не можете да го контролирате, вашият рутер прави това което вие искате – балансира пакетите процентно през двата доставчика. Това за някой протоколи, за жалост най важните като SSL например е недопостимо. Всъщност и тук има решение което е свързвано с допълнителна конфигурация но и допълнително усложняване. Определен трафик като HTTP, HTTPS, SSH и определени портове според нуждите ви се конфигурират допълнително да преминават само през основния доставчик. Въпреки всичко тук има малко подводни камъни защото определени програми позлват различни портове и протоколи които няма как да знаем или опишем правилно освен само по един стар метод – нарича се: Проба – грешка.

За това моят съвет е по подразбиране да се ползва Failover но ако мислите, че Load Balance е вашето Ноу-Хау действайте – OpenWrt поддържа всички ситуации които избройх до тук 🙂

Втори WAN интерфейс (доставчик)

Рутера видно има един WAN порт в син цвят и четири LAN порта в жълт цвят. Тъй като аз ще ползвам и втори доставчик за Load Balance и Failover ще конфигурирам LAN 1 като WANB за втория доставчик.

Това лесно се случва от менюто Network=>Switch като добавим VLAN 3 разтагнат (untaged) на 1-ви порт изключен (off) от другите портове както е показано по долу.

След което трябва да създадем WANB в Network=>Interface асоциирайки го към eth0.3

Какво е mwan3

mwan3 е програма която управлява използването на повече от 1 до 250 WAN интерфейса в OpenWRT. Той позволява всяка комбинация от първи, втори или повече WAN интерфейси за Failover и Load Balance. mwan3 улеснява маршрутизирането на политики с множество WAN интерфейси. mwan3 може да наблюдава състоянието на интерфейсите, като изпраща пингове до конфигуриран хост за проследяване и при необходимост отказоустойчивост.

Инсталиране на mwan3

Влизаме в терминал през SSH и пишем:

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install mwan3 luci-app-mwan3
root@OpenWrt:~# reboot

След рестарт и повторно логване в рутера в менюто Network ще получим нов линк Load balancing. Принципно имаше си някаква примерна конфигурация която вместо да я разучавам, аз я изтрих и си създадох моя, според мойте нужди.

Тъй като аз искам Fajlover, такъв ще конфигурирам но ако искам Load Balance стойноста на Metric във WAN щеше да е 1. А weight е параметъра на тежеста на връзката но той се коригира само ако Metric е с еднакви стойности.

WLB е група която аз съм създал за да вкарам в нея WAN интерфейсите.

Освен целия IPv4 трафик като отделно правило е добавен и https/443 в тази група, ако сме в режим Failover както е сега това правило не е нужо, но ако сме в Load Balance е задължително.

В менюто status си имаме мониторинг 🙂

Финна конфигурация Failover

Във Network=>Load Balance=>Interface=>EditWAN интерфейс: Могат да се открият опции за финна конфигурация на Load Balance и Failover на които и големите пройзводители на скъпи устройства с такива възможности биха завидели. Например системата може да следи не само един, a няколко хоста едновременно в Интернет за да знае дали да свали активния WAN интерфейс и да вдигне следващия, WANB, като в нашия случай.

Друг много важен момент е мониторинга Check link quality на състоянието и качеството на Интернет връзката, както за времето на отговор packet latency [ms] така и в загуба на пакети packet loss [%]. Възможно най просто казано вашият рутер не само ще следи в реално време връзката към Интернет чрез няколко различни точки на света, но и ще следи качеството на тази свързаност. При влошаване, а не тотална загуба на Интернет, той ще ви смени доставчика автоматично, и при поправяне на тази свързаност ще го върне. Това е особенно важно за геймъри, стрийм услуги и не на последно място отдалечени офиси които работят с програма онлайн. Голяма част от отдалечените обекти които имат по два доставчика или имат два рутера или имат един който е Failover следящ само шлюза default gateway на първия доставчик. Сами разбирате колко ненадеждно е това защото ако доставчика има някакъв проблем, той ще се отрази и при вас, но с OpenWrt може да следи не нашата свързаност с шлюза си по подразбиране а ще следи свързаноста на нашия доставчик.

Аз мисля, че успях с Гигабитов AC рутер за 64 лева да го докарам до по висок клас такъв като за 300 лева ?!?!?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has 2 Comments

  1. Даниел

    Евала!

  2. Даниел

    Жестоко и изчерпателно!