WRT54G/GS-WLAN-Router-Firmwares
(Stand: 19.07.2005)
Die Herstellerfirmware des Linksys WRT54G-Routers bietet eine Basisfunktionialität. Es gibt jedoch eine Reihe von Weiterentwicklungen
der Open Source-Firmware, die diesen preisgünstigen Router beträchtlich erweitern.
Sveasoft und das Dresdener
DD-WRT Projekt von Sebastian Gottschall haben
viele Verbesserungen implementiert.
Mit den Firmwares von OpenWRT.org und
Freefunk.net
habe ich noch keine Erfahrungen.
Bei der Vielzahl verschiedener Firmwares beschränke ich mich
hier auf die Versionen, die bei mir für die Internetanbindung schon im Einsatz waren bzw. sind.
Achtung: mit dem Einspielen dieser Firmwares verliert man die Linksys-Herstellergarantie. Vor dem Flashen
sollte man den Router auf die Hersteller-Defaults zurücksetzen, dabei verliert man die zuvor getroffenen
Einstellungen (neuere Firmwares bieten ein Backup als Downloaddatei). Eine Anleitung zum Flashen des WRT54G findet man bei freifunk.net.
Sollte es Probleme gegeben haben und der Router ist nicht mehr ansprechbar, findet man hier,
hier und
hier nützliche Hinweise zum Wiederbeleben des Routers.
Features der eingesetzten Sveasoft/DD-WRT-Firmware
Folgende Features sind für mich besonders wichtig und nützlich:
- Client-Modus, Basis für meine Internetanbindung. Der WRT54G verhält sich zum Access Point wie eine Netzwerkkarte. Der Zugriff wird über die 4 LAN-Ports auf anschlossene Rechner verteilt (geswitcht).
- MAC-Adressencloning: für die Authentifizierung durch den Provider, wenn man die Anbindung mit verschiedenen Rechnern nutzt. Nach außen ist immer die gleiche MAC-Adresse sichtbar.
- Einstellbare Sendeleistung: beim Betrieb mit Antennen mit hohem Gewinn (Leistung verringern) oder langem Anschlußkabel (Leistung erhöhen) ist es erforderlich die Sendeleistung anzupassen um innerhalb
der erlaubten 20 dB zu bleiben. Ungekühlt sollte man 84 mW Sendeleistung (default mit den 2 dBi-Antennen: 28 mW, max. 251 mW) nicht überschreiten.
- Antennenwahl: man kann einstellen, ob beide Antennen automatisch gewählt werden oder ob die linke nur zum Senden und die rechte nur zum Empfangen genutzt wird (oder umgekehrt :-)
- SNMP-Unterstützung: Damit man den Router und seine Betriebsparameter (Durchsatz, CPU-Last, Netzwerkparameter) von außen automatisiert abfragen kann, z. B. mit MRTG.
- DynDNS-Unterstützung: Der Router kann seine IP bei den DynDNS-Diensten DynDNS.org, TZO.COM oder ZoneEdit.com mitteilen und updaten, so daß man keinen zusätzlichen DynDNS-Client braucht.
- NTP-Unterstützung: Der Router fragt Uhrzeitserver im Internet ab, damit er seine Logmeldungen mit genauer Zeit schreiben kann.
- Statusbildschirm: In Verbindung mit der DD-WRT-Firmware zeigt der Router über das Webinterface einen sehr informativen Statusbildschirm.
Sveasoft Alchemy-pre5.2.2 v2.09.1.8sv (26.08.2004 installiert)
Ein "Backup" der Routereinstellungen in Form von gespeicherten Administrationsbildschirmseiten ist möglich z. B. mit
GNU-wget 1.8.2 von Hrvoje Niksic:
wget -r --convert-links --html-extension --proxy=off --http-user="" --http-passwd=<Admin-PW> http://<Router-IP>
Es lädt einfach alle Seiten des Web-Administrationsfrontends auf den Rechner runter. Dieses Verfahren funktioniert auch
mit den folgenden Firmwares einwandfrei, dabei wird dann auch die Parameter-Backupdatei runtergeladen.
Sveasoft Alchemy-pre5.3 v2.04.4.8sv (02.10.2004 installiert)
Unterstützt nun ein Backup der Geräteinstellungen mittels
download- und restorebarer Datei. Auf der Status/Wireless-Seite kann man nun mit dem Survey-Button auf einfache Art alle gescannten Netze anzeigen lassen, dies
trennt jedoch anders als "wl scan, wl scanresults" in der Telnet-Session eine laufende Verbindung und auch eine evtl. laufende Telnet-Sitzung. Die Abfrage
der Routerparameter mittels SNMP und damit der Einsatz von MRTG funktioniert damit auch. Meine Konfigurationseinstellungen
mit Stand Alchemy pre5.3 finden sich hier.
Sveasoft Alchemy-6.0-RC1.w42 v2.04.4.8sv (17.12.2004 installiert)
Scheint realistischere Angaben über die CPU-Last
an die SNMP-Schnittstelle zu liefern, auf jeden Fall ist die angezeigte CPU-Last seit Installation der 6.0 deutlich höher.
Sveasoft listet u. a. folgende Features für die Alchemy-Firmware 6.0 auf:
PPTP VPN Server, 2-Weg-Bandbreiten Management (incl. P2P, VoIP, IM),
SSH Client & Server, Telnet, Startup-, Firewall-, und Shutdown Skripte,
WDS Repeater Modus, Client Modus (unterstützt mehrere angeschlossene Rechner),
Adhoc-Modus, OSPF-Routing, RIP2-Routing, Antennenleistung regelbar bis 251 mW,
Antennenauswahl (rechts, links, automatisch), statische DHCP-Adreßzuordnung,
DynDNS Unterstützung (DynDNS.org, TZO.com, ZoneEdit.com),
WLAN MAC-Adressencloning, VLAN support (hardware only), WPA over WDS,
WPA/TKIP mit AES, P2P-Blocking/Bandbreiten Management (Gnutella, Kazaa, ...),
Port Triggerung, Wake-On-Lan, Übertragung von Ntop Statistiken und Syslog-Meldungen an Client-Rechner,
SNMP, Konfigurations-Backup and -Restore,
automatischer Reset nach Firmware-Update, Status-Bildschirm und SNMP-Meldungen mit System Uptime
und CPU-Lastdurchschnitt, Statusanzeige von WLAN-Clients und WDS, AcessPoint-Scananzeige, Unterstützung
von NTP-Zeitservern.
Sveasoft Alchemy-6.0-RC5a v3.01.3.8sv (05.01.2005 installiert)
Verschiedene Bugfixes und Verbesserungen in der Firewall. Download der GPL-Code Firmware bei
Sveasoft (Voraussetzung: 20 US$-Supportaccount) oder einem der "TheIndividual"-Mirrors (kostenlos).
Sveasoft Alchemy-6.0-RC4a FBN Edition (DD-WRT V.16 (?)) (24.01.2005 installiert)
Die von dem Deutschen "BrainSlayer" erweiterte Firmware "DD-WRT", die offenbar für den
Förderverein Bürgernetz Dresden e. V. entstand.
Die Firmware zeigt eine umfangreiche Statusseite
des Routers an, beinhaltet einen Samba-Client zum Mappen von Windows-Shares. Sie kann automatisiert
Scripte von den Samba-Shares starten und besitzt einen WRT-radauth-basierten Radius Server u. Client, den man
allerdings nur im AP-Modus und nicht im Client-Modus nutzen kann. An die normalen Administrationsseiten kommt man
über den "Admin Link" unten rechts.
Alchemy-6.0-RC5a FBN-Edition #19 (auch: DD-WRT V.19) (27.01.2005 installiert)
Die Statusseite ist nun abschaltbar und es sind mehr Firewall-Optionen freigeschaltet. Das Backup/Restore der Einstellungen funktioniert wieder.
Der Scan nach APs von der WLAN-Statusseite funktioniert in dieser Version nicht, wohl aber im Nachfolger #20.
Die Version unterstützt den Rflow Collector, eine Software zum Anzeigen des Traffics der angeschlossenen WRT-Clients.
Alchemy-6.0-RC5a FBN-Edition #20 (auch: DD-WRT V.20) (08.02.2005 installiert)
Die Access Point-Survey auf der Seite Status/Wireless funktioniert noch immer nicht (Absturz des Webinterfaces), die Site Survey
in der Telnet-Sitzung mit wl scan; wl scanresults ist aber für mich ausreichend. Auf der Seite Security/Firewall
sind noch Filteroptionen für Multicast, Internet NAT Redirection und Ident (Port 113) dazugekommen.
Hier die Statusseite, die man mit der Option Administration "Info on Start" aktivieren kann. Sie wird ohne Paßwort
direkt auf Startseite des Router (also etwa: http://192.168.1.1/ bzw. als http://192.168.1.1/Info.htm) angezeigt. Unten rechts der Verweis auf das DD-WRT
Projekt:
Die Optionen auf der Firewallseite:
DD-WRT #21c (05.03.2005 installiert)
Die Änderungen sind äußerlich kaum sichtbar: Aus markenschutzrechtlichen Gründen sind die Verweise auf Sveasoft aus dem Webinterface entfernt worden.
Die Firmware wurde weiter modularisiert, besitzt nun ein LZMA basiertes SquashFS Dateisystem (die Firmware ist nun kleiner) und KAID Unterstützung für die XBOX.
Die Site-Survey im Webinterface liefert immer noch kein Ergebnis, aber auch keinen Absturz.
Ausschnitt der Optionen auf dem Administrationsbildschirm:
Sveasoft Alchemy-6.0-RC7a (noch nicht installiert), im LinksysInfo.org-Forum gibt es aber bereits einen
Download-Link für registrierte User zur Sveasoft Alchemy 1.0-Firmware (Talisman) incl. den Quellen.
Ausblick:
DD-WRT #22+
Mit Chillispot (damit kann der Router im AP-Modus eine Anmeldeseite anzeigen, die eine Art lokale Hotspots mit Autorisierung ermöglicht), einem beschreibbaren Dateisystem wie bei OpenWrt und Kompatibilität zu OpenWrt, so daß man
OpenWrt-Module, die keine Konfiguration mittels Web-Interface benötigen, direkt übernehmen kann.
Das Changelog von #22 prefinal 4: kaid mac config fixed, chillispot startup fixed, wireless advanced helpfile updated, wireless advanced fixed,
Wireless short/long preamble selection added, wireless access option added in wireless advanced menu, chillispot dhcp interface selection (LAN, WAN, LAN + WLAN),
chillispot additional configuration added, client leases stored to jffs2 added (if enabled), multilanguage support for German, Spanish, French, Italian,
web server improved, several web bugs fixed, the jffs2-filesystem is working now, firmware splittet in 2 versions:
basic = does not contain dropbear, chillispot, samba and kaid and full = all features of the common firmware.
Die Firmware ist modular in einzelne Module gegliedert, die man je nach Bedarf runterladen und im Router installieren kann. Ähnliches plant
auch Sveasoft für die kommende Talisman-Firmware.
Scannen von Access Points
Um nach Access Points zu scannen, kann man folgendes Script in einer Telnet-Sitzung starten:
while [ 1 ]; do wl scan; sleep 3; wl scanresults; sleep 10; done
Um die Antennen Richtung Access Point genau auszurichten, kann man sich die Signalstärke seines AP kontinuierlich ausgeben lassen.
Man startet eine Telnet-Sitzung zum Router und fügt das folgende Script mit Cut & Paste ein:
while [ 1 ]; do CH=`wl channel|grep target|cut -c16-`; MAC=`wl assoclist|cut -d' ' -f2`; RA=`wl rate|cut -d' ' -f3`;RSSI=`wl rssi|cut -d' ' -f3`;
NOISE=`wl noise|cut -d' ' -f3`;let SNR="$RSSI- $NOISE";echo "MAC=$MAC Kanal $CH: Rate=$RA RSSI=$RSSI Noise=$NOISE SNR=$SNR"; sleep 1; done
Das Script führt in einer Endlosschleife nacheinander die Befehle wl channel, wl assoclist, wl rate, wl rssi, wl noise aus, formatiert
das Ergebnis mittels grep und cut zu der Ausgabezeile und wartet dann 1 s bis zur nächsten Wiederholung.
Das Ergebnis sieht dann beispielsweise so aus (knapp eine Zeile pro Sekunde):
MAC=00:0B:6B:32:A7:83 Kanal 10: Rate=11 RSSI=-63 Noise=-91 SNR=28
MAC=00:0B:6B:32:A7:83 Kanal 10: Rate=11 RSSI=-64 Noise=-91 SNR=27
MAC=00:0B:6B:32:A7:83 Kanal 10: Rate=11 RSSI=-64 Noise=-90 SNR=26
MAC=00:0B:6B:32:A7:83 Kanal 10: Rate=11 RSSI=-63 Noise=-91 SNR=28
MAC=00:0B:6B:32:A7:83 Kanal 10: Rate=11 RSSI=-63 Noise=-92 SNR=29
...
MAC-Adresse des Access Points, Kanalnummer, Übertragungsrate in Mbps, Signalstärke in dB, Noise in dB, Signalrauschabstand in dB (dieser sollte mindestens 10 dB betragen).
Man kann sich auch die SSID anstelle der MAC-Adresse ausgeben lassen:
SSID="www.Free42.de IntraPark ruc-2" Ch 10: Rate=11 RSSI=-63 Noise=-90 SNR=27
SSID="www.Free42.de IntraPark ruc-2" Ch 10: Rate=11 RSSI=-64 Noise=-91 SNR=27
SSID="www.Free42.de IntraPark ruc-2" Ch 10: Rate=11 RSSI=-63 Noise=-90 SNR=27
SSID="www.Free42.de IntraPark ruc-2" Ch 10: Rate=11 RSSI=-62 Noise=-91 SNR=29
SSID="www.Free42.de IntraPark ruc-2" Ch 10: Rate=11 RSSI=-63 Noise=-91 SNR=28
mit diesem Script:
while [ 1 ]; do CH=`wl channel|grep target|cut -c16-`; SID=`wl ssid|cut -c15-`; RA=`wl rate|cut -d' ' -f3`;RSSI=`wl rssi|cut -d' ' -f3`;
NOISE=`wl noise|cut -d' ' -f3`;let SNR="$RSSI- $NOISE";echo "SSID=$SID Ch $CH: Rate=$RA RSSI=$RSSI Noise=$NOISE SNR=$SNR"; sleep 1; done
Manchmal möchte man den Verkehr auf bestimmten Ports (z. B. FTP Port 21 oder P2P-Ports) drosseln, damit diese zwar laufen, aber
noch ausreichend Bandbreite für andere Zwecke übrig bleibt. Da der WRT54G unter Linux läuft, kann man auch Standard-Linux Traffic Shaping-Tools
wie tc (traffic control) einsetzen. Leider ist die Bedienung mit den vielen Parametern sehr kryptisch. Das Samba-Share-Laufwerk der DD-WRT-Firmware
kann dabei das Laden des Shell-Skripts vereinfachen. Im Berliner Quake-Forum fand ich folgendes Beispiel, welches Port 1234 auf 8 kbit/s begrenzt
und einen guten Eindruck der tc-Parameter gibt:
tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
tc class add dev eth0 parent 1: classid 1:1 cbq rate 8kbit allot 1500 prio 5 bounded isolated
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip sport 1234 0xffff flowid 1:1
tc qdisc add dev eth0 parent 1:1 sfq perturb 10
Weiterführende Links:
Firmware-Links