Opennet Firmware

Aus Opennet
Wechseln zu: Navigation, Suche

Dies ist eine vorerst stark experimentelle Anleitung zur Installation von OpenVPN auf einem ASUS-Router WL500g auf Basis von OpenVPN-whiterussian. Leider ist es bisher nicht gelungen, openvpn unter der Freifunk-Firmware zum laufen zu bekommen. Daher ist für eine Nutzung von openvpn nach dieser Methode ein firmware-update nötig. Ich übernehm also für nichts eine Garantie ;)

Inhaltsverzeichnis

Anpassungen an OpenWRT Whiterussian

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")

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

Installation

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 als Basis genommen, die Firmware wird selbstverständlich auch ausgehend von anderen Vorraussetzungen installierbar sein...
Erlärung (technix): Die Firware Installation muss (soweit ich das probieren konnte) zweimal durchgeführt werden. Ziel ist eine (veränderbare) squashfs-Installation. Zuerst wird eine neue (beliebige) whiterussian-variante als jffs2-4MB installiert. Erst diese enthält die entsprechend aktuelle Versin von mtd, um die modifizierte whiterussian als squashfs zu installieren.

erster Durchgang: install whiterussian jffs

folgende Datei herunterladen: http://downloads.openwrt.org/whiterussian/rc2/bin/openwrt-brcm-2.4-jffs2-4MB.trx beim ASUS-Router Power-Stecker ziehen (und ruhig mal 10 Sekunden Pause machen, der Router mag das auch), Reset-Button drücken , dabei Power-Stecker eintöpseln und während die Power-LED blinkt (Resettaste kann losgelasen werden) folgendes auf einem verbunden lokalen Rechner eingeben:
(Technix: die default-route muss dabei zum Router zeigen)

rene@local ~ $ tftp 172.16.0.1
tftp> binary
tftp> trace
Packet tracing on.
tftp> get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null
sent RRQ <file=ASUSSPACELINK\x01\x01\xa8\xc0, mode=octet>
received DATA <block=1, 0 bytes>
tftp> put openwrt-brcm-2.4-jffs2-4MB.trx ASUSSPACELINK
....ausgeschnitten....
sent DATA <block=4225, 0 bytes>
received ACK <block=4225>
tftp>quit 

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

folgende Datei herunterladen: http://absorb.it/whiterussian/opennet-openwrt-brcm-2.4-squashfs_0.1.trx Datei auf den router kopieren:

rene@local ~ $ scp openwrt-brcm-2.4-squashfs.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 openwrt-brcm-2.4-squashfs.trx linux
Writing openwrt-brcm-2.4-squashfs.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. Zuerst muss wieder über telnet dass passwort geändert werden...

									
  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) -------------------------------                           
 --- adapted for opennet --- opennet-initiative.de -                           
                                                                               
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:/#

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 angepasstt werden.

Router neustarten, Geduld haben und 5 Minuten nach einem Neustart (vielleicht etwas unglücklich, die Wartepause) sollte der Tunnel aufgebaut werden.

rene@wintermute /etc/openvpn $ tracepath www.heise.de
 1:  172.16.0.2 (172.16.0.2)                                0.287ms pmtu 1492
 1:  172.16.0.1 (172.16.0.1)                               18.886ms 
 2:  192.168.3.46 (192.168.3.46)                           19.550ms 
 3:  8.aps.on (192.168.1.8)                                29.847ms 
 4:  15.aps.on (192.168.1.15)                              89.338ms 
 5:  titan.on (192.168.0.254)                             411.074ms 
 6:  217.0.116.105 (217.0.116.105)                        asymm  7 114.248ms 
 7:  217.0.71.70 (217.0.71.70)                             88.572ms 
 8:  62.154.32.174 (62.154.32.174)                        asymm 10 106.498ms 
 9:  m-ec1.M.DE.net.DTAG.DE (62.154.27.234)               asymm 12 143.748ms 
10:  c4.m.de.plusline.net (212.19.63.109)                 asymm 12 130.013ms 
11:  heise1.f.de.plusline.net (213.83.57.21)              218.912ms 
12:  heise1.f.de.plusline.net (213.83.57.21)              asymm 11 138.400ms 
     Resume: pmtu 1492 
rene@wintermute /etc/openvpn $ tracepath www.heise.de
 1:  172.16.0.2 (172.16.0.2)                                0.298ms pmtu 1492
 1:  172.16.0.1 (172.16.0.1)                                1.223ms 
 2:  10.1.0.1 (10.1.0.1)                                   73.335ms 
 3:  217.0.116.105 (217.0.116.105)                        asymm  4 162.812ms 
 4:  217.0.71.70 (217.0.71.70)                             89.402ms 
 5:  62.154.32.174 (62.154.32.174)                        asymm  7 118.480ms 
 6:  m-ec1.M.DE.net.DTAG.DE (62.154.27.234)               asymm  9 154.122ms 
 7:  c4.m.de.plusline.net (212.19.63.109)                 asymm  9 165.260ms 
 8:  heise1.f.de.plusline.net (213.83.57.21)              155.406ms 
 9:  heise1.f.de.plusline.net (213.83.57.21)              asymm  8 309.705ms 
     Resume: pmtu 1492 
rene@wintermute /etc/openvpn $ 
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge