|
|
(186 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 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. |
| | | |
− | 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 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>
| + | |
| | | |
− | === 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>
| + | |
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.
Eine erste Übersicht über die wichtigsten Konfigurationsmöglichkeiten findest du unter Router-Einrichtung.
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.
Dir ist ein Problem aufgefallen oder du hast einen ausgefallenen Wunsch? Übertrage deine Gedanken in den Bug-Tracker.