[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [LOESUNG] Re: WLAN-Bridge mit WPA2 aus Linksys WRT54G ver. 2 als Client bauen


Hallo nochmal,

On Sun, Oct 24, 2010 at 06:09:45PM +0200, Raphael Eiselstein wrote:
> dd-wrt bietet fuer mein Geraet gleich mehrere Standard-Images an, 2 davon
> speziell fuer TFTP oder WEB-Upload, diese Images sind kleiner! Das
> vorhandene Sveasoft Alchemy konnte das Firmware Update per WebGUI. Ich
> bin mir nicht mehr sicher, ob ich "Firmware Defaults" oder "Factory
> Defaults" verwendet habe. 

Weil es so gut funktioniert hat, habe ich einen 2. WRT54G, der noch in
einer Kiste lag und mit unbekannter Firmware und Config ... 

Hier hatte ich kein WebGUI zur Verfuegung, also die Gelegenheit genutzt, 
mal ein Firmware-Image per TFTP hochzuladen.

Grundsaetzlich funktioniert das wohl so:

Der WRT54G hat einen Bootloader, der bevor die Firmware bootet
seinerseits temporaer einen tftp-Server auf 192.168.1.1 startet. Das ist
von der "boot_wait"-Option abhaengig, die gesetzt sein *sollte*.

Bootet man den WRT54G (Strom aus/ein), so hat man fuer die Dauer von ein
paar Sekunden (2sec?) nach dem "Aufblinken aller LEDs" die Moeglichkeit
ein Firmware-Image hochzuladen. 


Zb so (und damit auch gleich erstmal ein Fehlversuch):
-----------------------------------------------------------------------
# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up ; atftp --put \
--local-file=/home/rabe/Downloads/dd-wrt.com/dd-wrt.v24_mini_generic.bin \
 --verbose --tftp-timeout=30 --trace --option "mode octet" 192.168.1.1

Verbose mode on.
Trace mode on.
Option mode = octet
sent WRQ <file: /home/rabe/Downloads/dd-wrt.com/dd-wrt.v24_mini_generic.bin, mode: octet <>>
received ACK <block: 0>
sent DATA <block: 1, size: 512>
tftp: error received from server <code pattern incorrect>
tftp: aborting
-----------------------------------------------------------------------

<exkurs: wieso das ifconfig?>
Was tut das? Der Laptop, an dem ich den WRT54G angeschlossen habe, ist
auf DHCP konfiguriert. Sobald der Carrier vom LAN verloren geht,
resettet sich das ganze IP-Setup und er versucht per DHCP seine
IP-Adresse zu erneuern. Da der Switch gepowercyclet wird, geht der
Carrier kurz verloren, der atftp-Aufruf wuerde also fehlschlagen, weil
keine IP-Adresse am Interface anliegt. Daher das vorgelagerte "ifconfig"

Abhilfe waere vermutlich einen SWitch dazwischen zu schalten, der 
den Carrier haelt. Allerdings kann der Switch in der Mitte zu lange brauchen
bis er den Port zum WRT54G ausgehandelt hat (auto negotiation), daher
kann das anderweitig zu Problem fuehren.)</exkurs>

Grundsaetzlich hat der tftp-Zugriff im obigen Beispiel funktioniert, es 
wurde der erste Datenblock uebertragen, dann allerdings bricht das Ganze 
wieder ab mit "error received from server <code pattern incorrect>". Ich 
dachte erst, dass dieser WRT54 defekt ist, shl hat mir daraufhin
http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash empfohlen.

Ich habe es mit dem dort beschriebenen "30/30/30-Reset" versucht, laut
LED-Diagnose musste der Bootloader aber intakt sein. 

Nach einigem Raetesraten: dd-wrt.v24_mini_generic.bin wird nicht
anerkannt, stattdessen muss die Datei dd-wrt.v24_mini_wrt54g.bin
hochgeladen werden, was dann auch prompt funktioniert hat (vermutlich:
E_RTFM)

<exkurs: Der Unterschied von _mini_generic.bin zu _mini_wrt54.bin ist...>

# diff -u \
<(hexdump -C ~rabe/Downloads/dd-wrt.com/dd-wrt.v24_mini_generic.bin | \
  head -n 5 |sed -e 's,^[0-9]* ,ADDR,g')  \ 
<(hexdump -C ~rabe/Downloads/dd-wrt.com/dd-wrt.v24_mini_wrt54g.bin | \
  head -n 7|sed -e 's,^[0-9]* ,ADDR,g') 

--- /dev/fd/63  2010-10-25 00:14:07.336623392 +0200
+++ /dev/fd/62  2010-10-25 00:14:07.336623392 +0200
 -1,3 +1,5 @@
+ADDR 57 35 34 47 00 00 00 00  09 0a 0a 04 14 06 55 32 |W54G..........U2|
+ADDR 4e 44 01 00 1f 00 00 00  00 00 00 00 00 00 00 00 |ND..............|
 ADDR 48 44 52 30 00 20 2f 00  f4 e6 42 9a 00 00 01 00 |HDR0. /...B.....|
 ADDR 1c 00 00 00 a8 09 00 00  00 4c 0e 00 1f 8b 08 00 |.........L......|
 ADDR 00 00 00 00 02 03 8d 57  4d 6c 54 d7 15 fe de 7d |.......WMlT....}|

... mini_wrt54g.bin hat einen 32 Byte grossen Header vor dem
*eigentlichen* Firmware-Image (_mini_generic.bin) 
</exkurs>


Nach einer kurzen Wartezeit (ca 1min) ist der wrt54 dann mit der neuen
dd-wrt Firmware gebootet. Mein Laptop hat daraufhin auf eth0 die IP
192.168.1.140 bezogen, damit konnte ich dann via http://192.168.1.1/
auf das Webinterface zugreifen. 

Ueber das Webinterface habe ich dann noch das etwas geraeumigere 
dd-wrt.v24-13064_VINT_std.bin hochgeladen und mit Firmware-defaults 
resettet. Nochmal reboot, nochmal Init-Config via http://192.168.1.1/ 
und dann fertig konfiguriert.

Unterm Strich habe ich jetzt folgendes: Eine Fritz!Box mit 2 WLANs:
"rabennetz" und "rabenguests", wobei letzteres isoliert ist. Fuer jedes
der beiden WLANs habe ich nun einen WRT54G als WLAN-Client mit
Layer2-Bridge auf jeweils 5(!) Ethernet-Ports, an die ich beliebige
devices wie etwa Drucker anschliessen kann oder aber auch Rechner uebers
Internet installieren kann (boot-image, Installation via FTP), ohne mich
mit einem WLAN-Setup rumschlagen zu muessen. 

Sinn der Aktion: Netzwerk im Hobbykeller ohne Bohren und Leitungen 
verlegen (schafft immerhin nominell 48/54MBit). Das "Gaeste-WLAN" mit
einem weiteren WRT54G-Client soll unkompliziert fremde Systeme (Laptops 
etc) ins Internet bringen ohne irgendwelches WLAN-Setup treiben zu muessen
(was ja parallel trotzdem moeglich ist).

Genug gebastelt fuer heute. 

Gruss
Raphael

-- 
Raphael Eiselstein <rabe@xxxxxxxxx>               http://rabe.uugrn.org/
xmpp:freibyterægmx.de  | https://www.xing.com/profile/Raphael_Eiselstein   
GnuPG:                E7B2 1D66 3AF2 EDC7 9828  6D7A 9CDA 3E7B 10CA 9F2D
.........|.........|.........|.........|.........|.........|.........|..



-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/