Opennet Firmware: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
K (Neue Dateien: - layout fix)
K (firmware-bezeichnungen konsistent gemacht)
Zeile 165: Zeile 165:
 
Datei auf den router kopieren:
 
Datei auf den router kopieren:
 
  <pre>
 
  <pre>
rene@local ~ $ scp openwrt-brcm-2.4-squashfs.trx root@172.16.0.1:/tmp
+
rene@local ~ $ scp opennet-openwrt-brcm-2.4-squashfs_0.1.trx root@172.16.0.1:/tmp
 
root@172.16.0.1's password:  
 
root@172.16.0.1's password:  
 
openwrt-brcm-2.4-squashfs.trx                100% 2020KB 252.5KB/s  00:08     
 
openwrt-brcm-2.4-squashfs.trx                100% 2020KB 252.5KB/s  00:08     
Zeile 189: Zeile 189:
 
  ---------------------------------------------------
 
  ---------------------------------------------------
 
root@OpenWrt:~# cd /tmp/
 
root@OpenWrt:~# cd /tmp/
root@OpenWrt:~# mtd -e linux -r write openwrt-brcm-2.4-squashfs.trx linux
+
root@OpenWrt:~# mtd -e linux -r write opennet-openwrt-brcm-2.4-squashfs_0.1.trx linux
 
Writing openwrt-brcm-2.4-squashfs.trx to linux ...
 
Writing openwrt-brcm-2.4-squashfs.trx to linux ...
 
Unlocking linux ...
 
Unlocking linux ...
Zeile 199: Zeile 199:
 
Der Router sollte nun wieder neu starten. Zuerst muss wieder über telnet dass passwort geändert werden...
 
Der Router sollte nun wieder neu starten. Zuerst muss wieder über telnet dass passwort geändert werden...
 
  <pre>
 
  <pre>
 +
rene@local ~ $ telnet 172.16.0.1
 
 
 
   Use 'passwd' to set your login password                                       
 
   Use 'passwd' to set your login password                                       

Version vom 13. August 2005, 16:38 Uhr

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 opennet-openwrt-brcm-2.4-squashfs_0.1.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.1.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...

rene@local ~ $ telnet 172.16.0.1
									
  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