] > Karol „Zal” Zalewski - Blog - http://blog.4zal.net/kategoria/hardware/linksys-wrt54gl/

Techblog: Linksys WRT54GL vs IPv6

2009-01-26, Poniedziałek 01:49:19 +0100, autor Karol „Zal” Zalewski, licencja LPRCTKC

Jakiś czas temu pisałem o tym, jak zdobyć swój własny numer IPv6. Problem z takim numerem (pozyskanym poprzez zestawienie tunelu) w małych, domowych sieciach, polega na tym, iż A] w przypadku zmiennego adresu IP tunel trzeba ręcznie przestawić na nowy adres oraz B] trudno w ten sposób przydzielić numeru IPv6 wszystkim komputerom w sieci lokalnej. Nie stanowi to jednak problemu dla posiadaczy kultowego, jeśli nie nawet legendarnego routera Linksysa WRT54. Posiadasz go, pożądasz numerów IPv6 dla całej sieci i nie wiesz jak się za całość zabrać? Zatem zapraszam do lektury.

Zacznijmy od wymagań, które nie są wygórowane:

  • router kompatybilny z DD-WRT,
  • DD-WRT v24-sp1 (wszystko poza wersjami VPN, Micro i Mini),
  • tunel IPv6 z Hurricane Electric.

Mając całość można zestawić całkiem stabilny tunel i wdrożyć IPv6 we własnej sieci. Przejdźmy do pierwszego punktu wdrożenia IPv6 w naszej sieci. Przystosujmy DD-WRT do działania z protokołem IPv6.

Przejdźmy do strony WWW odpowiedzialnej za konfigurację routera. W dziale Administration wybieramy kartę Management i wykonujemy zmiany w sekcji IPv6 Support:

  • IPv6: Enable,
  • Radvd enable: Enable,
  • Radvd config:

    interface br0 {
      AdvSendAdvert on;
      # Tutaj podajemy otrzymaną przez nas podsieć
      prefix 2001:470:1f0b:51d::/64
      {
        AdvOnLink on;
        AdvAutonomous on;
      };
    };

Teraz przechodzimy do działu Administration oraz karty Commands, w sekcji Startup dodajemy poniższy kod:

# ładowanie modułów wymaganych dla obsługi IPv6
insmod ipv6
insmod /jffs/lib/modules/2.4.34/ip6_tables.o
insmod /jffs/lib/modules/2.4.34/ip6table_filter.o
insmod /jffs/lib/modules/2.4.34/ip6t_multiport.o

# poniżej znajdują się dane otrzymane od HE, adres Linksysa w sieci lokalnej to 192.168.1.1
ip tunnel add he-ipv6 mode sit remote 216.66.80.30 local 192.168.1.1 ttl 64
ip link set he-ipv6 up
ip addr add 2001:0470:1f0a:51d::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip addr add 2001:470:1f0b:51d::1/64 dev br0

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
radvd -C /tmp/radvd.conf

Jeszcze tylko drobny dodatek do sekcji Firewall:

/usr/sbin/iptables -I INPUT 2 -p ipv6 -i vlan1 -j ACCEPT

Po restarcie powinniśmy uzyskać nie tylko tunel, którego końcem jest Linksys, ale również możliwość komunikacji w sieci przy pomocy automatycznie wygenerowanych numerów IPv6. Teraz należałoby zabezpieczyć się przed zmianą dynamicznie przydzielonego adresu IPv4, który jest wykorzystywany do zestawiania tunelu. Na całe szczęście, napisany przeze mnie skrypt wykorzystuje program wget, który jest dostępny w standardowej edycji DD-WRT.

Przechodzimy zatem do działu Administration oraz karty Commands i w sekcji Custom dodajemy poniższy kod:

ZMIENNA=`ifconfig | grep 'inet ' | tail -n 1 | cut -d' ' -f12 | sed s/addr://`

wget 'http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b='$ZMIENNA'&pass=TUTAJ_JEST_PASS&user_id=TUTAJ_JEST_USER_ID&tunnel_id=TUTAJ_ID_TUNELU' -O /dev/null

Niezbędne dane pozyskamy logując się na stronie HE (user_id oraz tunnel_id), a zmiennej pass nadajemy wartość będącą skrótem (MD5SUM) naszego hasła wykorzystywanego na stronach HE. Sam skrypt będzie po prostu informował (korzystając z IPv4) HE o zmianie nasze zewnętrznego IP, a zatem o zmianie położenia jednego z krańców tunelu. Aby miał on sens należy go wykonywać, co jakiś czas. W tym celu użyjemy Crona. Wystarczy przejść do działu Administration, wybrać kartę Management i wykonać zmiany w sekcji Cron:

  • Cron: Enable,
  • Aditional Cron jobs:

    */15 * * * * * sh /tmp/custom.sh &

Voila! Od teraz, po restarcie, całość powinna ładnie działać. Można się jeszcze dodatkowo pokusić o postawienie na routerze firewalla obsługującego IPv6, ale to historia na zupełnie nowy wpis. Natomiast do powyższego skryptu warto jeszcze dorzucić jeszcze aktualizację wpisów w FreeDNS.afraid.org - dzięki temu możemy stworzyć wpisy np. router.example.com, który zawsze będzie wskazywać poprawny adres IPv4 routera.

Całość stworzona dawno temu na bazie własnego doświadczenia oraz informacji dostępnych na DD-WRT Wiki.

PS. Jeżeli coś jest niezrozumiałego w powyższym tekście to piszcie śmiało! I nie przesadzajcie z długością własnych skryptów, są one zapisywane w NVRAM, a jeden z bugów w DD-WRT potrafi nadpisać bardziej istotne dane przy dłuższych skryptach. Lepiej wykonać SD-MOD routera i skrypty zapisywać na dysku, a w NVRAM jedynie odnośniki do nich.

Linksys WRT54GL: OpenVPN

2008-09-16, Wtorek 00:29:20 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

To już ostatni wpis dot. mojej zabawki. Do tej pory postawiłem na nim serwery DHCP, DNS, FTP, SSH, SVN, WWW oraz VPN (PPTP). Teraz przyszedł czas na OpenVPN (chociaż kusiło mnie coś opartego o IPSec).

Całość składa się z jednego skryptu na routerze, dwóch plików konfiguracyjnych (router oraz klienci) i certyfikatów w parze z kluczami. Co do samych kluczy to bardzo ładny opis ich tworzenia opisany jest w HOW-TO OpenVPN.

Teraz jeszcze tylko backup wykonam i koniec. Zero zabawy! ;-)

Subversion w 5 krokach: SVN, SASL, DD-WRT i Ubuntu

2008-09-10, Środa 19:21:03 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Posiadacze routerów Linksysa z serii WRT54GL (i innych) z pewnością myśleli kiedyś nad instalacją alternatywnego oprogramowania. DD-WRT/OpenWRT wraz z modyfikacją polegającą na dodaniu wsparcia dla kart SD to dobry początek, jeżeli myśli się o małym, cichym serwerze działającym w trybie 24/7.

Subversion Logo

Dzisiaj pokażę Wam, jak postawić na wspomnianym routerze (i nie tylko) serwer SVN ze wsparciem dla SASL. Do edycji plików polecam edytor Vi.

Po pierwsze: potrzebny nam jest dostęp do pakietów z OptWare. Opis instalacji wsparcia dla OptWare można znaleźć na Wiki projektu DD-WRT. Korzystając z poniższych komend na routerze należy zainstalować pakiety svn oraz cyrus-sasl wraz z zależnościami:

ipkg install svn
ipkg install cyrus-sasl

Po drugie: należy zatroszczyć się o to, aby serwer SVN był włączany przy każdym starcie routera. W skryptach startowych (DD-WRT: interfejs webowy, Administration -> Commands -> Startup) należy dodać poniższą linijkę:

/opt/bin/svnserve --daemon --root=/katalog_glowny_repo_SVN

Po trzecie: po utworzeniu własnego repozytorium (komenda svnadmin create nazwa_repo w katalogu głównym repozytoriów) warto zainteresować się plikami znajdującymi się w katalogu głównym repozytorium. Mowa o pliku /scieżka_do_repo/conf/svnserve.conf w którym to powinny znaleźć się następujące linie:

[general]
anon-access = read
auth-access = write
authz-db = authz

realm = Identyfikator_repo_bez_spacji

[sasl]
use-sasl = true
min-encryption = 0
max-encryption = 256

Zmienna realm jest tutaj niezwykle istotna. Dla każdej takiej zmiennej osobno będziemy dodawać użytkowników, dlatego też, jeżeli dwa repozytoria będą posiadać taką samą zmienną realm to będą też dzielić użytkowników mogących z nich korzystać. Zmienne min-encryption oraz max-encryption mówią o tym, jakie długości kluczy będą możliwe do wykorzystania podczas szyfrowania przesyłanych danych (0 - oznacza brak szyfrowania, 1 - jedynie podpis cyfrowy przesyłanych danych). Uwaga! Aby anonimowy użytkownik mógł pobierać dane z repozytorium bez podawania hasła zmienna min-encryption musi wynosić 0, a w poniżej opisanym pliku musi się znaleźć opcja ANONYMOUS. Warto też zatroszczyć się o istnienie pliku authz w katalogu z svnserve.conf z regułami dostępu do repozytorium (szerszy opis w samym pliku, który powstanie po utworzeniu nowego repozytorium).

Po czwarte: należy utworzyć plik /opt/lib/sasl2/svn.conf o następującej zawartości:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: ANONYMOUS DIGEST-MD5

Możliwe do wykorzystania mechanizmy (mech_list) są opisane w dokumentach zawartych katalogu /doc/ w paczce z Cyrus SASL. Skupmy się na umieszczonych powyżej - DIGEST-MD5 umożliwia autoryzowanie oraz szyfrowanie połączeń z użytkownikami zawartymi w pliku /opt/etc/sasl2 (powstanie po pierwszym utworzeniu użytkownika), który to musi posiadać uprawnienia umożliwiające odczytanie go przez program svnserve. ANONYMOUS umożliwia natomiast pobranie danych bez posiadania konta na serwerze SVN (konieczna jest modyfikacja w pliku svnserve.conf - patrz wyżej). Uwaga! Przy metodzie DIGEST-MD5 hasła w pliku sasl2 są przechowywane w formie czystego tekstu.

Jak dodać użytkownika? To proste - wystarczy wydać polecenie:

saslpasswd2 -c -u zmienna_realm nazwa_użytkownika

Pamiętajcie o tym, aby zmienna realm odpowiadała tej ustawionej w pliku konfiguracyjnym repozytorium. Po wydaniu polecenia zostaniecie poproszeni o dwukrotne powtórzenie hasła użytkownika i... to wszystko ;-) Serwer działa!

Wszystkich użytkowników w systemie można wylistować komendą sasldblistusers2, a usuwać komendą saslpasswd2 -d -u zmienna_realm nazwa_użytkownika.

Po piąte: Ubuntu 8.04 nie posiada we własnym repozytorium klienta w wersji wyższej, niż 1.4.x. Zaś klient w wersji 1.5.x jest wymagany w celu pełnej współpracy z serwerem SVN w ww. konfiguracji. Aby uzyskać dostęp do nowszego klienta należy dodać listy repozytoriów odpowiednie (zawierające nową wersję klienta) repozytorium. Należy to zrobić poprzez dodanie do pliku /etc/apt/sources.list następujących linii:

deb http://ppa.launchpad.net/clazzes.org/ubuntu hardy main
deb-src http://ppa.launchpad.net/clazzes.org/ubuntu hardy main

Teraz wystarczy zaktualizować listę pakietów (sudo aptitude update) oraz uaktualnić pakiet subversion.

Powyższa konfiguracja nie wymaga, aby każda osoba chcąca pobrać dane z serwera SVN posiadała własnego użytkownika oraz hasło. Może je pobrać anonimowo nie korzystając z szyfrowania. Tak, jak to robię poniżej:

svn checkout svn://svn.serwer.net/repozytorium

A tak wygląda zgłaszanie nowego kodu dla użytkownika, który spełnia odpowiednie reguły.

svn commit --username nazwa_użytkownika -m "Drobna zmiana"

Linksys WRT54GL: SD Mod

2008-09-08, Poniedziałek 19:11:46 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Wspomniana wcześniej próba modyfikacji routera Linksysa WRT54GL polegająca na instalacji 1 GB karty SD została zakończona sukcesem.

Linksys WRT54GL SD Mod

Zmieniłem nieco poprzednie plany i do instalacji całości wykorzystałem jedynie: kartę mikroSD z adapterem SD (13 PLN), taśmę klejącą oraz kawałek skrętki (w celu wydobycia 7 kabelków). Uznałem, iż wymiana karty będzie na tyle rzadka, iż nie trzeba robić otworów w obudowie, a jedynie dolutować kable idące od płyty głównej do adaptera SD, a całość przykleić pod płytą główną tak, jak to widać poniżej.

Linksys WRT54GL SD Mod - SD pod płytą główną

Wątpię, abym tam jeszcze kiedykolwiek zajrzał, ale w razie potrzeby demontaż obudowy nie jest pracochłonny, a adapter zamiast prawdziwej karty SD uchroni mnie od ponownego lutowania.

Linksys WRT54GL SD Mod - Menu DD-WRT

Obecnie mam zamiar postawić tam prosty serwer WWW, FTP oraz SVN-a zapewne :-) Odczyt/zapis z i na kartę wynosi około 250KiB/s, więc nie jest to demon prędkości, ale do zastosowań domowych z pewnością wystarczy.

Szczegóły techniczne dot. modyfikacji można znaleźć na Wiki OpenWRT. Naprawdę nic więcej do jej wykonania nie potrzeba, a spolszczenie ww. instrukcji byłoby niepotrzebne ;-]

[EDIT] Oprogramowanie warto dodawać korzystając z Optware. Router bez problemu radzi sobie z obsługą małego serwera WWW, FTP i SVN.

Miniblog: Linksys WRT54GL SD/MMC Mod

2008-09-07, Niedziela 15:43:12 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Spojrzenie na zdjęcie oraz na Wiki OpenWRT utwierdziło mnie w przekonaniu, iż dodanie do routera WRT54GL czytnika kart SD (lub samej karty SD) to zadanie proste, a do tego całkiem opłacalne. Jak tylko wyzdrowieję biorę się za działanie ;-D Na oku mam już czytnik oraz kartę SD. Ewentualnie kupię kartę MicroSD z przejściówką do SD i dolutuję się do przejściówki.

A jakbym zniknął na jakiś czas to znak, iż w ogóle nie znam się na podstawach lutowania ;->

Router Linksys WRT54GL + DD-WRT

2008-09-01, Poniedziałek 16:35:09 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Jako, iż Myszata potrzebuje w domu router bezprzewodowy postanowiłem oddać mojego wysłużonego już (niemal dwa lata pracy) D-Linka DI-524, a samemu zakupić legendarnego już Linksysa WRT54GL. Zawsze chciałem mieć coś, co przynajmniej stało obok sprzętu Cisco ;-)

Linksys WRT54GL + DD-WRT

Sam router... jest wart pieniędzy w niego zainwestowanych!

Z oryginalnym interfejsem WWW tego routera miałem do czynienia z 3 minuty i to tylko dlatego, iż był wymagany do wgrania DD-WRT. To ostatnie to alternatywne firmware dla wspomnianego routera oparte o Linuksa. Umożliwia ono nie tylko konfigurację routera z poziomu WWW (HTTP/HTTPS), ale również przy pomocy Telnetu/SSH. A co do samej funkcjonalności - polecam zajrzeć na Wiki projektu. Sprzęt do zastosowań domowych zyskał część możliwości nieco bardziej zaawansowanych urządzeń.

|