Opennet Firmware: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
K (firmware-bezeichnungen konsistent gemacht)
K (Korrekt link)
 
(184 dazwischenliegende Versionen von 20 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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 ;)
+
Unsere Firmware basiert auf OpenWrt und erweitert diese um Opennet-spezifische Funktionen. Unter [[Opennet Hardware]] sind WLAN-Router aufgelistet, auf denen diese Firmware läuft. Unter [[Router-Einrichtung]] ist die grundlegende Konfiguration beschrieben.
  
== Anpassungen an OpenWRT Whiterussian ==
+
{{team
Im folgenden Abschnitt werden die an einem Standardsystem (OpenWRT whiterussian rc2, siehe [http://openwrt.org]) 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.
+
|description=Pflege und Weiterentwicklung der Firmware für Opennet Accesspoints
 +
|nextMeeting=nach Bedarf
 +
|members=[[Benutzer:Christoph|Christoph K.]], [[Benutzer:Leo|Martin G.]], [[Benutzer:Lars|Lars K.]], [[Benutzer:Kuehro67|Kai-Uwe E.]]
 +
|kontakt=[mailto:dev@opennet-initiative.de dev@opennet-initiative.de]
 +
|logo=Opennet firmware.png
 +
}}
  
=== Konfiguration ===
+
=== Überblick ===
zusätzlich zur Standardkonfiguration wurden folgende Module ausgewählt:
+
Die Opennet-Firmware fügt folgende Funktionen zur Distribution [https://openwrt.org OpenWrt] hinzu:
* iproute2 routing control (ip)
+
* Festlegung der Accesspoint Nummer
* openvpn - Open source VPN solution using SSL
+
* Internetzugang via Opennet
hier die [http://absorb.it/whiterussian/.config 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.
+
* Internetzugang bereitstellen und entfernte Opennet-Wolken verbinden
 +
* Offener Zugangspunkt
  
=== Aus der Freifunk-Firmware übernommene Dateien ===
+
=== Installieren ===
* [http://absorb.it/whiterussian/S80openvpn /etc/init.d/S80openvpn]
+
Siehe [[Opennet Firmware/Download]].
:: in Zeile 10 hinzugefügt: sleep 125 (damit rdate hoffentlich die Zeit gesetzt hat)
+
* [http://absorb.it/whiterussian/S60rdate /etc/init.d/S60rdate]
+
* [http://absorb.it/whiterussian/S45firewall /etc/init.d/S45firewall]
+
:: Zeile 4 auskommentiert da /proc/net/wireless in whiterussian nicht unterstützt wird
+
* [http://absorb.it/whiterussian/olsrd.conf /etc/olsrd.conf]
+
* [http://absorb.it/whiterussian/netparam usr/bin/netparam]
+
:: Anpassungen, da /proc/net/wireless in whiterussian nicht unterstützt wird
+
<pre>
+
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")</pre>
+
=== Neue Dateien ===
+
* /etc/openvpn/opennet.conf
+
Siehe [http://wiki.opennet-initiative.de/index.php/OpenVPN_Konfiguration#OpenWrt_ON_Nodes OpenVPN_Konfiguration]
+
  
* /etc/openvpn/opennet_up.sh
+
=== Konfiguration ===
<pre>
+
Eine erste Übersicht über die wichtigsten Konfigurationsmöglichkeiten findest du unter [[Router-Einrichtung]].
#!/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</pre>
+
* /etc/openvpn/opennet_down.sh
+
<pre>
+
#!/bin/sh
+
eval $(/usr/bin/netparam)
+
iptables -t nat -D POSTROUTING -o $dev -s $LANNET/$LANPRE -j SNAT --to-source $ifconfig_local</pre>
+
* /etc/local.fw
+
:: MASQUERADING entfernt, da dies im entsprechenden Kernel nicht zu funktionieren scheint, durch SNAT in opennet_up und opennet_down - scripten ersetzt.
+
<pre>
+
# 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
+
Für Fortgeschrittene und Bastler haben wir ein paar [[Opennet Firmware für Fortgeschrittene|Hinweise zu Spezialthemen zusammengefasst]].
        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
+
=== Mitmachen ===
        ip rule add unicast from $LANNET/$LANPRE table 3
+
Alle relevanten Informationen für das Entwickeln der Firmware befinden sich in der [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__entwicklung.html Entwicklungsdokumentation] im [https://github.com/opennet-initiative/firmware/ Git-Repository].
#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</pre>
+
  
== Installation ==
+
Wenn du durch den Quellcode schauen möchtest, dann nutze den [https://github.com/opennet-initiative/firmware/ Repository Browser].
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...
+
<br>
+
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 ===
+
Falls du Änderungen in das Repository einpflegen möchtest, dann melde dich auf der [https://list.opennet-initiative.de/mailman/listinfo/dev Entwicklungs-Mailingliste]. Alternativ lege ein Ticket mit einer Beschreibung und einem beigelegtem Patch im [https://github.com/opennet-initiative/firmware/pulls Bug Tracker] an.
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:<br />
+
(Technix: die default-route muss dabei zum Router zeigen)
+
<pre>
+
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 </pre>
+
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...
+
<pre>
+
rene@local ~ $ telnet 172.16.0.1
+
  
 +
Hier findest du Informationen zu weiterführende Details:
  
=== IMPORTANT ============================                                   
+
* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__struktur.html Struktur der Build-Umgebung]
  Use 'passwd' to set your login password                                     
+
* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__entwicklung.html Enwicklungsleitfaden]
  this will disable telnet and enable SSH                                     
+
* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__funktionsdetails.html Funktionsübersicht der Firmware]
------------------------------------------                                   
+
                                                                             
+
                                                                             
+
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:/# </pre>
+
=== 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:
+
<pre>
+
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 ~ $ </pre>
+
neue Firmware installieren:
+
<pre>
+
rene@local ~ $ ssh 172.16.0.1 -l root
+
root@172.16.0.1's password:
+
  
 +
Unter [[Opennet_Firmware/Netzstruktur|Netzstruktur]] wird dargestellt, wie die Struktur des Opennet aufgebaut ist. Dort ist auch ersichtlich, welchen Arten von Tunnel es gibt und warum das Netz genau so aufgebaut ist.
  
BusyBox v1.00 (2005.07.18-21:49+0000) Built-in shell (ash)
+
=== Fehler und Wünsche ===
Enter 'help' for a list of built-in commands.
+
Dir ist ein Problem aufgefallen oder du hast einen ausgefallenen Wunsch? Übertrage deine Gedanken in den [https://github.com/opennet-initiative/firmware/issues Bug-Tracker].
  
  _______                    ________        __
+
=== Changelog ===
|      |.-----.-----.-----.|  |  |  |.----.|  |_
+
|  -  ||  _  |  -__|    ||  |  |  ||  _||  _|
+
|_______||  __|_____|__|__||________||__|  |____|
+
          |__| 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 ~ $ </pre>
+
Der Router sollte nun wieder neu starten. Zuerst muss wieder über telnet dass passwort geändert werden...
+
<pre>
+
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:/#</pre>
+
  
=== OpenVPN-Anpassung ===
+
Änderungen der jeweiligen Versionen incl. bekannten Fehlern finden sich unter [[Opennet Firmware/Versionen]].
nun müssen die openvpn-keys noch in das Verzeichnis /etc/openvpn kopiert werden:
+
<pre>
+
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 #</pre>
+
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.
+
[[Kategorie:Firmware]]
<pre>
+
[[Kategorie:Anleitungen]]
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 $ </pre>
+

Aktuelle Version vom 4. März 2024, 21:24 Uhr

Unsere Firmware basiert auf OpenWrt und erweitert diese um Opennet-spezifische Funktionen. Unter Opennet Hardware sind WLAN-Router aufgelistet, auf denen diese Firmware läuft. Unter Router-Einrichtung ist die grundlegende Konfiguration beschrieben.

Team
Opennet firmware.png
Opennet Firmware
Treffen: nach Bedarf
Pflege und Weiterentwicklung der Firmware für Opennet Accesspoints
Mitglieder:
Christoph K., Martin G., Lars K., Kai-Uwe E.
Kontakt:
dev@opennet-initiative.de


Inhaltsverzeichnis

[Bearbeiten] Überblick

Die Opennet-Firmware fügt folgende Funktionen zur Distribution OpenWrt hinzu:

  • Festlegung der Accesspoint Nummer
  • Internetzugang via Opennet
  • Internetzugang bereitstellen und entfernte Opennet-Wolken verbinden
  • Offener Zugangspunkt

[Bearbeiten] Installieren

Siehe Opennet Firmware/Download.

[Bearbeiten] Konfiguration

Eine erste Übersicht über die wichtigsten Konfigurationsmöglichkeiten findest du unter Router-Einrichtung.

Für Fortgeschrittene und Bastler haben wir ein paar Hinweise zu Spezialthemen zusammengefasst.

[Bearbeiten] Mitmachen

Alle relevanten Informationen für das Entwickeln der Firmware befinden sich in der Entwicklungsdokumentation im Git-Repository.

Wenn du durch den Quellcode schauen möchtest, dann nutze den Repository Browser.

Falls du Änderungen in das Repository einpflegen möchtest, dann melde dich auf der Entwicklungs-Mailingliste. Alternativ lege ein Ticket mit einer Beschreibung und einem beigelegtem Patch im Bug Tracker an.

Hier findest du Informationen zu weiterführende Details:

Unter Netzstruktur wird dargestellt, wie die Struktur des Opennet aufgebaut ist. Dort ist auch ersichtlich, welchen Arten von Tunnel es gibt und warum das Netz genau so aufgebaut ist.

[Bearbeiten] Fehler und Wünsche

Dir ist ein Problem aufgefallen oder du hast einen ausgefallenen Wunsch? Übertrage deine Gedanken in den Bug-Tracker.

[Bearbeiten] Changelog

Änderungen der jeweiligen Versionen incl. bekannten Fehlern finden sich unter Opennet Firmware/Versionen.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge