Tunnelkonzept
Überblick
Bis 2016 (Firmware v0.5.2) werden im Opennet zwei Arten von Tunneln verwendet (siehe auch Opennet FAQ#Im Opennet gibt es so viele Begriffe, was bedeuten diese? (Glossar)):
- Nutzer-Tunnel für die verschlüsselte Verbindung eines Nutzer-APs mit einem Gateway-Server
- Mesh-Tunnel für die Routing/OLSR-Verbindung eines Spender-APs (UGW) mit einem oder mehreren Gateway-Servern
Beide Tunnel wurden bisher via OpenVPN aufgebaut.
Die Einführung von OLSRv2 und IPv6 stellt im Jahr 2016 eine gute Gelegenheit dar, diese Tunnel-Techniken zu überdenken und eventuell anzupassen.
Derzeit gibt es zwei Überlegungen:
- das anscheinend "langsame" OpenVPN durch eine performantere VPN Technik zu ersetzen
- aus den bisher verschlüsselten Mesh-Tunneln unverschlüsselte Tunnel zu machen. Die einzige Aufgabe dieser Tunnel wäre dann das Netzwerk virtuell über externe Netze zu spannen. Verschlüsseln muss dann jeder Knoten selbst, wenn er mit einem Endpunkt kommunizieren möchte.
Anforderungen
| warning = #b22222 solid;background-color: #ffdddd;"> | caution = #f28500 solid;background-color: #ffffaa;"> | approval = #00ff00 solid;background-color: #deffde;"> | proposal = #9932cc solid;background-color: #e4d8ff;"> | detail = #f4c430 solid;background-color: #fbfbfb;"> | protection = #bba solid;background-color: #fbfbfb;"> | notice | #default = #1e90ff solid;background-color: #fbfbfb;"> }} {{#switch: | blank | none =| #default =
}}{{#if: | {{#ifeq:|none
|| }} }}
{{
#switch: | left =| #default = }}
{{#if:
| {{{image}}}
| [[Image:{{#switch:notice
| danger = Ambox warning pn.svg
| warning = Ambox warning pn.svg
| caution = Ambox important.svg
| approval = Thumb_up_icon.svg
| proposal = Ambox warning purple.svg
| detail = Ambox style.png
| protection = Ambox protection.png
| notice
| #default = Information icon4.svg
}} | {{#switch:
| left = 20x20px
| #default = 40x40px
}} ]]
}}{{#switch:
| left =
| #default = | Die untenstehenden Anforderungen sind noch nicht diskutiert, sondern nur ein Entwurf. | {{#switch:
| left = {{{imageright}}}
| #default = {{{imageright}}}
}} |
Allgemeine Anforderungen:
- Unterstützung in OpenWrt
- stabile Entwicklungs-Community
| Eigenschaft \ Tunnel | Nutzer-Tunnel (Nutzer-AP <-> UGW-Server) | Mesh-Tunnel (UGW-AP <-> UGW-Server) |
|---|---|---|
| NAT-Unterstützung | nicht erforderlich | IPv4: erforderlich (Ist das wirklich so? Warum?) |
| Performance / Bandbreite | ~20 MBit/s | ~50 MBit/s (Nutzer-Tunnel sollen über die Mesh-Verbindung fließen) |
| Verschlüsselung | erforderlich | nicht erforderlich |
| Authentifikation | idealerweise via X.509 | eventuell halb- oder vollautomatisch? |
Implementierungen
Die Performance/Bandbreite-Werte stammen aus unterschiedlichen Quellen und sind kaum vergleichbar. Beispielsweise wird OpenVPN bei einer Messung von Justus Beyer mit 28 MBit/s bewertet, während unter Opennet-Bedingungen (Konfiguration, Anbindung) mit vergleichbarer Hardware nicht mehr als 10 MBit/s erreichbar sind.
| Implementierung | NAT-Unterstützung | Performance [P1] | Performance [P2] | Verschlüsselung | Authentifikation | OpenWRT-Paketierung | Committer (letzte 12 Monate) |
|---|---|---|---|---|---|---|---|
| OpenVPN | ja | ~10 MBit/s | 28MBit/s | ja | X.509 | ja | >10 |
| fastd | ja | ~20 MBit/s | - | ja | ein Schlüssel je Client | ja | 1 |
| tunneldigger | ja | ? | - | nein | nein | inoffizielles Paket | ~3 |
| µAnytun | ja | ? | - | ja | ? | ja | 1 |
| GRE / L2TP / IP in IP | nein | ~80 MBit/s | 91MBit/s | nein | nein | ja | viele (Linux-Entwicklungsgemeinde) |
| (GRE / L2TP / IP in IP) + IPsec | nein | ? | - | ja | shared key, X.509 | ja | je nach Schlüsselverwaltung |
[P1] Erfahrungen mit Opennet Installationen
[P2] https://justus.berlin/2016/02/performance-of-tunneling-methods-in-openwrt/