If-Koubou

Uwolnij nawet więcej energii z domowego routera dzięki modułowi DD-WRT Mod-Kit

Uwolnij nawet więcej energii z domowego routera dzięki modułowi DD-WRT Mod-Kit (Jak)


Pokazaliśmy już, jak modyfikować domowy router za pomocą alternatywnego oprogramowania sprzętowego DD-WRT, aby uzyskać znacznie lepszą wydajność, a dziś pokażemy, jak jeszcze bardziej z niego skorzystać dzięki zestawowi DD-WRT Mod-Kit.

Jeśli jeszcze tego nie zrobiłeś, koniecznie sprawdź dwa poprzednie artykuły z serii:

  • Zmień swój domowy router w super-zasilany router z DD-WRT
  • Jak zwiększyć sygnał sieci Wi-Fi i zwiększyć zasięg dzięki DD-WRT

Zakładając, że znasz te tematy, czytaj dalej. Należy pamiętać, że ten przewodnik jest nieco bardziej techniczny, a początkujący powinni zachować ostrożność podczas modyfikowania swojego routera.

Przegląd

W tym przewodniku poznasz krok po kroku, jak stworzyć własne oprogramowanie sprzętowe DD-WRT wraz z modyfikacjami i dodatkami za pomocą "zestawu modyfikacji oprogramowania".

Zestaw modyfikacji oprogramowania umożliwia dokonanie modyfikacji oprogramowania bez kompilacji ze źródła. Wprowadzanie zmian w ten sposób, za pomocą dostarczonych skryptów, staje się prostą kwestią pobierania, zastępowania i usuwania niektórych plików.

Najczęstszym powodem zastosowania tej metody jest to, że ostatnio obsługa DD-WRT dla pakietów Openwrt IPKG przesunęła się w kierunku routerów z dyskami twardymi (przez USB), co czyni mod-kit jedynym konsekwentnie działającym sposobem instalowania pakietów IPKG dla przypadków, w których HD jest niedostępna. Ponadto ta metoda ma dodatkową zaletę, polegającą na zwalnianiu użytkownika z zależności JFFS przy instalacji pakietów, co dla prawdziwych problemów z routerami wyposażonymi tylko w 4 MB pamięci flash.

Zdjęcie autorstwa publicenergy

Cele

Instrukcje dotyczące tej procedury są szczegółowo opisane na stronie wiki DD-WRT i na stronie programisty. Celem tego poradnika jest procedura kopiowania i wklejania, którą każdy może wykorzystać do osiągnięcia następujących celów:

  • Zainstaluj pakiet knockd i jego zależności.
  • Zainstaluj pakiet ssmtp z konfiguracjami wygenerowanymi przez NVRAM.
    • Opcjonalnie z obsługą TLS smtp (a.k.a. obsługa Gmaila).

Po wykonaniu tej procedury powinno być bardzo łatwo dostosować ją do innych instalacji pakietów.

Ostrzeżenie: Lekko bieżnik ... pamiętaj, że niewłaściwe użycie zestawu modyfikacji, może zostawić cię z routerem, który wymaga odfontowania (jak z kolei jest to bezużyteczna cegła). Jednak jeśli jesteś prawdziwym geekem, prawdopodobnie podpisujesz się pod ideologią, że ten, kto może coś zniszczyć, kontroluje coś i tylko prawdziwi geekowie to robią

Wymagania wstępne

  1. Za pomocą tej procedury można cegła router, tak jak w przypadku rutera bezużyteczny, nie ponosimy odpowiedzialności za jakiekolwiek szkody, które mogą być spowodowane bezpośrednio lub w inny sposób, z powodu zastosowania poniższych procedur.
  2. Ta procedura została przeprowadzona na systemach opartych na Debianie (Lenny, Squeeze i Mint), a poniższe instrukcje zakładają, że używasz także.
  3. Ta procedura jest zalecana tylko osobom, które mają doświadczenie z flashowaniem routera za pomocą DD-WRT, ze wszystkimi wstępnymi wymaganiami, zastrzeżeniami i ograniczeniami, które mają zastosowanie do ich konfiguracji sprzętowej. dobrym miejscem na rozpoczęcie będzie nasz Turn Your Home Router w super-zasilany router z przewodnikiem DD-WRT.
  4. Twój router musi obsługiwać przynajmniej "mini" wersję DD-WRT.
  5. Ta procedura została stworzona i przetestowana na routerach Linksys WRT54GS / L, jeśli używasz routerów od innych dostawców, twój przebieg może być bardzo duży.

Ustawiać

Instalowanie wymaganych pakietów

Zestaw do modyfikacji oprogramowania ma pewne zależności do kompilacji i pracy. Aby zainstalować / zaktualizować je wszystkie naraz, należy wydać to polecenie w terminalu:

sudo aptitude install gcc g + + binutils patch bzip2 flex bison zrób gettext unzip zlib1g-dev libc6 subversion

Pobierz pakiet mod-kit

Utwórz podfolder i pobierz zestaw z oficjalnego SVN:

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

Pobierz oprogramowanie, które będzie działać

Pierwszą rzeczą do rozważenia jest wersja, której chcesz użyć?
Zasada jest taka: w razie wątpliwości użyj "mini". Dzieje się tak, ponieważ tak długo, jak twój router obsługuje przynajmniej wersję "mini", używanie go daje wszystkie najczęściej używane funkcje bez żadnych nadprogramów. pozostawiając w obu przypadkach zarówno przestrzeń dla procedur, jak i przestrzeń JFFS dla innych zastosowań.

Po wybraniu wersji zaleca się skorzystanie z najnowszej wersji dostępnego oprogramowania, ponieważ mają one wiele poprawek w porównaniu do ich "stabilnych" odpowiedników.
W chwili pisania tego artykułu najnowszym był "03-17-11-r16454", a ta wersja jest używana w następujących poleceniach.

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

Aby ułatwić śledzenie wersji, której używamy, zmień nazwę pobranego pliku, aby reprezentował jego numer wersji:

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

Jest to oczywiście opcjonalne, ale poniższe polecenia zakładają, że zmieniłeś nazwę pliku.

Wyodrębnianie oprogramowania układowego

Aby móc zmieniać pliki w oprogramowaniu, musimy wyodrębnić jego zawartość do katalogu tymczasowego.
Składnia tego polecenia jest następująca:
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
W naszym przypadku oznaczałoby to:

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

Uwaga: Przy pierwszym uruchomieniu tego polecenia budowane są narzędzia mod-kit w systemie. zdarza się to tylko raz i może trochę potrwać ... więc bądź cierpliwy ...

Instalowanie pakietów

Teraz, po wyodrębnieniu oprogramowania, możemy zainstalować na nim pakiety.
Zasadniczo procedura polega na pobraniu pakietu i jego zależności w postaci pliku ipk z repozytorium openWRT. Po pobraniu zainstaluj je w wyodrębnionym oprogramowaniu układowym za pomocą dostarczonego skryptu.

Pakiet knockd

Szczegółowe instrukcje konfigurowania i używania Knockd zostaną szczegółowo opisane w przyszłym artykule, więc możesz teraz pominąć ten krok lub zrobić to w ramach przygotowań do przyszłości, ponieważ Knockd i tak nie zajmuje dużo miejsca.

Knockd to demon, który nasłuchuje zdarzeń komunikacyjnych w warstwie łącza dla sekwencji, a następnie działa na nich.
Oznacza to, że możesz sprawić, że urządzenie uruchomione przez demona nie będzie nawet "nasłuchiwało" na portach (skanowanie portów nie będzie ich widzieć jako otwarte) i nadal sprawi, że zrobi to, czego potrzebujesz, od pojedynczego polecenia do samego początku. do pełnego skryptu. Korzystając z tej techniki, możesz uruchomić serwer, aby wykonać dowolną operację, której potrzebujesz, zdalnie (przez Internet) bez narażania swojej sieci domowej.

Knockd ma tylko jedną listę zależną, więc pobierz pakiet i jego zależność, wydając:

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

Zainstaluj "knock daemon" (knockd) ipk w oprogramowaniu:

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

Zainstaluj "przechwytywanie pakietów" (libpcap) ipk w oprogramowaniu:

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

Ponieważ "knockd" może zostać wywołany przy pomocy alternatywnego pliku konfiguracyjnego (jak to zostanie wyjaśnione w przyszłym artykule), nie ma potrzeby wykonywania żadnej innej operacji i możesz przejść do sekcji tworzenia oprogramowania, jeśli jest to wszystko, co chcesz zainstalować.

Pakiet SSMTP

Pakiet SSMTP umożliwia routerowi wysyłanie wiadomości e-mail, tak jak pokazano to w naszym artykule Jak skonfigurować powiadomienia e-mail w systemie Linux Korzystanie z Gmaila lub SMTP dla serwerów. Obiecaliśmy wam wtedy, że pokażemy, jak skonfigurować to dla DD-WRT, a teraz dostarczymy.
Jest to szczególnie przydatne, jeśli zamierzasz tworzyć skrypty na routerze, które chcesz otrzymywać informacje zwrotne na temat ich działania za pośrednictwem poczty e-mail.

Konfiguracja tego pakietu jest nieco bardziej złożona niż w normalnych systemach Linux ze względu na ograniczenia nałożone przez system wbudowany, więc weź głęboki oddech ... gotowy? .... chodźmy… :)

Pobierz pakiet:

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

Zainstaluj "ssmtp" ipk w oprogramowaniu:

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

Obsługa TLS (opcjonalnie)
SSMTP nie wyświetla żadnych innych pakietów jako jego zależności, ale jeśli chcesz mieć możliwość korzystania z bramy SMTP, która wymaga uwierzytelnienia TLS (tj. Gmail), musisz zainstalować także pakiet openSSL.
Uwaga: Jest OGROMNY wada do zrobienia tego w postaci znacznie zmniejszonej przestrzeni na routerze dla JFFS później. Oznacza to, że pakiet openSSL zajmuje około 500K miejsca z ogólnej liczby 4 MB (dla normalnego, nie "mega" wspierającego routera), złożonego z tego narzutu JFFS, a odkryjesz, że pozostało ci z, ale cennymi, kilkoma blokami wolna przestrzeń JFFS (około 60 KB na WRT54GL).

Ponieważ wciąż nie ma TLS wymagających serwerów SMTP (zazwyczaj twoich ISP), sugeruję, abyś zastanowił się, czy naprawdę potrzebujesz użyć TLS wymagającego bramki.

Jeśli zdecydowałeś się włączyć obsługę TLS pomimo swojej wady, pobierz pakiet openSSL:

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

Zainstaluj plik "openSSL" (libopenssl) ipk w oprogramowaniu:

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

Konfiguracje
Istnieje ograniczenie pakietu SSMTP, że nie można go wywołać za pomocą alternatywnego pliku konfiguracyjnego.
Ponieważ oprogramowanie układowe jest tylko do odczytu, gdy znajduje się na routerze, oznacza to, że po wyjęciu z pudełka możemy jedynie zakodować kod konfiguracji w oprogramowaniu.
Co jednak, jeśli nie chcemy przechodzić przez wszystkie etapy modyfikacji oprogramowania, aby zmienić ustawienia poczty e-mail? (na przykład zmiana hasła).

W tym celu zarówno Jeremy (twórca oprogramowania mod-kit), jak i ja doszliśmy do wniosku (niezależnie, jeśli mogę pokornie dodać), że jedynym rozsądnym sposobem na zrobienie tego jest:

  1. Ustaw lokalizację plików konfiguracyjnych, którą pakiet ssmtp wskazuje na lokalizację tylko do odczytu w obszarze etc, wskaż katalog tmp, który można zapisać w czasie wykonywania.
  2. Utwórz skrypt, który dynamicznie generuje konfiguracje oparte na zmiennych NVRAM podczas uruchamiania.

Aby to osiągnąć, wymagane są dodatkowe kroki ...

Symlinkuj katalog konfiguracji ssmtp
Jak wyjaśniono powyżej, musimy zrobić / etc / ssmtp lokalizację na routerze, wskaż na / tmp katalog jako jedyne miejsce zapisu, jakie mamy na routerze w czasie wykonywania. Aby to zrobić, usuń katalog ssmtp utworzony przez instalator ipk:

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

Utwórz nowe dowiązanie symboliczne, które wskazuje / etc / ssmtp na główny system plików routera, aby wskazać / tmp / etc / ssmtp jako bezwzględną ścieżkę:

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

Uwaga: Chociaż obecnie wygląda to nielogicznie, ponieważ kierujemy katalog konfiguracyjny pakietu do lokalizacji spoza katalogu roboczego zestawu modyfikacji oprogramowania układowego, zapewniam, że wygląda to całkiem dobrze z punktu widzenia routerów w czasie wykonywania.

Skrypt init
Chociaż całkowicie nie można wprowadzić tego skryptu do oprogramowania układowego i uruchomić go później jako skrypt startowy, uważam, że należy go umieścić tutaj, jeśli tylko jako przykład do przyszłego użytku.
Pierwotnie Jeremy stworzył skrypt dostosowany do czyjegoś żądania, później dostosowałem go i zwiększałem, aby był bardziej kompatybilny z raportowaniem DD-WRT i syslog.

Utwórz nowy skrypt init (startowy):

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

Uwaga: możesz użyć innego edytora, używam vi, ponieważ jest zgodny z tym, co jest dostępne na routerze ...
Spraw, aby ta treść była:

#! / bin / sh
#
# title: ssmtp_nvram.sh
# autor: Jeremy Collake i Aviad Raviv
# site: http://www.bitsum.com, http://howtogeek.com
#
# skrypt do zbudowania pliku konfiguracyjnego z nvram vars.
# będzie działać dla dowolnego pliku konfiguracyjnego, który używa
# var = typ wartości par.
#
# używa prefiksów dla zmiennych nvram.
#
# tj.
# ssmtp_hostname = coś
# tłumaczy na ssmtp.conf
# hostname = coś
#
logger_func ()

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

logger_func "########### Uruchomiono uruchomienie init SSMTP ###########"
logger_func "Tworzenie katalogu etc w / tmp"
[! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
CONFIG_FILE = / etc / ssmtp / ssmtp.conf
NVRAM_PREFIX = ssmtp_
PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "

logger_func "Generowanie $ CONFIG_FILE dla pakietu $ PACKAGE_NAME"
#echo $ 0: generowanie $ CONFIG_FILE dla pakietu $ PACKAGE_NAME
echo "#! / bin / sh"> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
echo "# auto generowane na podstawie nvram przez $ 0" >> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE

jeśli [-z "'nvram show | grep ssmtp'"]
następnie
logger_func "Wygląda na to, że nie ustawiłeś zmiennych NVRAM wymaganych do wygenerowania pliku conf"
logger_func "** Zastanów się **, używając tych poleceń w twoim skrypcie startowym:"
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 = nazwa użytkownika"
logger_func "nvram set ssmtp_AuthPass = password"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "tworzy zmienne NVRAM i ponownie uruchamia skrypt startowy lub restartuje, aby ustawienia miały wpływ."
exit 0
fi

###########################################################
#
# główna pętla
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
dla mnie w $ CONFIG_VARS; robić
echo $ i >> $ CONFIG_FILE
Gotowe

###########################################################
#
# Sprawdzenie poczytalności
#
Jeśli [ ! -f "$ CONFIG_FILE"]; następnie
# echo "0 $: BŁĄD - nie można utworzyć pliku $ CONFIG_FILE. Być może nie ma pliku symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "BŁĄD - nie można utworzyć pliku $ CONFIG_FILE. Być może nie ma pliku symink / etc / XXXX -> / tmp / etc / XXXX?"
fi
logger_func "########### Zakończyłem uruchomienie init SSMTP ###########"

Spraw, aby był wykonywalny:

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

Zwróć uwagę na zmienne oczekiwania NVRAM w skrypcie, naszym obowiązkiem jest dać im coś do pracy po zainstalowaniu zmodyfikowanego oprogramowania na routerze.

Zbuduj zmodyfikowane oprogramowanie układowe

Teraz, gdy wszystko jest już gotowe, nadszedł czas, aby ponownie spakować zmodyfikowane oprogramowanie do skompresowanego pliku binarnego, który możemy przesłać do routera.
Składnia skryptu "build.sh" to:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

Aby to zrobić, używamy dostarczonego skryptu, więc wypróbuj:

./build_firmware.sh output_mini1 ./working_dir_mini1/

Po zakończeniu operacji "kompilacji" pojawi się kilka obrazów oprogramowania układowego czekających na użycie w katalogu "wyjściowym".

Możesz teraz flashować plik o nazwie "custom_image_00001-generic.bin" do swojego routera, tak jak normalnie zrobiłbyś oprogramowanie sprzętowe DD-WRT.

Uwaga: Nie zapomnij przywrócić "fabrycznych ustawień domyślnych" przed, w trakcie i zaraz po flashowaniu oprogramowania układowego.

Po wykonaniu flashowych kroków

Ponieważ stworzyliśmy pakiet SSMTP w poszukiwaniu zmiennych NVRAM w celu wygenerowania pliku konfiguracyjnego ssmtp, teraz musimy dostarczyć mu brakujące informacje.
Osiągniemy to za pomocą web-GUI "Uruchom polecenia".

Przejdź do web-GUI -> "administration" -> "commands" -> wklej w polu tekstowym:

nvram ustaw [email protected]
nvram set ssmtp_mailhub = smtp.gmail.com: 587
nvram ustaw [email protected]
nvram set ssmtp_UseSTARTTLS = YES
nvram set ssmtp_AuthUser = twoja-gmail-nazwa-użytkownika (bez @ gmail.com)
nvram set ssmtp_AuthPass = you-gmail-password
nvram set ssmtp_FromLineOverride = YES
Zatwierdzenie nvram

Zastąp tekst po znaku równości (=), z aktualnymi informacjami, a następnie naciśnij "Uruchom polecenia".
Uwaga: jeśli używasz zwykłego, nie używającego TLS, serwera SMTP, port do użycia to 25 zamiast 587.

Teraz, gdy informacje SSMTP są gotowe do użycia, będziesz musiał wywołać skrypt init. Możesz więc albo zrestartować router, albo wkleić go do pola tekstowego "polecenia":

/etc/init.d/S80ssmtp

Następnie ponownie naciśnij "Uruchom polecenia".
Dane wyjściowe tego polecenia powinny wyglądać następująco:

Sprawdź, czy możesz wysłać wiadomość e-mail
Ponownie wklej to w polu tekstowym "polecenia" następującym poleceniem z twoim adresem e-mail:

echo "testowanie tygla e-mail 123 qwe" | ssmtp -vvv [email protected]

Następnie ponownie naciśnij "Uruchom polecenia".
Ponieważ użyliśmy opcji -vvv dla dodatkowej szczegółowości, wynik tej komendy powinien wyglądać następująco:

Jeśli wszystko poszło dobrze, powinieneś otrzymać testowy e-mail w ciągu kilku sekund.

Mamy nadzieję, że możesz wykorzystać te informacje, aby przesunąć limity twojego domowego routera jeszcze dalej, niż myślisz, że to możliwe, a teraz naprawdę kontrolujesz swój domowy router i DD-WRT ...

Linux przedłuża życie, Linux rozszerza świadomość ... Linux jest niezbędny do podróży pakietów