Домашняя » как » Получите еще больше энергии от вашего домашнего роутера с помощью DD-WRT Mod-Kit

    Получите еще больше энергии от вашего домашнего роутера с помощью DD-WRT Mod-Kit


    Мы уже показали вам, как модернизировать ваш домашний маршрутизатор с помощью альтернативной прошивки DD-WRT для значительного улучшения производительности, и сегодня мы собираемся показать вам, как сделать это еще дальше с помощью DD-WRT Mod-Kit.

    Если вы еще этого не сделали, обязательно ознакомьтесь с двумя предыдущими статьями этой серии:

    • Превратите свой домашний маршрутизатор в сверхмощный маршрутизатор с DD-WRT
    • Как увеличить сигнал сети Wi-Fi и увеличить дальность с помощью DD-WRT

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

    обзор

    Это руководство даст пошаговое краткое изложение того, как создать собственную прошивку DD-WRT с изменениями и дополнениями, используя «комплект модификации прошивки».

    Комплект для модификации прошивки позволяет вносить изменения в прошивку, не компилируя ее из исходного кода. Внесение изменений таким способом с помощью предоставленных скриптов становится простым делом загрузки, замены и удаления некоторых файлов..

    Наиболее распространенная причина использования этого метода заключается в том, что в последнее время поддержка DD-WRT для пакетов Openwrt IPKG сместилась в сторону маршрутизаторов с жесткими дисками (через USB), что делает мод-кит единственным стабильно работающим способом успешной установки пакетов IPKG. для случаев, когда HD недоступен. Кроме того, этот метод имеет дополнительное преимущество, заключающееся в том, что вы избавляетесь от зависимости JFFS для установки пакетов, что для маршрутизаторов с флэш-памятью всего 4 МБ является реальной проблемой..

    Изображение publicenergy

    цели

    Хотя инструкции для этой процедуры подробно описаны в вики DD-WRT и на сайте разработчика, мы стремимся сделать это руководство процедурой копирования и вставки, которую каждый может использовать для достижения следующих целей:

    • Установите пакет knockd и его зависимости.
    • Установите пакет ssmtp с созданными конфигурациями на основе NVRAM.
      • Опционально с поддержкой TLS SMTP (поддержка Gmail)..

    После того, как вы выполнили эту процедуру, вам будет достаточно просто адаптировать ее для установки других пакетов..

    Предупреждение: Действуйте осторожно… имейте в виду, что неправильное использование комплекта для модификации может привести к тому, что маршрутизатор, который нуждается в удалении кирпича, может превратиться в бесполезный кирпич. Однако, если вы настоящий гик, вы, вероятно, согласны с идеологией, согласно которой тот, кто может уничтожить вещь, контролирует вещь, и только истинные гики это делают

    Предпосылки

    1. Используя эту процедуру можно кирпич ваш маршрутизатор, как в сделать ваш маршрутизатор непригодный, мы не несем ответственности за любой ущерб, который может быть причинен непосредственно или иным образом в результате использования описанных ниже процедур.
    2. Эта процедура была выполнена в системах на основе Debian (Lenny, Squeeze и Mint), и в приведенных ниже инструкциях предполагается, что вы используете одну из них..
    3. Эта процедура рекомендуется только для людей, которые имеют опыт перепрошивки своего маршрутизатора с помощью DD-WRT, со всеми предварительными условиями, предостережениями и ограничениями, которые применяются для их аппаратной настройки. хорошее место, чтобы начать было бы нашим Превращает Ваш Домашний Маршрутизатор в Мощный Маршрутизатор с руководством DD-WRT.
    4. Ваш маршрутизатор должен поддерживать хотя бы «мини» версию DD-WRT.
    5. Эта процедура была создана и протестирована на маршрутизаторах Linksys WRT54GS / L. Если вы используете маршрутизаторы других производителей, ваш пробег может быть очень.

    Настроить

    Установка необходимых пакетов

    Комплект для модификации прошивки имеет некоторые зависимости для компиляции и работы. Чтобы установить / обновить их все сразу, выполните эту команду в терминале:

    sudo aptitude install gcc g ++ исправление binutils bzip2 flex bison make gettext распаковать zlib1g-dev libc6 subversion

    Скачать мод-кит

    Создайте подпапку и получите комплект из официального SVN:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-only-read-only
    cd firmware-mod-kit-only-read / trunk /

    Скачайте прошивку для работы

    Первое, что нужно учитывать, это то, какую версию вы хотите использовать?
    Эмпирическое правило таково: если сомневаетесь, используйте «мини». Это связано с тем, что, пока ваш маршрутизатор поддерживает хотя бы «мини» версию, его использование дает вам все наиболее часто используемые функции без каких-либо вредоносных программ. таким образом оставляя как пространство для процедур, так и даже некоторое пространство JFFS для других целей в большинстве случаев.

    После того, как вы определились с версией, рекомендуется использовать последнюю версию имеющейся прошивки, так как они имеют много исправлений ошибок по сравнению со своими «стабильными» аналогами..
    На момент написания этой статьи последняя версия была «03-17-11-r16454», и эта редакция используется в следующих командах.

    wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin

    Чтобы упростить отслеживание используемой нами версии, переименуйте загруженный файл, указав номер его версии:

    mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin

    Это, конечно, необязательно, но команды ниже предполагают, что вы переименовали файл.

    Извлечение прошивки

    Чтобы иметь возможность изменять файлы в прошивке, нам нужно извлечь ее содержимое во временную директорию..
    Синтаксис этой команды:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    В нашем случае это будет означать:

    ./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1

    Примечание. При первом запуске этой команды она собирает инструменты mod-kit в вашей системе. это происходит только один раз и может занять некоторое время ... так что наберитесь терпения ...

    Установка пакетов

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

    Пакет knockd

    Подробные инструкции о том, как настроить и использовать Knockd, будут подробно описаны в следующей статье, поэтому вы можете пропустить этот шаг сейчас или сделать это в ходе подготовки к будущему, так как Knockd все равно не занимает много места..

    Knockd - это демон, который прослушивает коммуникационные события на канальном уровне для последовательностей, а затем воздействует на них.
    Это означает, что устройство, на котором работает демон, даже не «слушает» порты (сканирование портов не видит их открытыми) и при этом заставляет его делать то, что вам нужно, от одной команды до конца на полный сценарий. Используя эту технику, вы можете запустить сервер для выполнения любого необходимого вам действия удаленно (через Интернет), не подвергая вашу домашнюю сеть.

    Knockd имеет только одну перечисленную зависимость, поэтому загрузите пакет и его зависимость, выполнив:

    wget http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
    wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk

    Установите ipk «knock daemon» (knockd) в прошивку:

    ./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/

    Установите «пакетный захват» (libpcap) ipk в прошивку:

    ./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/

    Поскольку «knockd» может быть вызван с помощью альтернативного файла конфигурации (как будет объяснено в будущей статье), нет необходимости выполнять какие-либо другие операции, и вы можете перейти к разделу сборки прошивки, если это все, что вы хотели установить.

    Пакет SSMTP

    Пакет SSMTP позволяет вашему маршрутизатору отправлять сообщения электронной почты, как показано в разделе «Как настроить уведомления по электронной почте в Linux, используя Gmail или SMTP для серверов». Мы обещали вам тогда, что мы покажем, как настроить это для DD-WRT, и теперь мы доставим.
    Это в основном полезно, если вы собираетесь создавать скрипты на маршрутизаторе, чтобы получать отзывы об их работе по электронной почте..

    Настройка этого пакета немного сложнее, чем в обычных системах Linux, из-за ограничений, налагаемых встроенной системой, так что сделайте глубокий вдох… готов?…. погнали… :)

    Загрузите пакет:

    wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk

    Установите «ssmtp» ipk в прошивку:

    ./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/

    Поддержка TLS (необязательно)
    SSMTP не перечисляет другие пакеты в качестве своих зависимостей, однако, если вы хотите иметь возможность использовать шлюз SMTP, который требует аутентификации TLS (т.е.. Gmail), вы также должны установить пакет openSSL.
    Заметка: ОГРОМНОЕ недостаток сделать это в виде значительно уменьшенного пространства на маршрутизаторе для JFFS позже. Таким образом, пакет openSSL занимает около 500 КБ пространства из ваших общих 4 МБ (для обычного не «мега» поддерживающего маршрутизатора), в дополнение к накладным расходам JFFS, и вы обнаружите, что у вас осталось, но очень мало, блоков свободное пространство JFFS (около 60 КБ на WRT54GL).

    Поскольку все еще не TLS требует SMTP-серверов (как правило, ваш провайдер), я предлагаю уделить минуту, чтобы подумать, действительно ли вам нужно использовать TLS требующий шлюз.

    Если вы решили включить поддержку TLS, несмотря на ее недостатки, загрузите пакет openSSL:

    wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk

    Установите «openSSL» (libopenssl) ipk в прошивку:

    ./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/

    Конфигурации
    В пакете SSMTP существует ограничение, заключающееся в том, что его нельзя вызвать с помощью альтернативного файла конфигурации..
    Поскольку прошивка доступна только для чтения, когда она на маршрутизаторе, это означает, что из коробки мы можем только жестко закодировать конфигурацию в прошивку.
    Однако, что если мы не хотим проходить все этапы модификации прошивки, просто изменить настройки электронной почты? (например, смена пароля).

    С этой целью и Джереми (создатель мода-комплекта прошивок) и я пришли к выводу (независимо, если можно смиренно добавить), что единственный разумный способ сделать это будет:

    1. Сделайте расположение файлов конфигурации, на которое пакет ssmtp указывает на расположение только для чтения в etc, укажите каталог tmp, доступный для записи во время выполнения.
    2. Создайте скрипт, который будет динамически генерировать конфигурации на основе переменных NVRAM при запуске.

    Чтобы добиться этого, необходимы некоторые дополнительные шаги ...

    Symlink каталог конфигурации ssmtp
    Как объяснено выше, нам нужно сделать / И т.д. / SSMTP местоположение на маршрутизаторе, укажите на / TMP каталог как единственное доступное для записи место, которое мы имеем на маршрутизаторе во время выполнения. Для этого удалите каталог ssmtp, созданный установщиком ipk:

    rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/

    Создайте новую символическую ссылку, которая указывает / etc / ssmtp на корневую файловую систему маршрутизатора, чтобы указать / tmp / etc / ssmtp как абсолютный путь:

    ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp

    ЗаметкаНесмотря на то, что это выглядит нелогичным прямо сейчас, потому что мы указываем каталог конфигурации пакета на местоположение за пределами рабочего каталога пакета модификации прошивки, я заверяю вас, что это выглядит совершенно нормально с точки зрения маршрутизаторов во время выполнения.

    Сценарий инициализации
    Хотя вполне возможно не внедрять этот скрипт в прошивку и запускать его как скрипт запуска позже, я считаю целесообразным поместить его здесь, хотя бы в качестве примера для будущего использования..
    Первоначально Джереми создал сценарий, адаптированный к чьему-либо запросу, позже я настроил и дополнил его, чтобы он был более совместимым с DD-WRT и отчетами системного журнала..

    Создайте новый сценарий инициализации (запуска):

    vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Примечание: вы можете использовать другой редактор, я использую vi, потому что он соответствует тому, что доступно на маршрутизаторе…
    Сделайте это своим содержанием:

    #! / Bin / ш
    #
    # title: ssmtp_nvram.sh
    # автор: Джереми Коллейк и Авиад Равив
    # сайт: http://www.bitsum.com, http://howtogeek.com
    #
    # скрипт для сборки конфигурационного файла из nvram vars.
    # будет работать для любого файла конфигурации, который использует
    # var = пары типов значений.
    #
    # использует префиксы для переменных nvram.
    #
    # т.е..
    # ssmtp_hostname = что-то
    # переводит в ssmtp.conf
    # hostname = что-то
    #
    logger_func ()

    logger -s -p local0.notice -t SSMTP_init $ 1

    logger_func "########### Запустил запуск инициализации SSMTP ###########"
    logger_func "Создание каталога etc в / tmp"
    [! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
    CONFIG_FILE = / и т.д. / SSMTP / ssmtp.conf
    NVRAM_PREFIX = ssmtp_
    PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "

    logger_func "Генерация $ CONFIG_FILE для пакета $ PACKAGE_NAME"
    #echo $ 0: создание $ CONFIG_FILE для пакета $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# автоматически сгенерировано на основе nvram на $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    if [-z "'nvram show | grep ssmtp'"]
    затем
    logger_func «Похоже, вы не установили переменные NVRAM, необходимые для генерации файла conf»
    logger_func "** Рассмотрим ** использование этих команд в вашем скрипте запуска:"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_mailhub = smtp.gmail.com: 587"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_UseSTARTTLS = YES"
    logger_func "nvram set ssmtp_AuthUser = имя пользователя"
    logger_func "nvram set ssmtp_AuthPass = пароль"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "создайте переменные NVRAM и перезапустите сценарий инициализации или перезагрузите систему, чтобы настройки вступили в силу."
    выход 0
    фи

    ################################################## #########
    #
    # основной цикл
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    для меня в $ CONFIG_VARS; делать
    echo $ i >> $ CONFIG_FILE
    сделанный

    ################################################## #########
    #
    # санитарная проверка
    #
    если [ ! -f "$ CONFIG_FILE"]; затем
    # echo "$ 0: ОШИБКА - не удалось создать $ CONFIG_FILE. Возможно, нет символа / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ОШИБКА - не удалось создать $ CONFIG_FILE. Возможно, нет symink / etc / XXXX -> / tmp / etc / XXXX?"
    фи
    logger_func "########### Закончен запуск инициализации SSMTP ###########"

    Сделайте его исполняемым:

    chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Обратите внимание на ожидающие переменные NVRAM в скрипте, мы обязаны дать им что-то для работы после того, как мы установили нашу модифицированную прошивку на маршрутизаторе.

    Сборка модифицированной прошивки

    Теперь, когда все готово, пришло время переупаковать модифицированную прошивку в сжатый бинарный файл, который мы можем перенести на маршрутизатор..
    Синтаксис сценария «build.sh»:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Для этого мы используем прилагаемый скрипт, поэтому выполните команду:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    После завершения операции «build» в каталоге «output» будет несколько образов прошивки, ожидающих использования.

    Теперь вы можете прошить файл под названием «custom_image_00001-generic.bin» на ваш роутер, как обычно, если вы используете прошивку DD-WRT..

    Заметка: Не забудьте восстановить заводские настройки до, во время и сразу после прошивки прошивки.

    Пост флэш шаги

    Поскольку мы заставили пакет SSMTP искать переменные NVRAM для генерации файла конфигурации ssmtp, теперь нам нужно предоставить ему недостающую информацию.
    Мы сделаем это с помощью функции веб-интерфейса «Выполнить команды»..

    Перейдите в веб-интерфейс -> «Администрирование» -> «Команды» -> вставьте в текстовое поле следующее:

    nvram set [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com: 587
    nvram set [email protected]
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = your-gmail-user-name (без @ gmail.com)
    nvram set ssmtp_AuthPass = you-gmail-пароль
    nvram set ssmtp_FromLineOverride = YES
    nvram commit

    Замените текст после знака равенства (=) фактической информацией, а затем нажмите «Выполнить команды».
    Заметка: если вы используете обычный, не TLS, SMTP-сервер, порт для использования будет 25 вместо 587.

    Теперь, когда информация SSMTP готова к использованию, вам нужно будет запустить скрипт init. Таким образом, вы можете либо перезагрузить маршрутизатор, либо вставить это в текстовое поле «команды»:

    /etc/init.d/S80ssmtp

    Затем снова нажмите «Выполнить команды».
    Вывод этой команды должен выглядеть следующим образом:

    Проверьте, что вы можете отправить по электронной почте
    Снова вставьте это в текстовое поле «команды» следующую команду с вашим адресом электронной почты:

    эхо "тестирование тигля по электронной почте 123 qwe" | ssmtp -vvv [email protected]

    Затем снова нажмите «Выполнить команды».
    Поскольку мы использовали параметр -vvv для дополнительной детализации, выходные данные этой команды должны выглядеть следующим образом:

    Если все прошло хорошо, вы должны получить тестовое письмо в течение нескольких секунд.

    Мы надеемся, что вы сможете использовать эту информацию, чтобы расширить границы вашего домашнего маршрутизатора, даже если вы думаете, что это возможно, и теперь вы действительно управляете своим домашним маршрутизатором и DD-WRT…


    Linux продлевает жизнь, Linux расширяет сознание ... Linux жизненно важен для пакетных путешествий