OpenWRT
Router
leider nicht multiple ssid fähig (kein node und ap gleichzeitig)
Flashen
a) Image bauen
Kamikaze scheint bei mir nicht zu funktionieren, daher Attitude Adjustment.
$ cd Open...
$ make image PROFILE="ARV4520PW" PACKAGES="-atm-tools -linux-atm -kmod-atm -kmod-ltq-dsl-danube -kmod-ltq-dsl-firmware-b-danube -kmod-pppoe -kmod-ppp -kmod-pppox -kmod-pppoa -ppp-mod-pppoa -ppp-mod-pppoe -ppp -kmod-ltq-dsl -ltq-dsl-app -wpad-mini -br2684ctl olsrd freifunk-common freifunk-firewall horst ip community-profiles luci luci-app-olsr luci-mod-freifunk luci-app-meshwizard meshwizard luci-app-olsr-services luci-app-olsr-viz olsrd-mod-arprefresh olsrd-mod-nameservice olsrd-mod-watchdog"
$ du -h bin/lantiq/*.image
b) Fertiges Image nehmen
- mit olsr, freifunk und luci aber ohne jeglichen dsl treibern (genau das image aus dem make befehl aus a)
- "Firmware Version: OpenWrt Barrier Breaker r34033 / LuCI Trunk (trunk+svn9414)"
- ohne olsr, mit openvpn als freedomfighterbox (Freifunk VPN!)
Wenn uboot geflashed wurde, einfach WLAN-Button gedrückt halten und Router anmachen. Nach 10 Sekunden sollte über 192.168.1.1 ein Webserver antworten über den der Router geflashet werden kann (z.Bsp. mit openwrt-lantiq-danube-ARV4520PW-squashfs.image)
Wichtig ist hier, dass nicht Chrome sondern zum Beispiel Firefox benutzt wird.
Konfigurieren
Beispiele
Anleitung
a) Allgemeine Vorgehensweise mit Webinterface und Meshwizard
b) [Historisch] Erster Link zu Zwingli-Nordost mit dem Airties
1. OLSR Community Freifunk-Berlin per Webinterface gesetzt
2. /etc/config/network nach Phillips config [1] angepasst
3. /etc/config/wireless nach Phillips config [2] angepasst
WICHTIG: in /etc/config/wireless:
option bssid '02:CA:FF:EE:BA:BE'
(gleiche BSSID wie Zwingli-Node)
[4. Und nicht vergessen WLAN interface zu enablen *hust*]
c) Freedom Fighter Box
1. LAN 4 mit Rechner verbinden
2. telnet 10.0.0.1
passwd (password ändern)
auf dem rechner
3. scp freifunk_yourName.crt root@10.0.0.1:/etc/openvpn/freifunk.crt
4. scp freifunk_yourName.key root@10.0.0.1:/etc/openvpn/freifunk.key
auf dem router
5. /root/config hostname latitude longitude email
6. LAN 3 über LAN mit anderem Router verknüpfen
(7. /bin/openwifimap-update ausführen um direkt auf der Karte zu erscheinen - sonst erst das nächste Mal um 15Uhr)
8. Verbinung zu LAN4 kappen
9. Have fun
[LAN 4 - mgmt - nur von hier kann via ssh oder luci auf den router zugegriffen werden
LAN 3 - wan - hier kommt das Internet rein
LAN 2/1 - freifunk internet
/etc/init.d/repairWifi - script um Fehler des Routers mit der WIFI mac adresse zu umgehen
/usr/bin/openwifimap-update - script um Knoten auf Karte anzeigen zu lassen; davor system.@system[0].contact,longitude und latitude setzen
/root/config - config script
setzt hostnamen (wird zu hostname-anon)
setzt den WLAN namen auf hostname.anon.freifunk.de
kann falls angegeben lon lat n
OpenWifiMap
Zum regelmäßigen Update Script benutzen:
Um seinen initial Knoten bekannt zumachen, reicht folgender Einzeiler:
== Info: About to connect() to map.pberg.freifunk.net port 80 (#0)
== Info: Trying 81.169.174.233...
== Info: connected
== Info: Connected to map.pberg.freifunk.net (81.169.174.233) port 80 (#0)
=> Send header, 230 bytes (0xe6)
0000: PUT /openwifimap/simpl0n.olsr HTTP/1.1
0028: User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0
0068: OpenSSL/0.9.8r zlib/1.2.5
0084: Host: map.pberg.freifunk.net
00a2: Accept: */*
00af: Content-Type: application/json
00cf: Content-Length: 238
00e4:
=> Send data, 238 bytes (0xee)
0000: {"type":"node","hostname":"simpl0n.olsr","longitude":13.4628,"la
0040: titude":52.5058,"interfaces":[{"name":"simpl0n.olsr","ipv4Addres
0080: ses":["104.130.3.88"]}],"neighbors":[{"interface":"simpl0n.olsr"
00c0: ,"id":"zwingli-nordost.olsr","quality":2.34}]}
== Info: upload completely sent off: 238 out of 238 bytes
<= Recv header, 22 bytes (0x16)
0000: HTTP/1.1 201 Created
<= Recv header, 22 bytes (0x16)
0000: Server: nginx/1.0.10
<= Recv header, 37 bytes (0x25)
0000: Date: Tue, 12 Feb 2013 14:19:57 GMT
<= Recv header, 41 bytes (0x29)
0000: Content-Type: text/plain; charset=utf-8
<= Recv header, 24 bytes (0x18)
0000: Connection: keep-alive
<= Recv header, 66 bytes (0x42)
<= Recv header, 44 bytes (0x2c)
0000: ETag: "1-b4dc6a07d64468bac904736d8d7c872e"
<= Recv header, 20 bytes (0x14)
0000: Content-Length: 75
<= Recv header, 32 bytes (0x20)
0000: Cache-Control: must-revalidate
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 75 bytes (0x4b)
0000: {"ok":true,"id":"simpl0n.olsr","rev":"1-b4dc6a07d64468bac904736d
0040: 8d7c872e"}.
{"ok":true,"id":"simpl0n.olsr","rev":"1-b4dc6a07d64468bac904736d8d7c872e"}
== Info: Connection #0 to host map.pberg.freifunk.net left intact
== Info: Closing connection #0
Entbricken
R64 / R80 überbrücken
serielle Verbindung aufmachen:
$ screen /dev/ttyUSB0 115200
> ROM VER: 1.0.3
> CFG 04
> Read EEPROMX
> X
> UART
U-Boot RAM-Image hochladen (Image aus Trunk für ARV4519PW) selbst gebaut, da die Online-Versionen nicht loady als Befehl haben - Ethernet funktioniert leider nicht)
$ cat arv4519pw_ram-u-boot.asc | sudo tee /dev/ttyUSB0 > /dev/null
> U-Boot 2010.03-svn34185 (Nov 16 2012 - 07:26:28)
> Board: ARV4520PW
> SoC: Danube/Twinpass/Vinax-VE V1.3, DDR Speed 111 MHz, CPU Speed 111 MHz
> DRAM: 32 MB
> ARV4520 =>
Schreibschutz für Boot-Speicher aufheben
protect off 0xB0000000 +0x1FFFF
> Un-Protected 9 sectors
Speicher leeren
erase 0xB0000000 +0x1FFFF
> ......... done
> Erased 9 sector
U-Boot konfigurieren um Image übertragen zu können
loady
Flash-U-Boot-Image übertragen (in Screen, sb ist im Packet 'lrzsz' zu finden)
^A : exec !!.| sb --ymodem /path/to/u-boot-bootstrap.bin
> ## Ready for binary (ymodem) download to 0x81000000 at 115200 bps...
> CSending: u-boot-bootstrap.bin
> Ymodem sectors/kbytes sent: 0/ 0kRetry 0: NAK on sector
> Retry 0: NAK on sector
> Bytes Sent: 65536 BPS:1891
> Sending:
> Ymodem sectors/kbytes sent: 0/ 0k
> Transfer complete
> dem - CRC mode, 514(SOH)/0(STX)/0(CAN) packets, 5 retries
> ## Total Size = 0x00010000 = 65536 Bytes
Image in den Flash-Speicher kopieren
cp.b 0x81000000 0xB0000000 0x10000
> Copy to Flash... done
Speicher wieder schreibschützen
protect on 0xB0000000 +0x1FFFF
Router ausschalten und R64 / R80 entlöten. Danach kann sollte der Router wieder funktionsfähig sein und es kann zum Beispiel über den HTTP-Server OpenWRT geflashed werden.
DHCP und OLSR:
1. Block von mind. 16 IPs registrieren
zb. 104.130.3.96-104.130.3.111
2. Network address, Subnet, min/max Host IP für DHCP-Range berechnen
=>Network: 104.130.3.96/28
Broadcast: 104.130.3.111
HostMin: 104.130.3.97
HostMax: 104.130.3.110
Hosts/Net: 14
2.a Oft passen die vorregistrierten Adressen nicht perfekt ins /28-Netz -> noch mehr registrieren bisset reicht ;)
3. Router bekommt die erste mögliche IP 104.130.3.97
4. DHCP vergibt den Rest .98-.110 -> 13 Adressen
5. Offset vom Anfang des Ranges 104.130.3.98 zu 104.0.0.0 berechnen so wie hier
130*2^16 + 3*2^8 + 98[*2^0] = 8520546
Check:
root@simpl0n:~# ipcalc.sh 104.130.3.96 255.0.0.0 8520546 12
IP=104.130.3.96
NETMASK=255.0.0.0
BROADCAST=104.255.255.255
NETWORK=104.0.0.0
PREFIX=8
START=104.130.3.98
END=104.130.3.110
# Als Netzmaske wird hier fälschlicherweise 255.0.0.0 als Basis genommen zu der dann der Offset berechnet wird. Das liegt daran das aus /etc/config/dhcp immer eine /tmp/etc/dnsmasq.conf generiert wird, die automatisch die Netmask vom 'wlan0' interface übernimmt.
6. /etc/config/dhcp editieren
config dhcp 'wireless0'
option interface 'wireless0'
option start '8520546'
option limit '12'
option leasetime 1h
list 'dhcp_option' '1,255.255.255.240'
# Letzte Zeile zwingt letztendlich dnsmasq dazu nicht die 255.0.0.0 (subnet vom OLSR) herauszugeben, sondern nur die Maske für unser /28 Netz.
7. HNA4 route in /etc/config/olsrd announcen
config Hna4
option netaddr '104.130.3.96'
option netmask '255.255.255.240'
# Alles 3x überprüfen!!! ;)