Zum Inhalt springen

Opennet Firmware: Unterschied zwischen den Versionen

Aus Opennet
Inhalt gelöscht Inhalt hinzugefügt
Sh01 (Diskussion | Beiträge)
K →Neue Dateien: - layout fix
Tobias (Diskussion | Beiträge)
K Korrekt link
 
(185 dazwischenliegende Versionen von 20 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
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 ;)


{{team
== Anpassungen an OpenWRT Whiterussian ==
|description=Pflege und Weiterentwicklung der Firmware für Opennet Accesspoints
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.
|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 ===
Die Opennet-Firmware fügt folgende Funktionen zur Distribution [https://openwrt.org OpenWrt] hinzu:
zusätzlich zur Standardkonfiguration wurden folgende Module ausgewählt:
* Festlegung der Accesspoint Nummer
* iproute2 routing control (ip)
* Internetzugang via Opennet
* openvpn - Open source VPN solution using SSL
* Internetzugang bereitstellen und entfernte Opennet-Wolken verbinden
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.
* Offener Zugangspunkt


=== Installieren ===
=== Aus der Freifunk-Firmware übernommene Dateien ===
Siehe [[Opennet Firmware/Download]].
* [http://absorb.it/whiterussian/S80openvpn /etc/init.d/S80openvpn]
:: 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]


=== Konfiguration ===
* /etc/openvpn/opennet_up.sh
Eine erste Übersicht über die wichtigsten Konfigurationsmöglichkeiten findest du unter [[Router-Einrichtung]].
<pre>
#!/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


Für Fortgeschrittene und Bastler haben wir ein paar [[Opennet Firmware für Fortgeschrittene|Hinweise zu Spezialthemen zusammengefasst]].
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


=== Mitmachen ===
#prepare a table for openvpn policy-routing
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].
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</pre>


Wenn du durch den Quellcode schauen möchtest, dann nutze den [https://github.com/opennet-initiative/firmware/ Repository Browser].
== 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...
<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.


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.
=== 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:<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:


* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__struktur.html Struktur der Build-Umgebung]
=== IMPORTANT ============================
* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__entwicklung.html Enwicklungsleitfaden]
Use 'passwd' to set your login password
* [http://downloads.opennet-initiative.de/openwrt/stable/latest/doc/md__funktionsdetails.html Funktionsübersicht der Firmware]
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:/# </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 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 ~ $ </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.


=== Fehler und Wünsche ===
BusyBox v1.00 (2005.07.18-21:49+0000) Built-in shell (ash)
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].
Enter 'help' for a list of built-in commands.


=== 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 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 ~ $ </pre>
Der Router sollte nun wieder neu starten. Zuerst muss wieder über telnet dass passwort geändert werden...
<pre>
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>


Änderungen der jeweiligen Versionen incl. bekannten Fehlern finden sich unter [[Opennet Firmware/Versionen]].
=== OpenVPN-Anpassung ===
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.


[[Kategorie:Firmware]]
Router neustarten, Geduld haben und 5 Minuten nach einem Neustart (vielleicht etwas unglücklich, die Wartepause) sollte der Tunnel aufgebaut werden.
[[Kategorie:Anleitungen]]
<pre>
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, 19: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
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


Ü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

Installieren

Siehe Opennet Firmware/Download.

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.

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.

Fehler und Wünsche

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

Changelog

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