forked from freifunk-franken/docs
Compare commits
7 Commits
a74cde38db
...
b5ec56d9d4
Author | SHA1 | Date |
---|---|---|
Johannes Kimmel | b5ec56d9d4 | |
Johannes Kimmel | 56550ee12e | |
Johannes Kimmel | 3ed483cabb | |
Fabian Bläse | dfcc88ab1f | |
Johannes Kimmel | 60dcf53a0e | |
Johannes Kimmel | c0d2e6c1c9 | |
Johannes Kimmel | ae04be72fb |
10
README.md
10
README.md
|
@ -120,6 +120,16 @@ die Änderung nur aus einem Commit besteht kann man folgendermaßen vorgehen:
|
|||
|
||||
Bei komplizierteren Änderungen über mehrere Commits wird `git rebase` benötigt.
|
||||
|
||||
#### Vorschau
|
||||
|
||||
Für Pull Requests wird automatisch eine Vorschau gerendert. Wenn die Seite
|
||||
erfolgreich generiert werden kann, erscheint hinter dem Commit und auf der
|
||||
Seite vom Pull Request ein grüner Haken. Dort werden Details zum Buildprozess
|
||||
hinterlegt und ein Link zur Vorschau:
|
||||
|
||||
![Screenshot Vorschau Commit](preview_commit.png)
|
||||
![Screenshot Vorschau Pull Request](preview_pr.png)
|
||||
|
||||
### 2. Issue erstellen
|
||||
|
||||
Änderungen können auch über ein [issue] vorgeschlagen werden, falls die Arbeit
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
title: "20220814"
|
||||
date: 2022-08-14T00:00:00+02:00
|
||||
---
|
||||
|
||||
https://dev.freifunk-franken.de/layer3/20220814/
|
||||
https://dev.freifunk-franken.de/node/20220814/
|
||||
|
||||
## Allgemeines
|
||||
- Update auf OpenWrt 21.02.3 (#261)
|
||||
- Leaflet (Positionsauswahl) aktualisiert (#242)
|
||||
- Update-Benachrichtigung überarbeitet (#244)
|
||||
|
||||
## node-Variante
|
||||
- Portkonfiguration ohne Reboot (#243)
|
||||
- Web-UI Portkonfiguration für Geräte mit zwei getrennten Interfaces gefixt (#259)
|
||||
|
||||
## layer3-Variante
|
||||
- Fehlerhaften bird2 Filter für `router_ip` überarbeitet (#255)
|
||||
- Zurückrollen der Änderungen nach Ablauf des Timers im Test-Mode gefixt (#260)
|
||||
|
||||
<!--more-->
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
title: "20221019"
|
||||
date: 2022-10-19T00:00:00+02:00
|
||||
---
|
||||
|
||||
https://dev.freifunk-franken.de/layer3/20221019/
|
||||
https://dev.freifunk-franken.de/node/20221019/
|
||||
|
||||
- Update auf OpenWrt 21.02.5 ([#265](https://git.freifunk-franken.de/freifunk-franken/firmware/pulls/265))
|
||||
|
||||
Dieses Release enthält Fixes für die folgenden kürzlich bekannt gewordenen Schwachstellen im Linux Wireless Code:
|
||||
- `CVE-2022-41674`: fix u8 overflow in cfg80211\_update\_notlisted\_nontrans (max 256 byte overwrite) (RCE)
|
||||
- `CVE-2022-42719`: `wifi:` `mac80211:` fix MBSSID parsing use-after-free use after free condition (RCE)
|
||||
- `CVE-2022-42720`: `wifi:` `cfg80211:` fix BSS refcounting bugs ref counting use-after-free possibilities (RCE)
|
||||
- `CVE-2022-42721`: `wifi:` `cfg80211:` avoid nontransmitted BSS list corruption list corruption (DOS)
|
||||
- `CVE-2022-42722`: `wifi:` `mac80211:` fix crash in beacon protection for P2P-device NULL ptr dereference crash (DOS)
|
||||
|
||||
<!--more-->
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: "Changelogs"
|
||||
bookCollapseSection: true
|
||||
date: 2022-11-18T17:17:51+01:00
|
||||
---
|
||||
|
||||
{{< section >}}
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
title: "Kontakt"
|
||||
weight: 4
|
||||
draft: true
|
||||
date: 2022-11-18T01:11:28+01:00
|
||||
---
|
||||
|
||||
|
|
|
@ -3,10 +3,16 @@ title: "Freifunk Franken Netz"
|
|||
date: 2022-11-18T00:10:23+01:00
|
||||
---
|
||||
|
||||
Überblick über das Freifunk Franken Netz und seine Technik
|
||||
Ein Überblick über das Freifunk Franken Netz und seine Technik.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Einleitung
|
||||
|
||||
Das Freifunk Franken Netz ist mittlerweile zu einem vielseitigem Netz gewachsen. Man hat viele Ansatzpunkte sich zu beteiligen, es ist aber manchmal nicht leicht zu wissen, wo und wie das möglich ist.
|
||||
|
||||
Im Folgenden soll daher auf der einen Seite eine Intuition vermittelt werden, wie das Netz im größeren Zusammenhang funktioniert und auf der anderen Seite gerade so genug Details geliefert werden, sodass man sich bei Interesse genauer in ein Teilbereich einarbeiten kann.
|
||||
|
||||
![Übersicht des Freifunk Franken Netz](netz.svg "Übersicht des Freifunk Franken Netz")
|
||||
|
||||
## Zentrale Hoods "V2"
|
||||
|
@ -29,7 +35,7 @@ Deshalb sind Hoods [geographisch begrenzt][hoods], um die Teilnehmerzahl in eine
|
|||
|
||||
Das **Gateway** ist grob gesagt die *Fritz!Box* für eine Hood.
|
||||
Gateways stehen bei uns gut angebunden in Rechenzentren, denn durch sie wird sämtlicher Traffic geleitet, der zu anderen Geräten im restlichen Freifunknetz, oder über unsere Borderrouter ins Internet soll.
|
||||
Sie sind damit der **zentrale** Router in Hood, die darüber hinaus auch einen DHCP Server, Konfiguration für die Knoten, Monitoring und vorallem die Verbindung zu unserem **Layer 3** Backbonenetz herstellen.
|
||||
Sie sind damit der **zentrale** Router in Hood, die darüber hinaus auch einen DHCP Server, Konfiguration für die Knoten, Monitoring und vor allem die Verbindung zu unserem **Layer 3** Backbonenetz herstellen.
|
||||
|
||||
### Szenario 2: "realistisch"
|
||||
|
||||
|
@ -42,8 +48,8 @@ Zusätzlich verfügen die meisten Geräte nicht über die passende Antennentechn
|
|||
Über die Zeit ist das Freifunknetz daher etwas zu einen Hotspotnetz verkommen, um bequem die Störerhaftung zu umgehen.
|
||||
Das ist nicht notwendigerweise schlimm oder schlecht, aber man hat sich dennoch etwas vom Wunschszenario entfernt.
|
||||
|
||||
Vorallem darf keine Verbindung zwischen benachbarten Knoten aus unterschiedlichen Hoods existieren (rote Linie zwischen **1** und **2**).
|
||||
Es würden zwei sonst getrennte Netze gemischt und Knoten fehlkonfiguriert, da eine Verbindung zu mehrere Gatways mit unterschiedlicher Konfiguration besteht.
|
||||
Vor allem darf keine Verbindung zwischen benachbarten Knoten aus unterschiedlichen Hoods existieren (rote Linie zwischen **1** und **2**).
|
||||
Es würden zwei sonst getrennte Netze gemischt und Knoten fehlkonfiguriert, da eine Verbindung zu mehrere Gateways mit unterschiedlicher Konfiguration besteht.
|
||||
Die Firmware unterbindet daher solche Verbindungen.
|
||||
|
||||
![Fehlerhafte Verbindung zwischen zwei Freifunkknoten aus unterschiedlichen Hoods](hoods_fehler.svg "Fehlerhafte Verbindung zwischen zwei Freifunkknoten aus unterschiedlichen Hoods")
|
||||
|
@ -134,50 +140,37 @@ Auch die Hood als ganzes könnte durch den höheren Resourcenverbrauch beeinträ
|
|||
Dank 60GHz Hardware bedeutet das mittlerweile bezahlbare Gigabit Geschwindigkeiten.
|
||||
Mehr ist dazu auch nicht zu sagen :)
|
||||
|
||||
---
|
||||
# TODO
|
||||
## Einleitung
|
||||
## Zusammenfassung
|
||||
|
||||
- weniger Details, dafür mehr Überblick
|
||||
- eher als Sprungbrett zu einzelnen Themen gedacht
|
||||
- Entscheidungshilfe Node vs L3
|
||||
- weniger als Nachschlagewerk gedacht, dafür hoffentlich roter Faden erkennbar
|
||||
- ertragbare Länge
|
||||
### Welche Firmware ist die richtige? **Node** oder **Layer 3**?
|
||||
|
||||
## Welche Firmware?
|
||||
Beide Firmwareversionen, **Node** und **Layer 3**, haben ihre Vorteile (+) und Nachteile (-):
|
||||
|
||||
- Einfache Auswahlkriterien
|
||||
- Noch einmal **kurz** Vor- und Nachteile auflisten
|
||||
| | Node | Layer3 |
|
||||
|-----------------------------------|:----:|:------:|
|
||||
| Konfigurationsaufwand | + | - |
|
||||
| Automatisches Wifi Mesh + Roaming | + | - |
|
||||
| Performance | - | + |
|
||||
| Flexibilität Peering | - | + |
|
||||
| Flexibilität Hardware | - | + |
|
||||
| Aufwand Firmwareentwicklung | - | + |
|
||||
| Aufwand Gateways | - | + |
|
||||
|
||||
| | Node | Layer3 |
|
||||
|---|:-:|:-:|
|
||||
| Konfiguration | + | - |
|
||||
| Automatisches Wifi Mesh + Roaming | + | - |
|
||||
| Performance | - | + |
|
||||
| Flexibilität Peering | - | + |
|
||||
| Flexibilität Hardware | - | + |
|
||||
| Aufwand Firmwareentwicklung | - | + |
|
||||
| Aufwand Gateways | - | + |
|
||||
| ... | ... | ... |
|
||||
#### Node
|
||||
|
||||
## Glossar
|
||||
- Fußnoten[^Layer3]?
|
||||
- tauchen nicht in der TOC auf
|
||||
- Position nicht steuerbar
|
||||
- sollte allerdings überall gehen
|
||||
- Links zu Headern? [Beispiel](#Beispiel) zu [Fußnoten](#Fußnoten)
|
||||
- Abhängig vom Markdownprocessor
|
||||
- Hedgedoc erzeugt eventuell andere IDs als gitea oder hugo
|
||||
Der Konfigurationsaufwand bei der Node Firmware ist kleiner. Man muss sich nicht um IPs kümmern und durch das automatische Meshen ist es auch nicht nötig einen Peering Partner zu suchen.
|
||||
|
||||
### Beispiel
|
||||
Auf gleicher Hardware wird man üblicherweise kleinere Geschwindigkeiten als mit der Layer 3 Firmware erzielen.
|
||||
|
||||
### Fußnoten
|
||||
Aus technischer Sicht ist die Node Firmware deutlich komplizierter aufgebaut und benötigt außerdem mit den Gateways zusätzliche Infrastruktur. Das macht sie in der Entwicklung zeitaufwendiger und im Betrieb gelegentlich auch weniger stabil.
|
||||
|
||||
[^Layer3]: **Layer3**
|
||||
usw
|
||||
Dafür muss sich der Betreiber, abgesehen von Name, Kontaktadresse und Position, um keine weitere Konfiguration kümmern.
|
||||
|
||||
## Bemerkungen / FAQs
|
||||
- Layer 3 Technik ist unabhängig von Freifunk Franken
|
||||
#### Layer 3
|
||||
|
||||
Die Konfiguration bei der Layer 3 Firmware gestaltet sich aus unterschiedlichen Gründen etwas schwieriger als bei der Node Firmware. Es fehlt aktuell an einer einfachen Eingabemöglichkeit für alle Funktionen, sodass die Konfiguration über die Konsole mit `ssh` geschehen muss. Für die Profis kein Problem - für jemanden, der das noch nie gesehen hat, kann das eine große Hürde sein.
|
||||
|
||||
Leider kann nicht alles "wegautomatisiert" werden. Wer gezielt Richtfunk und Tunnel aufbauen möchte, muss diese Peerings der Firmware auch irgendwie mitteilen. Wer seine IPs fest vergeben möchte muss sich auch darum kümmern und eintragen. Die höhere Flexibilität bezahlt man also mit etwas mehr Handarbeit. Je nach Ansicht kann dies natürlich Vor- und Nachteil sein.
|
||||
|
||||
[batman]: https://www.open-mesh.org/projects/batman-adv/wiki "B.A.T.M.A.N Advanced"
|
||||
[fastd]: https://github.com/NeoRaider/fastd "fastd"
|
||||
|
@ -191,19 +184,3 @@ usw
|
|||
[BGP]: https://en.wikipedia.org/wiki/Border_Gateway_Protocol
|
||||
[Wireguard]: https://www.wireguard.com/
|
||||
[GRE]: https://en.wikipedia.org/wiki/Generic_Routing_Encapsulation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,15 +24,13 @@ Es lassen sich auch sehr günstige Gateways realisieren, die mehrere Hoods perfo
|
|||
## Konzept
|
||||
|
||||
Die Daten für den VXLAN-Tunnel erhält der Router mit dem Hoodfile. Ein entsprechender `vpn` Eintrag muss vorhanden sein:
|
||||
```
|
||||
---
|
||||
```json
|
||||
"vpn": [
|
||||
{
|
||||
"protocol": "vxlan",
|
||||
"address": "gateway.url"
|
||||
}
|
||||
],
|
||||
---
|
||||
```
|
||||
|
||||
Der Router konfiguriert damit ein VXLAN Interface `vxlan0` als weiteres batman-adv Interface.
|
||||
|
@ -50,7 +48,7 @@ Auf den Gateways wird die jeweilige VXLAN Gegenstelle konfiguriert und ebenfalls
|
|||
Zum Testen `http://rl-fff1.fff.community/v2/` als keyserver eintragen. Man findet den Eintrag in der Datei
|
||||
|
||||
`/usr/lib/functions/fff/hoodfile`
|
||||
```
|
||||
```bash
|
||||
echo "Getting hoodfile from Keyserver"
|
||||
|
||||
if /bin/busybox wget -T15 -O "$file" "http://rl-fff1.fff.community/v2/?lat=$lat&long=$long"; then
|
||||
|
|
|
@ -13,11 +13,26 @@ Technik, um HTTPS Verbindungen weiterzuleiten, ohne die Verschlüsselung aufzubr
|
|||
|
||||
<https://de.wikipedia.org/wiki/Server_Name_Indication>
|
||||
|
||||
---
|
||||
## Anwendung: HTTPS Website im Freifunk hosten
|
||||
|
||||
## TLS Handshake
|
||||
Innerhalb des Freifunk Netzes war es schon immer recht simpel Websites zu hosten. Dank IPv6 und wie es im Freifunk Franken Netz umgesetzt ist, kann jeder sogar globale IPv6 Adressen nutzen. Man ist also weltweit per IPv6 erreichbar. Damit ist es einfach auch von einem kleinen Computer zuhause Services im Internet bereit zu stellen, ohne einen Server mieten zu müssen. Leider ist man gelegentlich trotzdem zusätzlich auf Erreichbarkeit via IPv4 angewiesen. Im Freifunk Franken Netz haben wir allerdings nur eine sehr begrenzte Anzahl an IPv4 Adressen und können daher nicht jedem Nutzer eine globale Adresse zur Verfügung stellen.
|
||||
|
||||
Wireshark mitschnitt beim Verbindungsaufbau nach <https://wiki.freifunk-franken.de>
|
||||
Mit dem [SNI Proxy]({{% relref "sni.fff.community.md" %}}), wie er auf [sni.fff.community][] betrieben wird, kann man seine IPv6-only Websites auch für IPv4-only Geräte verfügbar machen, indem man:
|
||||
|
||||
1. einen `AAAA` DNS Eintrag vom eigenen Webservice auf die gewünschte IPv6 Adresse setzt
|
||||
2. für den `A` DNS Eintrag die IPv4 Adresse wählt, wie sie auf der Anleitung von [sni.fff.community][] steht
|
||||
|
||||
Der Service hat eine öffentlich zugängliche IPv4 Adresse und kann dadurch IPv4 Verbindungen entgegen nehmen.
|
||||
|
||||
Der SNI Proxy inspiziert die ersten Bytes und ermittelt welcher Hostname angesprochen ist. Der Proxy baut dann eine Verbindung via IPv6 zu dem Webserver auf und leitet dann sämtliche Bytes zwischen Client und Server einfach weiter. Dabei wird keine Verschlüsselung aufgebrochen. Dadurch funktioniert insbesondere auch der Betrieb mit [Let's Encrypt Certificates](https://letsencrypt.org/) und Ende-zu-Ende Verschlüsselung bleibt erhalten.
|
||||
|
||||
## Funktionsweise im Detail
|
||||
|
||||
### TLS Handshake
|
||||
|
||||
Der Proxy macht sich zu Nutze, dass selbst bei einer verschlüsselten Verbindung via HTTPS häufig der Zielhostname in Klartext übermittelt wird (SNI: Server Name Indication).
|
||||
|
||||
Hier ein gekürzter Wireshark Mitschnitt beim Verbindungsaufbau nach <https://wiki.freifunk-franken.de>
|
||||
|
||||
```
|
||||
...
|
||||
|
@ -34,9 +49,9 @@ Transport Layer Security
|
|||
...
|
||||
```
|
||||
|
||||
Die aufgerufene Domain wird selbst bei `https://` im Klartext übertragen!
|
||||
### IPv6
|
||||
|
||||
## IPv6
|
||||
Sind Client und Server IPv6-fähig passiert der Verbindungsaufbau ganz normal direkt über IPv6 ohne extra Proxy.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
@ -45,12 +60,14 @@ sequenceDiagram
|
|||
participant DNS
|
||||
|
||||
client ->>+ DNS: AAAA? example.com
|
||||
DNS -->>- client: 2001:db8::
|
||||
DNS -->>- client: 2001:db8:1::
|
||||
client ->>+ srv: https://example.com
|
||||
srv -->- client: Connection
|
||||
```
|
||||
|
||||
## IPv4
|
||||
### IPv4
|
||||
|
||||
Für einen IPv4-only Client und einem IPv6-only Server sieht es folgendermaßen aus: Der Client fragt die IPv4 Adresse vom Zielhost ab und bekommt die IPv4 Adresse vom SNI Proxy geliefert. Der Client baut sodann die Verbindung mit dem SNI Proxy auf und übermittelt dabei beim TLS Handshake das eigentliche Ziel. Der SNI Proxy fragt dann die IPv6 Adresse vom Server ab und stellt eine Verbindung her. Die bereits vom Client übertragenen Bytes werden einfach dorthin kopiert und die Antworten vom Server zurück in Verbindung zum Client gegeben.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
@ -69,7 +86,11 @@ sequenceDiagram
|
|||
deactivate sni
|
||||
```
|
||||
|
||||
## NAT46 Mode
|
||||
### NAT46 Mode
|
||||
|
||||
Als Erweiterung kann der SNI Proxy noch die Adresse anpassen, mit der die Verbindungen zu den Servern aufgebaut wird. Das ist sinnvoll, damit aus der Sicht vom Server nicht alle Clients von der selben IPv6 kommen. Damit lassen sich also im Notfall auch Firewall regeln bauen, sollte aus einem bestimmten IP Bereich vermehrt Angriffe kommen. Man muss also nicht gleich sämtlichen Verkehr vom SNI Proxy sperren.
|
||||
|
||||
Dazu bettet der SNI Proxy die 4 Bytes aus der Adresse vom Client in die unteren Bytes der IPv6 Adresse mit der der SNI Proxy die Verbindung aufbaut:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
@ -83,6 +104,6 @@ sequenceDiagram
|
|||
deactivate sni
|
||||
```
|
||||
|
||||
## Beispiel Hosting im Freifunk
|
||||
Im Beispiel hat der Client die IP `192.0.2.1`. Diese 4 Bytes entsprechen `c000:201` in IPv6 Hexadezimalschreibweise. Zum SNI Proxy selber wird nicht nur eine IPv6 Adresse, sondern ein ganzen `/96` Netz geroutet. Damit sind genug Adressen vorhanden, um das ganze IPv4 Internet in IPv6 Adressen einzubetten. Der SNI Proxy erzeugt die Adresse, indem er an das Prefix `2001:db8:2::/96` noch die übrigen 4 Bytes mit der Client Adresse auffüllt. Das ergibt dann die Adresse `2001:db8:2::c000:201`, die für die Verbindung benutzt wird.
|
||||
|
||||
- https://rmon.bareminimum.eu
|
||||
[sni.fff.community]: https://sni.fff.community "Anleitung für den SNI Proxy"
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
Loading…
Reference in New Issue