Layer3Firmware: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 3: Zeile 3:
=== Wichtige Dateien ===
=== Wichtige Dateien ===


[[#hood_file|'''Hoodfile (Fabian)''']]
'''[[Hood file]]''' (Fabian)
<code>/etc/hoodfile</code>
<code>/etc/hoodfile</code>
[[#hood_file|'''Hoodfile (Adrian)''']]
'''Hood file''' (Adrian)
<code>/www/hood/keyxchangev2data</code>
<code>/www/hood/keyxchangev2data</code>
[[#.2Fetc.2Fconfig.2Fgateway|'''Gatewaykonfiguration''']]
'''Gatewaykonfiguration'''
<code>/etc/config/gateway</code>
<code>/etc/config/gateway</code>


=== Script configuregateway ===
=== Script ''configuregateway'' ===


Die Gatewayfirmware kann sehr einfach mithilfe des Skripts configuregateway auf Basis von '''Hoodfile''' und der '''Gatewaykonfiguration''' konfiguriert werden.
Die Gatewayfirmware kann sehr einfach mithilfe des Skripts ''configuregateway'' auf Basis von '''Hood file''' und der '''Gatewaykonfiguration''' konfiguriert werden.


Das Script configuregateway wird nie automatisch ausgeführt.  
Das Script ''configuregateway'' wird nie automatisch ausgeführt.  
Entsprechend muss es nach Änderungen erneut ausgeführt werden sowie nach Updates.
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 ...)
(Es werden zwar die o.&nbsp;g. Dateien beim Upgrade ''kopiert'', jedoch muss eben manuell ''configuregateway'' ausgeführt werden, um sie ''anzuwenden'' …)


'''ACHTUNG:''' Unbekannte Einstellungen werden möglicherweise entfernt!
'''Achtung:''' Unbekannte Einstellungen werden möglicherweise entfernt!


ULA und Wifi bezieht das Skript aus der '''Hoodfile''', den Rest aus der '''Gatewaykonfiguration'''.
ULA und Wifi bezieht das Script aus der '''Hood file''', den Rest aus der '''Gatewaykonfiguration'''.


=== Firmwarezweige ===
=== Firmwarezweige ===
Zeile 34: Zeile 34:
== Download ==
== Download ==


Fertige Builds gibt es entsprechend den Tags aus dem o.g. Repository hier:
Fertige Builds gibt es entsprechend den Tags aus dem o.&nbsp;g. Repository hier:
* http://fw.sgstbr.de/gateway/  (Nur über Internet erreichbar! Die Kiste hat keine Legacy IP (IPv4))
* http://fw.sgstbr.de/gateway/  (Nur über Internet erreichbar! Die Kiste hat keine Legacy IP (IPv4))
** Aktuell empfohlener Build: fbl-gateway-20180930
** Aktuell empfohlener Build: fbl-gateway-20180930
Zeile 40: Zeile 40:




'''ACHTUNG:''' Die Imagedatei *.bin darf nicht länger als 64 Zeichen sein, sonst wird sie beim flashen nicht erkannt!
'''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
# Router flashen
# 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 ''oder'' aus dem Heimnetzwerk über die WAN-IP des Routers per SSH verbinden
# [[#Generieren_der_Keys|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
# [[#Peering-Partner|Peering-Partner]] für WireGuard suchen, persönlich treffen und Schlüssel austauschen
# 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)
# Das [[#hood_file|Hoodfile]] auf das Gerät kopieren (/etc/hoodfile oder /www/hood/keyxchangev2data)
# Das [[#hood_file|Hoodfile]] auf das Gerät kopieren (/etc/hoodfile oder /www/hood/keyxchangev2data)
# 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
# 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 skript 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
# 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.&nbsp;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
# alle Einstellungen prüfen
# Alle Einstellungen prüfen
# Mit "[[#configuregateway|configuregateway]] -a" werden alle Einstellungen fest gespeichert, erst hiermit wird alles rebootfest geschrieben. Davor kann durch einen reboot jederzeit der Urzustand wieder erreicht werden.
# Mit [[#configuregateway|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 ==
== Peering-Partner ==
Zeile 60: Zeile 60:


Für Redundanz sollten (mindestens) zwei Peerings eingestellt werden(zum Testen reicht eines aber völlig aus).  
Für Redundanz sollten (mindestens) zwei Peerings eingestellt werden(zum Testen reicht eines aber völlig aus).  
Sinnvoll ist es auch, wenn nicht beide Peerings einfach per VPN-Tunnel laufenn sondern z.b. ein weiteres per Richtfunk. somit läuft das Netz auch weiter wenn der Internetanschluss ausfällt!  
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!  


=== 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.b. GRE eignet sich sehr gut) für Babel verwenden.
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.


==== Generieren der Keys für wireguard ====
==== Generieren der Keys für WireGuard ====


Ausführliche Anleitung: https://www.wireguard.com/quickstart/
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:
Für WireGuard muss ein Keypair generiert werden. Am einfachsten macht man dies per SSH direkt am Gateway-Router:


<code>
<code>
Zeile 79: Zeile 79:
</code>
</code>


Den privatekey in der gleichnamigen Datei trägst du in deine gatewayconfig ein. Den publickey teilst du deinem Peering-Partner mit.
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").
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.
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 ===
=== Per LAN Kabel/Richtfunk/Glasfaser ===
Es kann am Gateway Babel auch auf einen Ethernetport (wenn nötig auch VLAN-getagget) gelegt werden. Somit kann auch über Kabel gepeered werden.  
Es kann am Gateway Babel auch auf einen Ethernetport (wenn nötig auch VLAN-getagget) gelegt werden. Somit kann auch über Kabel gepeered werden.  
Natürlich kann das peering auch über Richtfunk, [[Glasfaser-Verbindung|Glasfaser]] oder sonstige Technologien (z.b. Internet-Exchange) realisiert werden.
Natürlich kann das Peering auch über Richtfunk, [[Glasfaser-Verbindung|Glasfaser]] oder sonstige Technologien (z.&nbsp;B. Internet-Exchange) realisiert werden.


== hood file ==
== Hood file ==


Das Hood File ist konzeptionell identisch zu der unter V2 verwendeten Datei.
Das Hood File ist konzeptionell identisch zu der unter V2 verwendeten Datei.
Zeile 105: Zeile 105:
Siehe hier: [[Freifunk-Gateway_aufsetzen/Babel#Richtlinien_f.C3.BCr_Babel_Penalty_bei_dezentralen_Hoods|Richtlinien für Babel Penalty bei dezentralen Hoods]]
Siehe hier: [[Freifunk-Gateway_aufsetzen/Babel#Richtlinien_f.C3.BCr_Babel_Penalty_bei_dezentralen_Hoods|Richtlinien für Babel Penalty bei dezentralen Hoods]]


== configuregateway ==
== ''configuregateway'' ==


Folgende Parameter können übergeben werden:
Folgende Parameter können übergeben werden:
* -c: Konfiguriert das Gateway mit uci. Kein commit, kein Anwenden der Einstellungen!
* ''-c'': Konfiguriert das Gateway mit ''uci''. Kein ''commit'', kein Anwenden der Einstellungen!
* -t: Startet alle Dienste neu, damit werden die Einstellungen aus -c angewendet. Skript wartet bis zu 200s darauf, dass es beendet wird (Strg + c wenn ssh nicht verloren geht, ansonsten kill(all)). Wird das Skript in dieser Zeit nicht beendet, werden die Einstellungen zurückgesetzt und die Dienste erneut neu gestartet.
* ''-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: Applied die Änderungen (uci commit), startet Dienste neu.
* ''-a'': Übernimmt die Änderungen (''uci commit''), startet Dienste neu.
* -r: Revert changes.
* ''-r'': Macht die Änderungen rückgängig.


== /etc/config/gateway ==
== /etc/config/gateway ==
Zeile 121: Zeile 121:
IPv6: [[Portal:Netz/IPv6]]
IPv6: [[Portal:Netz/IPv6]]


==== Beispiel Konfiguration ====
==== Beispielkonfiguration ====


Eine Bespielkonfiguration mit einem direkten Peer und einem Wireguardpeer gibts hier: https://gist.github.com/fblaese/ca4d903b20b4d7033553f48625b93ca6
Eine Bespielkonfiguration mit einem direkten Peer und einem WireGuardpeer gibt’s hier: https://gist.github.com/fblaese/ca4d903b20b4d7033553f48625b93ca6


'''ACHTUNG:''' Die VLAN Settings hier sind für den wdr4900 für andere Geräte muss z.b. geprüft werden auf welchen Port der WAN liegt. Eine Liste ist ganz unten zu finden oder in der offiziellen Firmware https://github.com/FreifunkFranken/firmware/tree/master/src/packages/fff/fff-network/ar71xx
'''Achtung:''' Die VLAN-Einstellungen hier sind für den TL-WDR4900, für andere Geräte muss z.&nbsp;B. geprüft werden auf welchen Port der WAN liegt. Eine Liste ist ganz unten zu finden oder in der offiziellen Firmware: https://github.com/FreifunkFranken/firmware/tree/master/src/packages/fff/fff-network/ar71xx


==== gateway ====
==== gateway ====
Zeile 132: Zeile 132:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| name || string || no ||
| name || string || no ||
|-
|-
| peer_ip || IPv4 Adresse || no || IPv4 Adresse für Peerings
| peer_ip || IPv4-Adresse || no || IPv4-Adresse für Peerings
|-
|-
| peer_ip6 || IPv6 Adresse || no || IPv6 Adresse für Peerings
| peer_ip6 || IPv6-Adresse || no || IPv6-Adresse für Peerings
|-
|-
|}
|}
Zeile 147: Zeile 147:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| comment || string || no ||
| comment || string || no ||
Zeile 160: Zeile 160:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| iface || interface || no || Clientnetz auf Interface legen
| iface || interface || no || Clientnetz auf Interface legen
|-
|-
| vlan || number || no || Clientnetz auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(Alternativ zu iface!!)'''
| vlan || number || no || Clientnetz auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(alternativ zu ''iface''!)'''
|-
|-
| ipaddr || IPv4 Adresse || no || Router-IP im Client-Netz (CIDR Notation)
| ipaddr || IPv4-Adresse || no || Router-IP im Client-Netz (CIDR Notation)
|-
|-
| ip6addr || IPv6 Adresse || no || Router-IP im Client-Netz (CIDR Notation)
| ip6addr || IPv6-Adresse || no || Router-IP im Client-Netz (CIDR Notation)
|-
|-
| dhcp_start || IPv4 Adresse || no || DHCP Startadresse
| dhcp_start || IPv4-Adresse || no || DHCP-Startadresse
|-
|-
| dhcp_limit || number || no || Maximale Anzahl an DHCP-Leases (default 150)
| dhcp_limit || number || no || Maximale Anzahl an DHCP-Leases (default 150)
Zeile 181: Zeile 181:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| server || list || no || DNS-Server, auf den geforwarded wird
| server || list || no || DNS-Server, auf den geforwarded wird
Zeile 192: Zeile 192:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| iface || interface || no || [[B.A.T.M.A.N.]] auf physikalisches auf Interface legen
| iface || interface || no || [[B.A.T.M.A.N.]] auf physikalisches auf Interface legen
|-
|-
| vlan || number || no || B.A.T.M.A.N. auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(Alternativ zu iface!!)'''
| vlan || number || no || B.A.T.M.A.N. auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(alternativ zu ''iface''!)'''
|-
|-
|}
|}
Zeile 205: Zeile 205:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| iface || interface || no || Babel auf physikalisches Interface legen
| iface || interface || no || Babel auf physikalisches Interface legen
|-
|-
| vlan || number || no || Babel auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(Alternativ zu iface!!)'''
| vlan || number || no || Babel auf VLAN mit angegebener IP auf dem Standard-Switch legen '''(alternativ zu ''iface''!)'''
|-
|-
| type || babel-type || no || Babel Verbindungstyp (z.B. wired, wireless, tunnel, ..)
| type || babel-type || no || Babel-Verbindungstyp (z.&nbsp;B. ''wired'', ''wireless'', ''tunnel'' …)
|-
|-
|}
|}
Zeile 220: Zeile 220:
! Type
! Type
! Required
! Required
! Description
! Beschreibung
|-
|-
| endpoint_host || host oder ip || yes ||
| endpoint_host || host oder ip || yes ||
Zeile 230: Zeile 230:
| public_key || wireguard pubkey || yes ||
| public_key || wireguard pubkey || yes ||
|-
|-
| private_key || wireguard privkey || no || automatically generated if unspecified
| private_key || wireguard privkey || no || ''automatically generated if unspecified''
|-
|-
|}
|}


== Hardware Port Belegungen ==
== Hardware-Port-Belegungen ==


Die Switch Port Belegung für die gängigen und genutzten Router für die VLAN Konfiguration.
Die Switch-Port-Belegung für die gängigen und genutzten Router für die VLAN-Konfiguration.


==== TP-Link WDR4900 v1 ====
==== TP-Link WDR4900 v1 ====
Zeile 255: Zeile 255:
|-
|-
|}
|}


==== TP-Link WR1043ND v1 ====
==== TP-Link WR1043ND v1 ====
Zeile 275: Zeile 274:
|}
|}


==== TP-Link WR1043ND v2 + v3 ====
==== TP-Link WR1043ND v2, v3 ====


{|
{|
Zeile 295: Zeile 294:
|}
|}


== Perfomance Tests ==
== Leistungstests ==


{|
{|
! Device
! Gerät
! Wireguard (Mbit/s)
! WireGuard (Mbit/s)
! Routing (Mbit/s)
! Routing (Mbit/s)
|-
|-
| wr1043 v1 || 40 - 46 || 150 - 200
| TP-Link Archer C2600 || 140–170 || ''unbekannt''
|-
| TP-Link Archer C7 v2 || 50 || ''unbekannt''
|-
|-
| wr1043 ab v2 || ?? || ??
| TP-Link TL-WDR4900 v1 || 95–110 || 650–700
|-
|-
| wdr4900 || 95 - 110 || 650 - 700
| TP-Link TL-WR1043N/ND v1 || 40–46 || 150–200
|-
|-
| C2600 || 140 - 170 || ??
| TP-Link TL-WR1043N/ND ab v2 || ''unbekannt'' || ''unbekannt''
|-
|-
| ER-X_SFP || 35 - 50 || 800 - 930
| Ubiquiti Networks EdgeRouter X SFP || 35–50 || 800–930
|-
|-
|}
|}

Version vom 7. Oktober 2018, 11:17 Uhr

Allgemeine Informationen

Wichtige Dateien

Hood file (Fabian) /etc/hoodfile Hood file (Adrian) /www/hood/keyxchangev2data Gatewaykonfiguration /etc/config/gateway

Script configuregateway

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

Das Script configuregateway wird 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 werden möglicherweise entfernt!

ULA und Wifi bezieht das Script aus der Hood file, den Rest aus der Gatewaykonfiguration.

Firmwarezweige

Die Gatewayfirmware wird aktuell größtenteils hier entwickelt:

Die beiden Firmwarezweige unterscheiden sich funktional wenig voneinander. Am besten immer den aktuellen Stand abfragen, was gerade wie zu installieren ist.

Download

Fertige Builds gibt es entsprechend den Tags aus dem o. g. Repository hier:


Achtung: Die Imagedatei *.bin darf nicht länger als 64 Zeichen sein, sonst wird sie beim flashen nicht erkannt!

Typischer Ablauf einer Installation

  1. Router flashen
  2. Als Client mit dem Router per SSH verbinden oder aus dem Heimnetzwerk über die WAN-IP des Routers per SSH verbinden
  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
  5. Die Gatewaykonfiguration auf das Gerät kopieren (/etc/config/gateway)
  6. Das Hoodfile auf das Gerät kopieren (/etc/hoodfile oder /www/hood/keyxchangev2data)
  7. Mit „configuregateway -c“ die Einstellungen aus der Gatewayconfig in die Openwrt Configs übernehmen.
  8. Mit „configuregateway -t“ die Einstellungen testen, falls das Script nicht manuell abgebrochen wird, werden nach 200 Sekunden die Einstellungen zurück gesetzt
  9. 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
  10. Alle Einstellungen prüfen
  11. 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

Für Redundanz sollten (mindestens) zwei Peerings eingestellt werden(zum Testen reicht eines aber völlig aus). Sinnvoll ist es auch, wenn nicht beide Peerings einfach per VPN-Tunnel laufen, sondern z. B. ein weiteres per Richtfunk; somit läuft das Netz auch weiter wenn der Internetanschluss ausfällt!

VPN-Tunnel via WireGuard

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

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.

Per LAN Kabel/Richtfunk/Glasfaser

Es kann am Gateway Babel auch auf einen Ethernetport (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.

Hood file

Das Hood File ist konzeptionell identisch zu der unter V2 verwendeten Datei.

Details zum Hood-File unter: Hood file

Benutzte IP-Adressbereiche eintragen!

IPv4: Portal:Netz

IPv6: Portal:Netz/IPv6

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

Benutzte IP-Adressbereiche eintragen:

IPv4: Portal:Netz

IPv6: Portal:Netz/IPv6

Beispielkonfiguration

Eine Bespielkonfiguration mit einem direkten Peer und einem WireGuardpeer gibt’s hier: https://gist.github.com/fblaese/ca4d903b20b4d7033553f48625b93ca6

Achtung: Die VLAN-Einstellungen hier sind für den TL-WDR4900, für andere Geräte muss z. B. geprüft werden auf welchen Port der WAN liegt. Eine Liste ist ganz unten zu finden oder in der offiziellen Firmware: https://github.com/FreifunkFranken/firmware/tree/master/src/packages/fff/fff-network/ar71xx

gateway

Name Type Required Beschreibung
name string no
peer_ip IPv4-Adresse no IPv4-Adresse für Peerings
peer_ip6 IPv6-Adresse no IPv6-Adresse für Peerings

vlan

Name Type Required Beschreibung
comment string no
port list no Ports auf dem Standard-Switch

client

Name Type Required Beschreibung
iface interface no Clientnetz auf Interface legen
vlan number no Clientnetz auf VLAN mit angegebener IP auf dem Standard-Switch legen (alternativ zu iface!)
ipaddr IPv4-Adresse no Router-IP im Client-Netz (CIDR Notation)
ip6addr IPv6-Adresse no Router-IP im Client-Netz (CIDR Notation)
dhcp_start IPv4-Adresse no DHCP-Startadresse
dhcp_limit number no Maximale Anzahl an DHCP-Leases (default 150)

dns

Name Type Required Beschreibung
server list no DNS-Server, auf den geforwarded wird

batman

Name Type Required Beschreibung
iface interface no B.A.T.M.A.N. auf physikalisches auf Interface legen
vlan number no B.A.T.M.A.N. auf VLAN mit angegebener IP auf dem Standard-Switch legen (alternativ zu iface!)

babelpeer

Name Type Required Beschreibung
iface interface no Babel auf physikalisches Interface legen
vlan number no Babel auf VLAN mit angegebener IP auf dem Standard-Switch legen (alternativ zu iface!)
type babel-type no Babel-Verbindungstyp (z. B. wired, wireless, tunnel …)

wireguardpeer

Name Type Required Beschreibung
endpoint_host host oder ip yes
endpoint_port port yes
persistent_keepalive seconds no
public_key wireguard pubkey yes
private_key wireguard privkey no automatically generated if unspecified

Hardware-Port-Belegungen

Die Switch-Port-Belegung für die gängigen und genutzten Router für die VLAN-Konfiguration.

TP-Link WDR4900 v1

Port Switch Port
WAN 1
LAN 1 2
LAN 2 3
LAN 3 4
LAN 4 5

TP-Link WR1043ND v1

Port Switch Port
WAN 0
LAN 1 1
LAN 2 2
LAN 3 3
LAN 4 4

TP-Link WR1043ND v2, v3

Port Switch Port
WAN 5
LAN 1 4
LAN 2 3
LAN 3 2
LAN 4 1
CPU 0

Leistungstests

Gerät WireGuard (Mbit/s) Routing (Mbit/s)
TP-Link Archer C2600 140–170 unbekannt
TP-Link Archer C7 v2 50 unbekannt
TP-Link TL-WDR4900 v1 95–110 650–700
TP-Link TL-WR1043N/ND v1 40–46 150–200
TP-Link TL-WR1043N/ND ab v2 unbekannt unbekannt
Ubiquiti Networks EdgeRouter X SFP 35–50 800–930