Pimp My WRT54G

WRT54GWer einen Router unter Linux betreiben will und kein Vermögen für Hardware und Stromrechnung aufbringen kann, findet mit dem WRT54G von Linksys in Verbindung mit OpenWRT eine geniale Alternative. Den Router bekommt man für zirka 65€ bei Fachhändler um die Ecke oder bei Amazon. Die Originalfirmware wird den meisten Benutzern ausreichen, wer allerdings mehr aus seiner Hardware rauskitzeln will, bekommt hier eine auf Linux basierende Firmware mit vielen Features. Wem z.B. die Sendeleistung seines herkömmlichen WLAN-Routers nicht ausreicht, kann mit OpenWRT die TX-Power auf bis zu 251 mW hochschrauben, in Deutschland zulässig sind allerdings maximal 100 mW! Das Einspielen einer neuen Firmware geschieht auf eigenes Risiko und führt zum Garantieverlust! Man benötigt lediglich tftp, welches z.B mit Knoppix erledigt werden kann. Dazu wechselt man ins gleiche Verzeichnis wie die OpenWRT Firmware und tippt folgende Kommandos ein:

tftp 192.168.1.1
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> trace
Packet tracing on.

Die Folgende Zeile schon mal eintippen (admin = zuletzt verwendetes Passwort), aber noch nicht ENTER drücken … Stromstecker ziehen, wieder rein machen … kurz warten bis alle LED’s vom Switch aus sind und dann ENTER drücken …

tftp> put openwrt-xxx-x.x-xxx.bin admin

Jetzt muss man einige Minuten warten, bis der Router zum ersten mal gebootet hat. Danach kann man sich über Telnet einloggen:

telnet 192.168.1.1
passwd
exit
ssh root@192.168.1.1

Wenn ihr folgendes zu sehen bekommt, hab ihr es geschafft:

BusyBox v1.00 (2005.11.23-21:46+0000) Built-in shell (ash)

Enter 'help' for a list of built-in commands.
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M

 WHITE RUSSIAN (RC4) -------------------------------
  * 2 oz Vodka   Mix the Vodka and Kahlua together
  * 1 oz Kahlua  over ice, then float the cream or
  * 1/2oz cream  milk on the top.
 ---------------------------------------------------
root@OpenWrt:~#

Als nächstes kann man eine ADSL Verbindung via PPPoE einrichten:

nvram set wan_ifname=ppp0
nvram set wan_proto=pppoe
nvram set ppp_mtu=1492
nvram set ppp_username=benutzer@provider.de
nvram set ppp_passwd=zugangspasswort
nvram commit
reboot

Wer prüfen will, ob eine Internetanbindung besteht kommt hiermit weiter:

ifconfig ppp0
ping google.de (abbrechen mit strg+c)

Um sein WLAN zu konfigurieren sollte man zuerst ein Update der Paketlisten machen und danach die erforderlichen Programme (nas, wl) über das Internet installieren:

ipkg update
ipkg install nas
ipkg install wl

Wenn beide Pakete eingespielt sind, geht es an die Konfiguration. Die derzeit sinnvollste Verschlüsselungsart im Privatbereich ist WPA/AES:

nvram set wl0_mode=ap
nvram set wl0_ssid=irgendwas
nvram set wl0_infra=1
nvram set wl0_closed=0
nvram set wl0_channel=2
nvram set wl0_akm=psk
nvram set wl0_crypto=aes
nvram set wl0_wpa_psk=irgendeinschluessel
### Sendeleistung erhöhen (zulässig in D sind nur 100 !)
nvram set txpwr=251
nvram commit
reboot

Danach sollte man noch einen Nameserver angeben, das folgende Beispiel zeigt zwei von Versatel. Natürlich kann man auch die eines anderen Providers angeben:

echo "nameserver 62.72.64.237" > /etc/resol.conf
echo "nameserver 62.72.64.241" >> /etc/resol.conf

Jetzt gehts an die Firewall … dazu löscht man erstmal das Firewall-Scipt, welches auf den ROM verlinkt und kopiert es an die vorherige Stelle. Jetzt kann man das Script editieren und damit an seine eigenen Bedürfnisse anpassen:

rm /etc/firewall.user
cp /rom/etc/firewall.user /etc/firewall.user
vim /etc/firewall.user

Die Grundkonfiguration ist schon gehärtet und verwirft alle nicht angeforderten Pakete am WAN Port. Wer seinen Router über SSH erreichen will, muss seine Firewall aufbohren. eMule lässt sich über Portforwarding optimieren. Der Inhalt der Datei sollte dann wie folgt ausschauen:

#!/bin/sh
. /etc/functions.sh

WAN=$(nvram get wan_ifname)
LAN=$(nvram get lan_ifname)

iptables -F input_rule
iptables -F output_rule
iptables -F forwarding_rule
iptables -t nat -F prerouting_rule
iptables -t nat -F postrouting_rule

### SSH am WAN Interface
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT

### Port forwarding
# aMule auf 192.168.1.2
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 4662 -j DNAT --to 192.168.1.2
iptables        -A forwarding_rule -i $WAN -p tcp --dport 4662 -d 192.168.1.2 -j ACCEPT
iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 4672 -j DNAT --to 192.168.1.2
iptables        -A forwarding_rule -i $WAN -p udp --dport 4672 -d 192.168.1.2 -j ACCEPT

Nach dem editieren der firewall.user kann man jetzt noch eine kleine Optimierung durchführen. Dazu muss man das init Script der Firewall öffnen und die Zeilen 43 und 44 auskommentieren. Danach sollten die IPTables durch einen Neustart auf den aktuellen Stand gebracht werden:

vim /etc/init.d/S45firewall
/etc/init.d/S45firewall restart

Wer sein Heimnetz über das Internet fernadministrieren will, oder einen eigenen Server betreibt, kommt mit dynamischen DNS weiter. Zuerst gilt es einen Account unter dyndns.org anzulegen. Danach muss man die entsprechende Software auf dem Linksys installieren:

ipkg install ez-ipupdate

Danach sollte man ein init Script anlegen, welches die IP bei DynDns auf dem aktuellsten Stand hällt.

vi /etc/init.d/S70ez-ipupdate

#!/bin/sh
case "$1" in
start)
/usr/sbin/ez-ipupdate -d /tmp/ez-ipupdate.pid -S dyndns -u benutzername:passwort -h benutzername.dyndns.org -i ppp0
;;
stop)
kill -9 `cat /tmp/ez-ipupdate.pid`
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

Zuletzt setzt man noch die Berechtigungen auf ausführbar:

chmod +x /etc/init.d/S70ez-ipupdate
reboot

That’s it ;)