Layer3Firmware: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
(24 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Allgemeine Informationen ==
== Allgemeine Informationen ==


Die aktuelle Alpha Version enthält zum ersten Mal die "layer3"-Variante.
Die aktuelle Release Version enthält die "layer3"-Variante.
'''Vorsicht''': Diese unterscheidet sich in der Konfiguration (teilweise deutlich) von den inoffiziellen Varianten. Bestehende Konfigurationen müssen ggf. überarbeitet werden.
 
'''Vorsicht''': Diese unterscheidet sich in der Konfiguration (teilweise deutlich) von den alten inoffiziellen Varianten. Bestehende Konfigurationen müssen ggf. überarbeitet werden.
 
'''Batman''':
Zum aktuellen Stand ist kein Batman enthalten, ein Meshen über Batman mit der normalen Node Firmware ist zum aktuellen Zeitpunkt nicht möglich. Es müssen Accesspoints mit Stockfirmware, OpenWRT o.ä. angeschlossen werden.




Zeile 21: Zeile 25:


'''Achtung:''' Unbekannte Einstellungen außerhalb der Gatewaykonfiguration (z.B. manuell gesetzte Einstellungen in /etc/config/network) werden möglicherweise entfernt!
'''Achtung:''' Unbekannte Einstellungen außerhalb der Gatewaykonfiguration (z.B. manuell gesetzte Einstellungen in /etc/config/network) werden möglicherweise entfernt!
=== Router Auswahl ===
Es wird ein von uns unterstützer Router mit mindestens 8MB Flash benötigt. Auf der Geschwindigkeitsseite kann angeguckt werden was die Modelle schaffen: https://wiki.freifunk-franken.de/w/Geschwindigkeiten#Leistungstests
Die Firmware wird genauso geflasht wie die normale Node Firmware https://wiki.freifunk-franken.de/w/Portal:Firmware, danach ist die Einrichtung allerdings anders


== Download ==
== Download ==


* https://dev.freifunk-franken.de/layer3/
* https://dev.freifunk-franken.de/layer3/
'''Achtung:''' Die Imagedatei *.bin darf nicht länger als 64 Zeichen sein, sonst wird sie beim flashen nicht erkannt!


== Typischer Ablauf einer Installation ==
== Typischer Ablauf einer Installation ==


# Router flashen (für EdgeRouterX, ein bischen komplexer, siehe unten *)
# Router flashen: https://wiki.freifunk-franken.de/w/Portal:Firmware
# Als Client mit dem Router per SSH verbinden ''oder'' aus dem Heimnetzwerk über die WAN-IP des Routers per SSH verbinden
# Als Client mit dem Router per SSH verbinden ([[Firmwareinstallation/wr841 | bei TP-Link auf LAN-Port achten]]) ''oder'' aus dem Heimnetzwerk über die WAN-IP des Routers per SSH verbinden: "SSH root@fdff::1" Passwort:ffol Bitte sofort ändern!
# [[#Generieren_der_Keys_für_WireGuard|WireGuard-Keypair generieren]] falls WireGuard verwendet wird (Schlüssel sichern!) oder sich für eine Richtfunkstrecke absprechen
# [[#Generieren_der_Keys_für_WireGuard|WireGuard-Keypair generieren]] falls WireGuard verwendet wird (Schlüssel sichern!) oder sich für eine Richtfunkstrecke absprechen
# [[#Peering-Partner|Peering-Partner]] für WireGuard suchen, persönlich treffen und Schlüssel austauschen oder auf eigenen Server verbinden
# [[#Peering-Partner|Peering-Partner]] für WireGuard suchen, persönlich treffen und Schlüssel austauschen oder auf eigenen Server verbinden
# Die [[#.2Fetc.2Fconfig.2Fgateway|Gatewaykonfiguration]] auf das Gerät kopieren (/etc/config/gateway)
# Die [[#.2Fetc.2Fconfig.2Fgateway|Gatewaykonfiguration]] auf das Gerät kopieren (/etc/config/gateway)<br />IP-Adressen (IPv4, IPv6), Subnetz vergeben und dokumentieren und in /etc/config/gateway eintragen
# Mit „[[#configuregateway|configuregateway]] -c“ die Einstellungen aus der Gatewayconfig in die Openwrt Configs übernehmen.
# Mit „[[#configuregateway|configuregateway]] -c“ die Einstellungen aus der Gatewayconfig in die Openwrt Configs übernehmen.
# Mit „[[#configuregateway|configuregateway]] -t“ die Einstellungen testen, falls das Script nicht manuell abgebrochen wird, werden nach 200 Sekunden die Einstellungen zurück gesetzt
# Mit „[[#configuregateway|configuregateway]] -t“ die Einstellungen testen, falls das Script nicht manuell abgebrochen wird, werden nach 200 Sekunden die Einstellungen zurück gesetzt
Zeile 44: Zeile 50:
https://wiki.freifunk-franken.de/w/Portal:Layer3Peering
https://wiki.freifunk-franken.de/w/Portal:Layer3Peering


Für Redundanz sollten (mindestens) zwei Peerings eingestellt werden(zum Testen reicht eines aber völlig aus).  
Allgemein sollte eigene Infrastruktur (z.b. Richtfunk) dem VPN immer bevorzugt werden. Wir wollen unser eigenes Netz aufbauen und nicht auf den Rücken von großen Providern. Wenn es keine Möglichkeit gibt sich an dem Netz per Richtfunk oder andere eigene Transporttechnologien anzuschließen kann auch VPN über bestehende Internetleitung verwendet werden. Hier eignet sich wireguard oder GRE sehr gut was beides mit der Firmware möglich ist.
Sinnvoll ist es auch, wenn nicht beide Peerings einfach per VPN-Tunnel laufen, sondern z.&nbsp;B. ein weiteres per Richtfunk; somit läuft das Netz auch weiter wenn der Internetanschluss ausfällt!
 
=== Per LAN Kabel/Richtfunk/Glasfaser ===
Bevorzugte Variante:
Es kann am Gateway Babel auf einen (oder mehrere) Ethernetport(s) (wenn nötig auch VLAN-getagget) gelegt werden. Somit kann auch über Kabel gepeered werden.  
Natürlich kann das Peering auch über [https://wiki.freifunk-franken.de/w/VLAN_und_Richtfunk Richtfunk], [[Glasfaser-Verbindung|Glasfaser]] oder sonstige Technologien (z.&nbsp;B. Internet-Exchange) realisiert werden.


=== VPN-Tunnel via WireGuard ===
=== VPN-Tunnel via WireGuard ===
Wenn du über das Internet peeren willst, muss die Gegenseite WireGuard sprechen.
Wenn du über das Internet peeren willst, muss die Gegenseite WireGuard sprechen.
Es ist aktuell in der Firmware nicht möglich, aber man kann theoretisch auch andere Tunneltechnologien (z.&nbsp;B. GRE eignet sich sehr gut) für Babel verwenden.


Für WireGuard musst du dir einen Peering-Partner suchen – mit einem Menschen reden, ob er mit dir ein Peering eingehen will – und mit ihm deinen Public-Key austauschen. Mit diesem könnt ihr die VPN-Verbindung aufbauen.
Für WireGuard musst du dir einen Peering-Partner suchen – mit einem Menschen reden, ob er mit dir ein Peering eingehen will – und mit ihm deinen Public-Key austauschen. Mit diesem könnt ihr die VPN-Verbindung aufbauen.
Zeile 70: Zeile 78:
Es empfiehlt sich, den ''privatekey'' zu sichern, da man sonst vom Peering-Partner gehauen wird, wenn deswegen der Tunnel neu eingerichtet werden muss.
Es empfiehlt sich, den ''privatekey'' zu sichern, da man sonst vom Peering-Partner gehauen wird, wenn deswegen der Tunnel neu eingerichtet werden muss.


=== Per LAN Kabel/Richtfunk/Glasfaser ===
=== VPN über GRE ===
Es kann am Gateway Babel auch auf einen Ethernetport (wenn nötig auch VLAN-getagget) gelegt werden. Somit kann auch über Kabel gepeered werden.
*folgt
Natürlich kann das Peering auch über [https://wiki.freifunk-franken.de/w/VLAN_und_Richtfunk Richtfunk], [[Glasfaser-Verbindung|Glasfaser]] oder sonstige Technologien (z.&nbsp;B. Internet-Exchange) realisiert werden.


== Babel Metrik ==
== Babel Metrik ==
Zeile 90: Zeile 97:
Siehe hier: [[Gatewayfirmware_Config]]
Siehe hier: [[Gatewayfirmware_Config]]


== Leistungstests ==
{| class="wikitable"
! Gerät
! System-on-a-Chip (SoC)
! CPU [MHz]
! WireGuard [Mbit/s]
! Routing [Mbit/s]
|-
| TP-Link Archer C2600 || Qualcomm Atheros IPQ8064 || 2 × 1400 || 140–170 || ''unbekannt''
|-
| TP-Link Archer C7 v2 || Qualcomm Atheros QCA9558 || 720 || ca. 50 || ''unbekannt''
|-
| TP-Link TL-WDR4300 v1 || Atheros AR9344 || 560 || ca. 55 || ''unbekannt''
|-
| TP-Link TL-WDR4900 v1 || Freescale MPC85xx || 800 || 95–110 || 650–700
|-
| TP-Link TL-WR1043N/ND v1 || Atheros AR9132 || 400 || 40–46 || 150–200
|-
| TP-Link TL-WR1043N/ND v2, 3 || Qualcomm Atheros QCA9558 || 720 || 56,5 || ''unbekannt''
|-
| TP-Link TL-WR1043N/ND v4 || Qualcomm Atheros QCA9563 || 750 || ca. 80 || ''unbekannt''
|-
| Ubiquiti EdgeRouter X || || || ca. 200 || 800–930
|-
| GL.iNet GL-AR150 || Atheros AR9331 || 400 || ca. 31 || ca. 96 (nur 100Mbit/s Ports vorhanden)
|-
|}
== EdgeRouterX flashen ==
zum erfolgreichen Flashen eines Gerätes das noch mit Orginalfirmware (hier V1.10.7.5127989.x.x) ausgestattet ist, musste zuerst ein Minimalsystem geflasht werden. Scheinbar wird das aber z.Zt. nicht beim Bauen der Firmware erzeugt -
bin kein FW Entwickler, wollte nur den Router flashen.
Fabian hat auf seiner Seite https://fw.sgstbr.de/tools eine entsprechende Datei liegen.
Ablauf: (default IP: 192.168.1.1, user: ubnt, pw: ubnt, Laptop mit fix 192.168.1.111 an Port0)
Initramfs downloaden und mit scp auf den Router schieben, dann auf den Router connecten, die initramfs als zusätzliches Image einrichten und Neustart machen.
* scp openwrt-ramips-mt7621-ubnt-erx-initramfs-factory.tar ubnt@192.168.1.1:/tmp
* ssh ubnt@192.168.1.1
* add system image /tmp/openwrt-ramips-mt7621-ubnt-erx-initramfs-factory.tar
* reboot
Danach muss man von eth0 auf eth1 umstecken, da openwrt auf eth0 WAN hat, auch der User hat sich geändert auf root, kein PW. Jetzt kann man analog zu vorher die Zielfirmware flashen (.ssh/known_hosts bereinigen, sonst bekommt man eine eine mitm Warnung).
* scp fff-layer3-20191130-alpha-ubnt-erx-sysupgrade.tar ubnt@192.168.1.1:/tmp
* ssh root@192.168.1.1
* sysupgrade /tmp/fff-layer3-20191130-alpha-ubnt-erx-sysupgrade.tar


Die Portbelegung des Routers ändert sich abermals, siehe Siehe hier: [[Gatewayfirmware_Config#Ubiquiti_EdgeRouter_ER-X_.2F_ER-X-SFP]].
Der Router kann nun per fdff::1 (Port3 oder 4) weiter konfiguriert werden (webui oder ssh).
(2.12.2019)


[[Kategorie:Technik]]
[[Kategorie:Technik]]
[[Kategorie:Dezentrale Hood]]
[[Kategorie:Dezentrale Hood]]
[[Kategorie:Gateways]]
[[Kategorie:Gateways]]

Version vom 13. Februar 2020, 06:09 Uhr

Allgemeine Informationen

Die aktuelle Release Version enthält die "layer3"-Variante.

Vorsicht: Diese unterscheidet sich in der Konfiguration (teilweise deutlich) von den alten inoffiziellen Varianten. Bestehende Konfigurationen müssen ggf. überarbeitet werden.

Batman: Zum aktuellen Stand ist kein Batman enthalten, ein Meshen über Batman mit der normalen Node Firmware ist zum aktuellen Zeitpunkt nicht möglich. Es müssen Accesspoints mit Stockfirmware, OpenWRT o.ä. angeschlossen werden.


Weiterhin gibt es die inoffizielle Firmware von Adrian, siehe Gatewayfirmware_Adrian.

Wichtige Dateien

Gatewaykonfiguration
/etc/config/gateway

Script configuregateway

Die Gatewayfirmware kann sehr einfach mithilfe des Skripts configuregateway auf Basis der Gatewaykonfiguration konfiguriert werden.

Das Script configuregateway wird aktuell nie automatisch ausgeführt. Entsprechend muss es nach Änderungen erneut ausgeführt werden, sowie nach Updates. (Es werden zwar die o.g. Dateien beim Upgrade kopiert, jedoch muss eben manuell configuregateway ausgeführt werden, um sie anzuwenden)

Achtung: Unbekannte Einstellungen außerhalb der Gatewaykonfiguration (z.B. manuell gesetzte Einstellungen in /etc/config/network) werden möglicherweise entfernt!

Router Auswahl

Es wird ein von uns unterstützer Router mit mindestens 8MB Flash benötigt. Auf der Geschwindigkeitsseite kann angeguckt werden was die Modelle schaffen: https://wiki.freifunk-franken.de/w/Geschwindigkeiten#Leistungstests Die Firmware wird genauso geflasht wie die normale Node Firmware https://wiki.freifunk-franken.de/w/Portal:Firmware, danach ist die Einrichtung allerdings anders

Download

Typischer Ablauf einer Installation

  1. Router flashen: https://wiki.freifunk-franken.de/w/Portal:Firmware
  2. Als Client mit dem Router per SSH verbinden ( bei TP-Link auf LAN-Port achten) oder aus dem Heimnetzwerk über die WAN-IP des Routers per SSH verbinden: "SSH root@fdff::1" Passwort:ffol Bitte sofort ändern!
  3. WireGuard-Keypair generieren falls WireGuard verwendet wird (Schlüssel sichern!) oder sich für eine Richtfunkstrecke absprechen
  4. Peering-Partner für WireGuard suchen, persönlich treffen und Schlüssel austauschen oder auf eigenen Server verbinden
  5. Die Gatewaykonfiguration auf das Gerät kopieren (/etc/config/gateway)
    IP-Adressen (IPv4, IPv6), Subnetz vergeben und dokumentieren und in /etc/config/gateway eintragen
  6. Mit „configuregateway -c“ die Einstellungen aus der Gatewayconfig in die Openwrt Configs übernehmen.
  7. Mit „configuregateway -t“ die Einstellungen testen, falls das Script nicht manuell abgebrochen wird, werden nach 200 Sekunden die Einstellungen zurück gesetzt
  8. Falls der Router noch erreichbar ist, das Script beenden (STRG + C) falls man von der SSH Session heruntergeflogen ist, innerhalb 200 Sekunden erneut verbinden und das configuregateway-Script killen (z. B. mit „killall configuregateway“). Sollte man auf den Router nicht mehr drauf kommen, werden nach 200 Sekunden alle Einstellungen zurück gesetzt und man ist wieder im Ursprungszustand
  9. Alle Einstellungen prüfen
  10. Mit „configuregateway -a“ werden alle Einstellungen fest gespeichert, erst hiermit wird alles rebootfest geschrieben. Davor kann durch einen „reboot“ jederzeit der Urzustand wieder erreicht werden.

Peering-Partner

https://wiki.freifunk-franken.de/w/Portal:Layer3Peering

Allgemein sollte eigene Infrastruktur (z.b. Richtfunk) dem VPN immer bevorzugt werden. Wir wollen unser eigenes Netz aufbauen und nicht auf den Rücken von großen Providern. Wenn es keine Möglichkeit gibt sich an dem Netz per Richtfunk oder andere eigene Transporttechnologien anzuschließen kann auch VPN über bestehende Internetleitung verwendet werden. Hier eignet sich wireguard oder GRE sehr gut was beides mit der Firmware möglich ist.

Per LAN Kabel/Richtfunk/Glasfaser

Bevorzugte Variante: Es kann am Gateway Babel auf einen (oder mehrere) Ethernetport(s) (wenn nötig auch VLAN-getagget) gelegt werden. Somit kann auch über Kabel gepeered werden. Natürlich kann das Peering auch über Richtfunk, Glasfaser oder sonstige Technologien (z. B. Internet-Exchange) realisiert werden.

VPN-Tunnel via WireGuard

Wenn du über das Internet peeren willst, muss die Gegenseite WireGuard sprechen.

Für WireGuard musst du dir einen Peering-Partner suchen – mit einem Menschen reden, ob er mit dir ein Peering eingehen will – und mit ihm deinen Public-Key austauschen. Mit diesem könnt ihr die VPN-Verbindung aufbauen.

Generieren der Keys für WireGuard

Ausführliche Anleitung: https://www.wireguard.com/quickstart/

Für WireGuard muss ein Keypair generiert werden. Am einfachsten macht man dies per SSH direkt am Gateway-Router:

wg genkey | tee privatekey | wg pubkey > publickey

Den privatekey in der gleichnamigen Datei trägst du in deine gatewayconfig ein. Den publickey teilst du deinem Peering-Partner mit.

Prinzipiell ist es möglich, pro Router jeweils ein Keypair zu generieren oder immer das gleiche Keypair für alle Gateways zu verwenden (mit größerem Risiko bei „Verlust“).

Es empfiehlt sich, den privatekey zu sichern, da man sonst vom Peering-Partner gehauen wird, wenn deswegen der Tunnel neu eingerichtet werden muss.

VPN über GRE

  • folgt

Babel Metrik

Siehe hier: Richtlinien für Babel Penalty bei dezentralen Hoods

configuregateway

Folgende Parameter können übergeben werden:

  • -c: Konfiguriert das Gateway mit uci. Kein commit, kein Anwenden der Einstellungen!
  • -t: Startet alle Dienste neu, damit werden die Einstellungen aus -c angewendet. Script wartet bis zu 200 Sekunden darauf, dass es beendet wird (Strg + C, wenn SSH nicht verloren geht, ansonsten „kill(all)“). Wird das Script in dieser Zeit nicht beendet, werden die Einstellungen zurückgesetzt und die Dienste erneut neu gestartet.
  • -a: Übernimmt die Änderungen (uci commit), startet Dienste neu.
  • -r: Macht die Änderungen rückgängig.

/etc/config/gateway

Siehe hier: Gatewayfirmware_Config