Uwolnij nawet więcej mocy z domowego routera z modułem DD-WRT Mod-Kit
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ć za pomocą DD-WRT Mod-Kit.
Jeśli jeszcze tego nie zrobiłeś, koniecznie sprawdź dwa poprzednie artykuły z serii:
- Zamień 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
Niniejszy przewodnik zawiera szczegółowy opis tworzenia własnego oprogramowania sprzętowego 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 użycia 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ę, że zwalnia Cię z zależności JFFS przy instalacji pakietów, co dla prawdziwych problemów z routerami z tylko 4 MB pamięci flash.
Zdjęcie autorstwa publicenergy
Cele
Instrukcje dotyczące tej procedury są szczegółowo omówione na 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 odfiltrowania (jak z kolei jest to bezużyteczny klocek). Jednak jeśli jesteś prawdziwym geekem, prawdopodobnie podpisujesz się pod ideologią, że ten, kto potrafi coś zniszczyć, kontroluje coś i tylko prawdziwi geekowie to robią
Wymagania wstępne
- 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, ze względu na zastosowanie poniższych procedur.
- 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 jednego z nich..
- 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 do rozpoczęcia będzie nasz Turn Your Home Router w super-zasilany router z przewodnikiem DD-WRT.
- Twój router musi obsługiwać przynajmniej "mini" wersję DD-WRT.
- 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.
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 ci 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ę korzystanie z najnowszej wersji dostępnego oprogramowania, ponieważ mają one często wiele błędów 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 komendach:.
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 nazwa pliku została zmieniona.
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ć pakiety.
Ogólnie rzecz biorąc, 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 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 je 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 wyzwolić 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 być wywołany z alternatywnym plikiem konfiguracyjnym (jak wyjaśniono 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 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 skomplikowana 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 zrobić to 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 twój lewy z, ale cennymi, kilkoma blokami wolna przestrzeń JFFS (około 60 KB na WRT54GL).
Ponieważ nadal 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
W pakiecie SSMTP istnieje ograniczenie, ż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 tylko 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 konkluzji (niezależnie, jeśli mogę pokornie dodać), że jedynym rozsądnym sposobem na zrobienie tego byłoby:
- Utwórz 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.
- 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, zapewniam cię, że wygląda to całkiem dobrze z punktu widzenia ruterów w czasie wykonywania.
Skrypt init
Chociaż nie można całkowicie 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 wykorzystania w przyszłości..
Pierwotnie Jeremy stworzył skrypt dostosowany do czyjegoś żądania, później dostosowałem go i wzbogaciłem, by 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 przedrostków dla zmiennych nvram.
#
# ie.e.
# 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 "utwórz zmienne NVRAM i ponownie uruchom skrypt init lub uruchom ponownie, aby ustawienia odniosły skutek."
exit 0
fi
################################################## #########
#
# główna pętla
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
dla i w $ CONFIG_VARS; robić
echo $ i >> $ CONFIG_FILE
Gotowe
################################################## #########
#
# Sprawdzenie stanu psychicznego
#
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 oprogramowanie sprzętowe DD-WRT.
Uwaga: Nie zapomnij przywrócić "fabrycznych ustawień domyślnych" przed, w trakcie i zaraz po flashowaniu oprogramowania układowego.
Post flash steps
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 "Run commands".
Przejdź do interfejsu GUI -> "administration" -> "commands" -> wklej w polu tekstowym:
nvram set [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ąć granice routera domowego jeszcze bardziej, 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