Авторские статьи Собираем OpenWRT

Обсуждение в разделе «Статьи», начал(-а) Kevin Shindel, 15.03.2017.

  1. Kevin Shindel

    Kevin Shindel Member

    Регистрация:
    24.05.2015
    Сообщения:
    558
    Одобрения:
    585
    Репутация:
    24
    Попробую и я себя в роли пейсателя... думаю Ачатовцы будут не против...

    В данной статье я попытаюсь раписать от А до Я весь процесс сборки кастомной прошивки для ОпенВРТ + ништячок в виде балансировки между провайдерами.

    Собственно для чего нужна кастомная прошивка если на фтп-сервере ОпенВРТ выливают Гигабайты прошивок?

    Кастомные прошивки нужны для исключительных ситуаций:
    - Разработка своего функционала и доп.софта
    - Когда для дополнительных пакетов просто не хватает места
    - Когда хочется собрать пакет All-In-One (предустановленый софт)

    Сборка прошивки из исходников.

    1) Для начала нужно скачать сурс с которого всё будет собираться в одну кучу...

    Выбор сурсов тут ... https://dev.openwrt.org/wiki/GetSource

    Trunk - "основной ресурс OpenWRT"

    Code:
    git clone git://github.com/openwrt/openwrt.git
    
    Chaos Calmer - "следующая версия OpenWRT, находится в стадии trunk. Обещается в будущем переход на версию kernel 3.14 и подхватывание всех современных тенденций. Версия для экспериментаторов. Временами возникают проблемы, но быстро лечатся. Если руки у Вас прямы, нервы крепки, готовы и морально и физически к трудностям, которые могут возникнут совершено случайно при очередной пересборке, то смотрите лучше на эту версию."
    Code:
    git clone -b chaos_calmer git://github.com/openwrt/openwrt.git
    
    Barrier Breaker - "версия, обещающая стать заменой предыдущей, на сегодня находится в стадии RC (release candidate). ставшая новым stable-релизом. если случаются обновления исходного кода, то только критические исправления, не замеченные в период тестирования.
    Пока имеет множество небольшое количество о умолчанию не доступных дополнительных пакетов, но если вы не планируете запускать на маршрутизаторе Web-сервер или еще какое нестандартное извращение, то проблем у Вас не возникнет."

    Code:
    git clone -b barrier_breaker git://github.com/openwrt/openwrt.git
    
    Attitude Adjustment - "проверенная стабильная версия, однако на фоне неумолимого прогресса в сфере информационных технологий актуальность её угасает"

    Code:
    git clone -b attitude_adjustment git://github.com/openwrt/openwrt.git
    
    2)Устанавливаем доп.софт необходимый для компиляции..

    apt-get update
    apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev libssl1.0-dev subversion mercurial


    3) Далее подготавливаем зависимости... (запускаем скрипт в папке с сурсом)

    ./scripts/feeds update -a
    ./scripts/feeds install -a


    4) Подготовка компиляции (находясь в папке с сурсом ввести)

    make prereq

    5) Выбор платформы.

    make menuconfig

    после этой команды должно появится вот такое окошко...

    [​IMG]

    Управление тут примитивное Стрелками Вверх-Вниз перемещаемся между строками, вход в подуровень Enter, пометить\снять метку - пробелом.

    Выбираем Target System, Subtarget, Targer Peofile. Нажимаем Save и Exit.
    Далее вводим.

    make defconfig

    и еще раз

    make menuconfig

    и собственно сама сборка...

    make -j2 V=s FORCE_UNSAFE_CONFIGURE=1

    флаг -j указывает количество ядер процессора.
    флаг s=V значит подробный вывод текущего состояния компилирования
    флаг FORCE_UNSAFE_CONFIGURE=1 значит сборка под рутом (без этого флага не запустится компиляция)

    6) Осталось забрать готовую прошивку по адресу:

    .../bin/тип процессора/

    Предупреждение: После компиляции возможно раздутие папки до 7 Gb!

    ******************************************
    В данной статье использовались следующие материалы
    Источник - https://github.com/freifunk-gluon/gluon/issues/973
    Источник - http://wiki.openwrt.org/doc/howto/buildroot.exigence
    Источник - https://www.denisyuriev.ru/linux/openwrt-linux/openwrt-sborka-iz-isxodnikov/

    Примечание: Для полноценного запуска пришлось столкнутся с костылями которые в процессе пришлось решить что потребовало небольших усилий... Самое печальное что об этих костылях не пишут не в офф.мануале по сборке не в видео-обзорах Ютуба... у них всё в шоколаде! ))))

    P.S - Время компиляции на моём нетбуке составило ~ 4 часов. 48 минут с ключем j2
    - CPU Intel Atom N450 1.66 Ghz (1 ядро x 2 потока)
    - DDR 2 - 2 Gb
    - SSD OCZ - 120 Gb
     
    #1 Kevin Shindel, 15.03.2017
    В последний раз редактировалось: 29.03.2017, 19:46
    Это одобряют Triton_Mgn и Veil.
  2. Kevin Shindel

    Kevin Shindel Member

    Регистрация:
    24.05.2015
    Сообщения:
    558
    Одобрения:
    585
    Репутация:
    24
    Модификация прошивки из исходников

    5.1) Сначала указываем целевое устройство...

    Допустим для

    TP-Link TL-WR842ND
    1. Target System — Atheros AR7xxx/AR9xxx
    2. Subtarget — Generic
    3. Target Profile — TP-LINK TL-WR842N/ND
    TP-Link TL-WR741ND
    1. Target System — Atheros AR7xxx/AR9xxx
    2. Subtarget — Generic
    3. Target Profile — TP-LINK TL-WR741N/ND
    Если вы не знаете или сомневаетесь посмотрите офф.страницу вашего устройства тут...
    https://wiki.openwrt.org/toh/start

    5.2) Далее подключаем/удаляем модули...

    Что можно добавить?
    Управлять прошивкой из командной строки — дело благородное, но не всегда удобное.
    Посему я всем рекомендую использовать Web-интерфейс.
    Для этого выбираем следующие пункты

    LuCI --->
    1. Collections --->
    <*> luci
    5. Translations --->
    <*> luci-i18n-english
    <*> luci-i18n-russian
    Зачем нам маршрутизатор, который не умеет подключаться к интернету?
    Выберем необходимые протоколы:

    Network --->
    <*> ppp
    <*> ppp-mod-pppoe
    <*> ppp-mod-pppol2tp
    <*> ppp-mod-pptp

    Примечание: если роутер будет использоваться в качестве клиента DHCP или по статическому адресу, тот этот пункт можно отключить...
    Наиболее популярной задачей, с которой сталкиваются пользователи OpenWRT — подключение внешних накопителей.
    Подключение USB-модемов и принтеров рассматривать в этой статье не будем, так как её размер увеличится до бесконечности.

    Для подключения USB дисков нам первым делом понадобится пакет block-mount, который в прочем не обязателен, но поможет нам подключать диски через Web-интерфейс, а так же автоматически их монтировать после перезагрузки устройства. Иначе придется всё ручками прописывать.

    Base system --->
    <*> block-mount

    Kernel modules --->
    USB Support --->
    <*> kmod-usb-core
    <*> kmod-usb-ohci
    <*> kmod-usb-storage
    <*> kmod-usb-usb2

    Kernel modules --->
    Filesystems --->
    <*> kmod-fs-ext4

    Примечание: Также советую добавить пакет hd-idle, он отвечает за отключение винчестера во время простоя, очень легко настраивается через консоль.

    Если консоль НЕОК, тогда добавляем GUI

    LuCI --->
    Application --->
    <*> luci-app-hd-idle
    Старый добрый трансмишн ну куда без него?
    Хотите что б роутер сам тянул торренты? Нефиг делать!

    Network --->
    BitTorrent --->
    <*> transmission-daemon
    <*> transmission-remote

    Если через консоль НЕОК, тогда запиливаем через Люсю... тобишь GUI.

    LuCI --->
    Application --->
    <*> luci-app-transmission
    Если место Вы экономить не планируете, а с редактором vi, идущем по умолчанию в OpenWRT у вас созревают конфликты, ибо не самое удобное творение человечества, то есть смысл так же добавить в состав прошивки редактор Nano. Хотя он и не очень то и много места займет в Вашем устройстве.

    Utilities --->
    [*] Editors --->
    <*> nano
    Если вы хотите использовать роутер не по своему назначению, тогда нужно выбрать след.
    пункты.

    Network --->
    Wireless --->
    <*> aircrack-ng

    Base System --->
    <*> wireless-tools
    Обход мак-блокировки? Легко!

    Utilitues --->
    <*> macchanger
    Очень ништяковый пакет, позволяет добавить WAN'ы путём отрезания "лишних" LAN-портов... очень рекомендую!

    LuCI --->
    Applications --->
    <*> luci-app-multiwan

    Что можно удалить?
    Можно удалить таблицы IPv6 , освободится приблизительно 128 Кб...

    Global build settings --->
    < > Enable IPv6 support in packages
    Зачем на устройстве с кастомной прошивкой подливка доп.пакетов?

    Base system --->
    < > opkg
    У себя я выпилил все PPP пакеты, т.к. инет получаю по DHCP

    Network --->
    <> ppp

    Kernel modules --->
    Network Support --->
    < > kmod-ppp


    5.3) После окончания выбора пакетов конфигурацию можно сохранить, что бы в дальнейшем нужно было делать меньше действий...

    В главном меню нажимаем Save

    [​IMG]

    И указываем имя файла конфигурации

    P.S. буду дальше редактировать статью... так как после прошивки Люся не появилась, я так понимаю нужно добавить веб-сервер на котором крутится веб-морда...
     
    #2 Kevin Shindel, 15.03.2017
    В последний раз редактировалось: 21.03.2017
    Это одобряют Triton_Mgn, Veil и Majgap.
  3. Kevin Shindel

    Kevin Shindel Member

    Регистрация:
    24.05.2015
    Сообщения:
    558
    Одобрения:
    585
    Репутация:
    24
    Сборка при помощи ImageBuilder

    Не только лишь все знают (с) , что собирать прошивку можно иначе!

    Еще не до конца понял в чём разница, просто оставлю это здесь ...
    Есть еще один способ собрать .... точнее пересобрать прошивку, с помощью ImageBuilder.

    Идём на офф.сайт ОпенВРТ и ищем нужный нам ImageBuilder...
    В данном случае я искал для TP-Link 741
    wget https://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2

    теперь нужно это дело распаковать ...

    tar -xjvf OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2

    Переходим с папку с буилдером...

    cd OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64

    теперь собственно пересобираем прошивочку...

    make image PROFILE=TLWR741 PACKAGES="luci luci-app-qos luci-app-mwan3 -ppp -ppp-mod-pppoe -wget -opkg -ip6tables -kmod-ip6tables -kmod-ipv6 -odhcp6c"

    теперь по-порядку:

    make image - собрать образ
    PROFILE=TLWR741 - указываем какой именно роутер нас интересует
    PACKGES=... тут мы описываем что мы хотим добавить\удалить в образе... в данном случае я добавил люсю и мультиван а также QoS(для уменьшения аппетитов ВАНов), и удалил ppp-типы подключений , IPv6-таблицы а также wget и opkg так как он мне более не нужен и занимает лишнее драгоценное место (флеш всего 4 Мбайта)

    И всё ... забираем готовые ништяки тут ../bin/ar71xx/

    В пересборке с помощью буилдера весь процесс занимает около 3-4 минут. (в отличие от компиляции ~ 4 часа)
     
    #3 Kevin Shindel, 19.03.2017
    В последний раз редактировалось: 21.03.2017
    Это одобряют Triton_Mgn и Veil.
  4. Kevin Shindel

    Kevin Shindel Member

    Регистрация:
    24.05.2015
    Сообщения:
    558
    Одобрения:
    585
    Репутация:
    24
    Модификация LAN -> WAN

    В этой статье я также поведаю как сделать из обычного роутера ... не обычный....
    Точнее как заставить наш 741 работать с несколькими провайдерами, сделать это не просто но возможно!
    Поможет нам в этом пакет - app-luci-mwan3

    В настройке есть куча подводных камней, ло этого момента мне казалось что настройка нескольких WAN'ов на Микротике это сложно, но нет... я ошибался.
    Но познакомившись с ОпенВРТ поближе эта прошивка мне начала даже немножко нравится...

    Итак приступим...
    Для начала давайте немного разберёмся с интерфейсами в ОперВРТ.

    Ethernet Switch: "eth0"- это наши физические порты LAN
    Ethernet Adapter: "eth1" - это собственно родной WAN (он стоит особняком об этом позже)
    Wireless Network: Master "OpenWrt" (lan) - это наш физический Вай-Фай

    Теперь нужно определится какие порты из LAN'ов мы будем рвать.... тут есть один прикольный момент опишу его чуть ниже.

    Допустим мы хотим завести в 741 три провайдера. Для этого нам необходимо 3 порта 2 порта (заводской WAN + 2 x LAN ) RJ-45, один мы будем брать родной и два придётся "хирургическим путём" отрезать от LAN'а.

    Далее мы разбираемся какой физический порт соотв. аппаратному в прошивке.
    Network -> Interfaces -> Switch

    [​IMG]


    Физически мой кабель подключен к 741 в порт 3, а ОпенВРТ думает иначе ))))
    Не скажу почему так происходит... я просто принял суровую реальность и проверил каждый порт... в итоге получилась довольно забавная ситуация...

    PHYS - APP
    ---1-----2
    ---2-----3
    ---3-----4
    ---4-----1

    Всё очень сложно ! ))))
    Первый порт лана в роутере это 2 аппаратный, 2 порт в лане это 3 аппаратный и так далее.
    Теперь когда мы определились с портами приступим далее...

    Нажимаем Add и добавляем VLANы... максимальное кол-во для ТП-Линка составляет 4 Vlan'a (3 под WAN и один для сети.)

    [​IMG]

    Нажимаем Save (только Сейв! пока рано применять!)

    [​IMG]

    Далее идём в интерфейсы и грохаем WAN6.
    Тоже нажимаем только Сейв!

    Идём в LAN.

    [​IMG]

    Interfaces -> LAN -> Physical settings ->
    Убираем галочку с creates a bridge over specified interface(s)
    Переставляем галочку с Interface -> Ethernet Adapter: "eth0" (lan)
    На Interface -> VLAN Interface: "eth0.101"

    Нажимаем Save

    Если необходимо изменить настройки DHCP , тогда корректируем... идём во вкладку General setup

    [​IMG]

    А теперь можно нажать Save + Apply!

    Роутер ребутнётся и вы должны получить айпи адресс из нового диапазона или из старого если вы не меняли настройки DHCP.

    Теперь собственно переходим к подготовке WAN-интерфейсов...

    [​IMG]

    Переходим в Interfaces и нажимаем Add new interfaces.

    указываем имя второго Вана
    Name of the new interface --> WAN2

    указываем тип подключения
    Protocol of the new interface --> DHCP Client (у вас может быть PPTP или иной)

    [​IMG]

    И нажимаем Submit

    [​IMG]

    Переходим опять в настройки этого ВАНа и создаём зону фаервола...

    [​IMG]

    И указываем метрику интерфейсов... (она необходима нам будет позже)
    Для WAN - 10, WAN2 - 20, WAN3 - 30, WAN4 - 40
    Далее Save and Apply

    Далее добавляем остальные WANы...

    Я ограничился 1+2 по витой паре, теоретически можно отрезать еще один ЛАН, но я решил оставить два порта под сеть...

    А теперь фокус-покус... добавляем еще один Ванчик по вафельке!
    Переходим в Network --> Wifi --> И нажимаем Scan

    [​IMG]

    Выбираем сеть от которой у нас есть ключик и нажимаем Join network.

    [​IMG]

    [​IMG]

    указываем ключ WPA passphrase
    указываем имя доп.вана Name of the new network: WAN4
    указываем зону фаервола: Create / Assign firewall-zone: wan4
    Дальше Submit

    Далее можно тонко настроить беспроводную сеть...

    [​IMG]

    Operating frequency я выставил на Legacy и канал auto

    Save and Apply

    [​IMG]

    Далее роутер должен показать что он подключился по вафле , но инета у нас пока еще нет, мы не настроили фаерволл...


    Собственно что мы и сделаем...
    Переходим Network --> Firewall

    [​IMG]

    В качестве эталона у нас штатный WAN, собственно чекаем по аналогии...

    [​IMG]

    [​IMG]

    [​IMG]

    Клацаем Save and Apply.
    Всё после этого у нас появится инет...

    Ура мы проделали 50% работы! )))))
     
    #4 Kevin Shindel, 19.03.2017
    В последний раз редактировалось: 21.03.2017
    Это одобряют Triton_Mgn и Veil.
  5. Kevin Shindel

    Kevin Shindel Member

    Регистрация:
    24.05.2015
    Сообщения:
    558
    Одобрения:
    585
    Репутация:
    24
    Настройка MultiWAN (Failover+Load Balancing)



    Переходим в Network --> Load Balancing

    [​IMG]

    По-умолчанию стоят два вана, они не рабочие, просто игнорируем их...
    Переходим во вкладку Configuration и убиваем интерфейсы...

    [​IMG]
    [​IMG]

    Тут же создаём новые, прописываем имена интерфейсов которые мы создавали ранее...
    WAN,WAN2,WAN3,WAN4 .... тут регистрозависимые имена!

    [​IMG]

    В графе Tracking IP , указываем адрес который будет пинговатся для того что бы понять есть инет на порту или нет, я выбрал Гугловский DNS-сервак... вы можете указать какой угодно хост, для подстраховки можно указать хоть три-четыре хоста..

    [​IMG]

    Если интерфейсы прописаны верно, то в колоке метрика вы увидите заданные ранее значения! Это факт того что МВАН3 правильно понял вас!

    [​IMG]

    Далее переходим во вкладку Member, тоже сносим предустановленные настройки...
    И создаём свои... Тут всё равно что вы напишете... т.к. далее нужно будет указать интерфейс и метрику отдельно, строку Weight укажите 1.

    [​IMG]

    [​IMG]


    По концовке должно получится что-то похожее...

    [​IMG]

    Далее идём в Policy, сносим всё кроме строки balanced, её мы редактируем.

    [​IMG]

    [​IMG]

    Сносим все указаные Member used, и добавляем ранее нами созданные...

    [​IMG]

    Должно получится что-то такое...

    [​IMG]

    Далее идём в MWAN Rule Configuration.

    [​IMG]

    Тут просто сносим две верхние строки и оставляем нижнюю и жмём Save and Apply.

    Ну кажись всё! Теперь проверяем!

    [​IMG]

    У нас появились все Ванчики, и один из них горит (Вафля) если мы подрубим три витухи в порты то все провайдеры буду работать но в порядке приоритета...
    Т.е. если отваливается WAN тогда роутер садится на WAN2, если отваливается WAN2 идёт на WAN3, если отваливается WAN3 идёт на WAN4.
    В фоновом режиме он пингует хосты по каждому ВАНу, если на каком то появляется инет он перескакивает на него в порядке приоритета! Этот метод называется FAILOVER.

    Также есть еще один метод LOAD BALANCING.
    Получить его очень легко, достаточно изменить настройки в MWAN Member Configuration на единицы, то есть для MWAN вы делаете каждого провайдера равноценным и он балансирует между ними (простыми словами суммирует скорости со всех ВАНов)

    [​IMG]

    Проверить как он балансирует можно тут...

    [​IMG]

    В будущем я добавлю сюда скрин с заведёнными витухами по ВАНам и сделаю скрин с балансировкой и спидтестом....

    Сеть будет выглядеть приблизительно так ...

    Code:
    
    [TL-WA5210G]--------------                 ------------------- [PC]
                              |                |
    [TL-WA5210G] ---------[TL-WR741ND] ---- [свич]---------------[PC]
                              |                |
    [TL-WA5210G] -------------                 -------------------[PC]
    
    
    741 будет аккумулировать все потоки с CPE-шек 5210 и дальше по свичу раздавать по локалке... даже если по одной CPEшке по каким либо причинам отвалится клиент ничего страшного чуть-чуть упадёт скорость, я это увижу в 741 будет красным гореть ВАН в настройках MWAN3

    Чуть ниже я оставил сегодняшние практические данные полученные на коленке в полевых условиях...

    ***************************************************************

    Результаты работы LoadBalancing (балансировка WAN-ов)

    SpeedTest по витой паре...

    Ping | Download | Upload |
    23 | 29.86 Mb | 30.77 Mb |
    23 | 31.15 Mb | 30.79 Mb |
    23 | 29.78 Mb | 30.79 Mb |

    SpeedTest через 3g (на смарте)

    Ping | Download | Upload |
    47 | 6.92 Mb | 3.65 Mb |
    35 | 8.66 Mb | 3.58 Mb |
    49 | 4,76 Mb | 4.11 Mb |

    Балансировка на роутере (Витая пара + WiFi Client -->(3G))
    тут наверное подробнее...
    В порт WAN ключен кабель от провайдера (пакет 30 Мбит)
    Через WAN4 (WiFi интерфейс) роутер подключен к смартфону ( считаем 6Мбит)
    На смартфоне поднята точка доступа.... ниже я привёл пример спидтеста отдельно и вместе.

    Ping | Download | Upload |
    50 | 34.46 Mb | 34.10 Mb |
    40 | 35.53 Mb | 34.25 Mb |
    39 | 35.49 Mb | 34.17 Mb |

    Источник - https://habrahabr.ru/post/264299/

    *******************************************************

    До сегодняшнего эксперимента с балансировкой у меня было не очень хорошее отношение к ОпенВРТ т.к. эта прошивка менее дружелюбная чем ДД-ВРТ, но если вникнуть и проникнутся то потенциал её очень огромен! И фактически можно сделать с железкой за копейки потенциал железа который в 2-3 раза дороже, например если бы у меня не получилось сделать балансировку на TP-Link WR741-ND тогда пришлось бы покупать TL-R470T+ сравнить цены на него можете сами если вам будет интересно...
    Вот статья про 470+ https://geektimes.ru/post/131933/ тут чел купил его и покрутил, но получил кучу минусов по репе )))))

    Мне было очень интересно поковырять эту прошивку.
    Во время написания данного мана, я прокурил наверное статей 5-6 и просмотрел минимум 7-8 роликов на Ютубе, честно говоря в каждом ролике или статье скрывается часть настроек что не позволяет сразу вьехать где горбыль, приходилось много импровизировать.
    Раз 10-15 я перепрошивал Туполинк, но он жив здоров и будет далее трудится на благо нации!
     
    #5 Kevin Shindel, 20.03.2017
    В последний раз редактировалось: 21.03.2017
Загрузка...
Похожие темы
  1. Ответы:
    3
    Просмотры:
    1 040
  2. Ответы:
    14
    Просмотры:
    1 470
  3. Ответы:
    5
    Просмотры:
    1 310
  4. Ответы:
    1
    Просмотры:
    1 067
  5. Ответы:
    5
    Просмотры:
    686