Opennet Firmware
Diese Anleitung ist nagelneu und noch nicht gegengelesen.
Inhaltsverzeichnis |
Download
- aktuelle Version: http://absorb.it/whiterussian/opennet-openwrt-brcm-2.4-squashfs_0.3.trx
Installation
Vorbereitung
Wichtig falls das Firmware-update fehlschlägt:
- ASUS: Unbedingt die Adresse des Routers im lokalen Netzwerk merken (meist 172.16.0.1)
- Linksys: Unbedingt die Option boot_wait setzen
In der folgenden Beschreibung wird davon ausgegangen, dass auf dem Router bereits eine funtionierende und lauffähige Version der Freifunk-Software installiert war. Dies wird in der Beschreibung als Basis genommen, die Firmware ist selbstverständlich auch ausgehend von anderen Vorraussetzungen installierbar.
Da sich die Opennet-Firmware nur mit den erweiterten Möglichkeiten von OpenWRT whiterussian installieren lässt, muß dieses zuerst installiert werden.
erster Durchgang: install whiterussian jffs
Wenn auf eurem AccessPoint bereits whiterussian oder eine opennet-firmware läuft könnt ihr diesen Punkt überspringen.
Firmware herunterladen:
ASUS WL500g: http://downloads.openwrt.org/whiterussian/rc2/bin/openwrt-brcm-2.4-jffs2-4MB.trx
Linksys WRT54G: http://downloads.openwrt.org/whiterussian/rc2/bin/openwrt-wrt54g-jffs2.bin
Linksys WRT54GS: http://downloads.openwrt.org/whiterussian/rc2/bin/openwrt-wrt54gs-jffs2.bin
Firmware über das Webfrontend des Routers aktualisieren.
Der Router sollte nun neu starten. Er bietet jetzt nur einen telnet-zugang an, also muss das passwort geändert werden. Falls dies fehlschlägt (bei mir immer beim ersten Versuch), nicht verzagen, 'reboot' eingeben , der router startet neu und nochmal versuchen...
rene@local ~ $ telnet 172.16.0.1 === IMPORTANT ============================ Use 'passwd' to set your login password this will disable telnet and enable SSH ------------------------------------------ BusyBox v1.00 (2005.08.05-19:08+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 (RC2) ------------------------------- * 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:/# passwd Changing password for root Enter the new password (minimum of 5, maximum of 8 characters) Please use a combination of upper and lower case letters and numbers. Enter new password: Re-enter new password: Password changed. root@OpenWrt:/#
zweiter Durchgang: install modified whiterussian sqashfs
Jetzt läuft auf dem Router whiterussian, nun kann die opennet-firmware installiert werden. Dies wurde von mir getestet auf ASUS WL500g und Linksys WRT54G, sollte aber auch auf dem WRT54GS funktionieren.
folgende Datei herunterladen: http://absorb.it/whiterussian/opennet-openwrt-brcm-2.4-squashfs_0.3.trx Datei auf den router kopieren:
rene@local ~ $ scp opennet-openwrt-brcm-2.4-squashfs_0.3.trx root@172.16.0.1:/tmp root@172.16.0.1's password: openwrt-brcm-2.4-squashfs.trx 100% 2020KB 252.5KB/s 00:08 rene@wintermute ~ $
neue Firmware installieren:
rene@local ~ $ ssh 172.16.0.1 -l root root@172.16.0.1's password: BusyBox v1.00 (2005.07.18-21:49+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 (RC2) ------------------------------- * 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:~# cd /tmp/ root@OpenWrt:~# mtd -e linux -r write opennet-openwrt-brcm-2.4-squashfs_0.3.trx linux Writing opennet-openwrt-brcm-2.4-squashfs_0.3.trx to linux ... Unlocking linux ... Erasing linux ... Unlocking linux ... root@OpenWrt:~# Connection to 172.16.0.1 closed by remote host. Connection to 172.16.0.1 closed. rene@local ~ $
Der Router sollte nun wieder neu starten. Nun sollte der Router über das Webinterface zu erreichen sein (http://172.16.0.1). Zuerst Passwort ändern über das Webinterface oder wie oben beschrieben mit telnet.
OpenVPN-Anpassung
nun müssen die openvpn-keys noch in das Verzeichnis /etc/openvpn kopiert werden:
root@local:~# cd /etc/openvpn root@local:/etc/openvpn# scp *.key root@172.16.0.1:/etc/openvpn root@172.16.0.1's password: ap_XX.key 100% 887 0.9KB/s 00:00 root@local:/etc/openvpn# scp *.crt root@172.16.0.1:/etc/openvpn root@172.16.0.1's password: ap_XX.crt 100% 4263 4.2KB/s 00:00 opennet-ca.crt 100% 1627 1.6KB/s 00:00 wintermute openvpn #
Wenn der Key und das Certifikat tatsächlich ap_XX.key bzw ap_XX.crt heissen (mit den zwei großen X), braucht die Konfigurationsdatei nicht verändert werden, sonst muss auf dem Router die Datei /etc/openvpn/openvpn.conf angepasst werden.
Der Zustand des Tunnels wird nun auf der Status-Seite des Routers angezeigt.
Bugs
- initiale Paswort-Änderung korrigieren
History
- 14.8.2005 Version 0.3
- Webfronteend um die Optionen, die nicht gingen bereinigt
- rdate durch ntp ersetzt
- S53olsrd von Freifunk übernommen - daher läuft die opennet.firmware nun auch unter LinkSys
- opennet-ca.crt in /etc/openvpn ergänzt
- Statusinformationen um OpenVPN-Status ergänzt
- 13.8.2005 Version 0.2
- Webfrontend von Freifunk übernommen und angepasst
- 13.8.2005 Version 0.1
- erste Release, Testversion ohne Webfrontend
Wünsche für die nächste Version
- Ergänzung des Webfrontends um Opennet-Spezifika (WEP-Key, OpenVPN-Keys)
- OpenVPN-Key generation über Webfrontend
Anpassungen an OpenWRT Whiterussian
noch nicht aktualisiert
Im folgenden Abschnitt werden die an einem Standardsystem (OpenWRT whiterussian rc2, siehe [1]) vorgenommenen Änderungen beschrieben. Da OpenWRT-whiterussian für die Nutzung im opennet neu compiliert werden musste, enthält die (später) zu installierende Version diese Anpassungen bereits. Hier sind alle nochmals übersichtlich aufgeführt, damit Kommentare, was gut / schlecht / richtig / falsch ist, leichter fallen.
Konfiguration
zusätzlich zur Standardkonfiguration wurden folgende Module ausgewählt:
- iproute2 routing control (ip)
- openvpn - Open source VPN solution using SSL
hier die config für Interessierte. Einiges könnte bestimmt noch weggelassen werden, aber da die standard-configuration lief, hab ich mich auf's ergänzen beschränkt.
Aus der Freifunk-Firmware übernommene Dateien
- in Zeile 10 hinzugefügt: sleep 125 (damit rdate hoffentlich die Zeit gesetzt hat)
- Zeile 4 auskommentiert da /proc/net/wireless in whiterussian nicht unterstützt wird
- Anpassungen, da /proc/net/wireless in whiterussian nicht unterstützt wird
rene@wintermute ~ $ diff -Naur netparam ../netparam --- orig_netparam 2005-08-13 01:35:22.000000000 +0200 +++ netparam 2005-08-12 20:21:39.000000000 +0200 @@ -83,11 +83,8 @@ } FS = o - wdev = "" - while(getline<"/proc/net/wireless") { - if (/^$/) break - if (sub(":", "")) wdev = $1 - } + wdev = ENVIRON["NVRAM_wl0_ifname"] + if ("" == wdev) "nvram get wl0_ifname"|getline wdev printdev(wdev, wdev, "", "WIFI") printdev("lo", "lo", "", "LO")
- angepasst auf opennet
Neue Dateien
- /etc/openvpn/opennet.conf
Siehe OpenVPN_Konfiguration
- /etc/openvpn/opennet_up.sh
#!/bin/sh eval $(/usr/bin/netparam) ip route flush table 3 ip route add throw $LANNET/$LANPRE table 3 ip route add default via $route_vpn_gateway table 3 iptables -t nat -A POSTROUTING -o $dev -s $LANNET/$LANPRE -j SNAT --to-source $ifconfig_local
- /etc/openvpn/opennet_down.sh
#!/bin/sh eval $(/usr/bin/netparam) iptables -t nat -D POSTROUTING -o $dev -s $LANNET/$LANPRE -j SNAT --to-source $ifconfig_local
- /etc/local.fw
- MASQUERADING entfernt, da dies im entsprechenden Kernel nicht zu funktionieren scheint, durch SNAT in opennet_up und opennet_down - scripten ersetzt.
# Place your firewall addons here case $1 in start) #variable defintions; TUNDEV="tun0" #SNAT in den Tunnel # MASQUERADING seems not to work well in 2.4.30 # see this news-entry: # http://groups-beta.google.com/group/lucky.linux.kernel/browse_frm/thread/9631983ea435086c/576b4816db12e2e7 # so SNAT is now done in vpn_up.sh #iptables -t nat -A POSTROUTING -o $TUNDEV -s $LANNET/$LANPRE -j MASQUERADE #eingehende frames iptables -I FORWARD 1 -i $TUNDEV -o $LANDEV -m state --state INVALID -j DROP iptables -I FORWARD 2 -i $TUNDEV -o $LANDEV -s ! $LANNET/$LANPRE -d $LANNET/$LANPRE -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD 3 -i $TUNDEV -o $LANDEV -j LOG --log-prefix "FRAMEDROP-FWIN:" iptables -I FORWARD 4 -i $TUNDEV -o $LANDEV -j DROP #ausgehende Verbindungen iptables -I FORWARD 5 -i $LANDEV -o $TUNDEV -m state --state INVALID -j DROP iptables -I FORWARD 6 -i $LANDEV -o $TUNDEV -s $LANNET/$LANPRE -d ! $LANNET/$LANPRE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD 7 -i $LANDEV -o $TUNDEV -j LOG --log-prefix "FRAMEDROP-FWOUT:" iptables -I FORWARD 8 -i $LANDEV -o $TUNDEV -j DROP #local output iptables -I OUTPUT 1 -o $TUNDEV -j ACCEPT #local input iptables -I INPUT 1 -i $TUNDEV -m state --state INVALID -j DROP iptables -I INPUT 2 -i $TUNDEV -p tcp --dport 22 -j ACCEPT iptables -I INPUT 3 -i $TUNDEV -p tcp --dport 80 -j ACCEPT iptables -I INPUT 4 -i $TUNDEV -p icmp -j ACCEPT iptables -I INPUT 5 -i $TUNDEV -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I INPUT 6 -i $TUNDEV -j LOG --log-prefix "FRAMEDROP-IN" iptables -I INPUT 7 -i $TUNDEV -j DROP #prepare a table for openvpn policy-routing ip rule add unicast from $LANNET/$LANPRE table 3 #load tun module # insmod tun # not needed, loaded by /etc/modules.d ;; stop) eval $(/usr/bin/netparam) ### S45firewall setzt beim stoppen die Parameter nicht echo "local_top $LANNET/$LANPRE" ip rule del unicast from $LANNET/$LANPRE table 3 echo "local_stop" ;; esac