Layer3Firmware Config

== Vorwort ==
An dieser Stelle sollen nur Beispielkonfigurationen hinterlegt werden.
Die Anleitung zu Layer3Firmware gibts hier:
https://wiki.freifunk-franken.de/w/Layer3Firmware 
== /etc/config/fff ==
Hier werden - wie in der Nodefirmware - Koordinaten und Kontakt-Mail eingetragen.
Weiterhin wird hier der Hoodname eingetragen, der dann ans Monitoring gesendet wird.
=== Beispielkonfiguration fff ===
 config fff 'system'
 	option hostname 'mein-layer3'
 	option contact 'email@example.com'
 	option latitude '49' 
 	option longitude '11'
 # Hoodname muss per ssh eingegeben werden
 	option hoodname 'Hoodname'
 	option description 'Pinguinsammelstelle'
 	option position_comment 'irgendwo'
Die Optionen sind alle freiwillige Angaben und zur korrekten Funktion eines Layer 3 Router nicht zwingend nötig. Werden Einträge übers Web-UI geändert, entstehen weitere Blöcke zum Speichern der Zustände dort wählbarer Optionen.
== /etc/config/gateway ==
Benutzte IP-Adressbereiche eintragen:
IPv4: Portal:Netz
IPv6: Portal:Netz/IPv6
Public IPv6 Adressen:
Im Freifunk Franken Netz bieten mehrere Provider unabhängig voneinander IPv6 Adressen an welche zumeist ohne jegliche Regeln frei verwendet werden können. Eine Liste der Provider ist hier zu finden: https://wiki.freifunk-franken.de/w/IPv6
=== Beispielkonfiguration ===
Eine Bespielkonfiguration mit einem direkten Peer und einem WireGuardpeer gibt’s hier:
 config gateway 'meta'
 	option config_version '3'
 
 config vlan '1'
 	option comment 'client'
 	## t: tagged. CPU-Port wird automatisch hinzugefügt.
 	option ports '2 3 4 5t'
 
 config vlan '2'
 	option comment 'wan'
 	option ports '1'
 
 config vlan '10'
 	option comment 'nachbar-hochhaus'
 	option ports '5t'
 
 config client
 	option vlan '1'
 	list ip6addr 'fd43:5602:29bd:k7::1/64' # aendern auf eingetragene IPv6-Adresse (nur /64!)
 	list ip6addr '2a0b:f4c0:k7:e8::1/64' # aendern auf vergebenes Subnetz (nur /64!)
 	list ipaddr '10.83.261.1/24' # aendern auf eingetragene IPv4-Adresse
 	option dhcp_start '10.83.261.50' # aendern gemäß IPv4-Adresse
 	option dhcp_limit '1000'
 	option essid 'bla.freifunk'
 	option chan2ghz '13'
 	option chan5ghz '36'
 
 config wan
 	option vlan '2'
 
 config dns
 	list server 'fd43:5602:29bd:ffff:1:1:1:1' # anycast Adresse
 	#list server 'fd43:5602:29bd:ffff:1:1:1:64' # DNS64 anycast Adresse, nur fuer IPv6-only Router
 
 ## Vorsicht: Config-Namen dürfen keine '-' enthalten
 config babelpeer 'hochhaus'
 	option vlan '10'
 	option type 'wired'
 	option rxcost '8192'
 
 config wireguardpeer 'meingateway'
 	option endpoint_host '<ip oder dns>'
 	option endpoint_port '12345'
 	option persistent_keepalive '25'
 	option remote_public_key '<wg pubkey vom server>'
 	## Angeben eines private_key ist optional. Wird automatisch generiert, wenn nicht vorhanden.
 	option local_private_key '<wg privkey für gwfirmware>'
 	option rxcost '16384'
 	option mtu '1420'
Achtung: Die VLAN-Einstellungen hier sind für nicht DSA Geräte, 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
=== Parameter-Übersicht ===
==== gateway ====
Name 	Typ 	Pflicht 	Beschreibung
name 	string 	nein 	
peer_ip 	IPv4-Adresse	nein 	IPv4-Adresse für Peerings
peer_ip6 	IPv6-Adresse	nein 	IPv6-Adresse für Peerings
router_ip 	IPv4-Adresse	nein (bei aktivierten SNAT Pflicht)	IPv4-Adresse für den Router
router_ip6	IPv6-Adresse	nein 	IPv6-Adresse für den Router
==== vlan ====
Name 	Typ 	Pflicht	Beschreibung
comment	string	nein 	
ports 	list 	nein 	Ports auf dem Standard-Switch. Hardwarespezifisch!
Die Liste der Ports ist Hardwarespezifisch. Auf Geräten mit swconfig entspricht dies den Portnummern im swconfig-Treiber. Auf Geräten mit DSA wird hier der Name des Switchport-Interfaces angegeben (e.g. "eth0" oder "lan1").
* swconfig: 1 (VLAN auf Portnummer 1 legen, untagged) oder 1t (VLAN auf Portnummer 1 legen, tagged)
* DSA: eth0:* (VLAN auf Port "eth0" legen, untagged) oder eth0:t (VLAN auf Port "eth0" legen, tagged)
Die Namen der Switchport-Interfaces bei DSA können dann mit ip link ermittelt werden.
Ob ein Gerät swconfig oder DSA verwendet, lässt sich mit dem Befehl swconfig dev switch0 show herausfinden. Gibt es hier eine Ausgabe des Tools, müssen die Portnummern entsprechend der swconfig-Syntax angegeben werden. Wird das Tool nicht gefunden, gilt die DSA-Syntax.
==== client ====
Name 	Typ 	Pflicht	Beschreibung
iface 	interface 	nein 	Clientnetz auf Interface legen (z.B. eth0, eth0.1)
vlan 	int 	nein 	Clientnetz auf VLAN mit angegebener ID auf dem Standard-Switch legen (alternativ zu iface!)
ipaddr 	IPv4-list 	nein 	Router-IP im Client-Netz (CIDR Notation)
ip6addr 	IPv6-list 	nein 	Router-IP im Client-Netz (CIDR Notation)** (Achtung: Hier darf nur ein /64 verwendet werden, solltet ihr ein größeres Subnetz zugewiesen bekommen, müsst ihr dies zerteilen)
dhcp_start 	IPv4-Adresse	nein 	DHCP-Startadresse
dhcp_limit 	int 	nein 	Maximale Anzahl an DHCP-Leases (default 150, kann auch höher sein als die maximal im Subnetz verfügbaren Adressen)
snat 	bool 	nein 	Aktiviert SNAT auf dem Clientinterface so das nur noch eine einzelne Freifunkadresse benötigt wird und die IPv4 Adressen der Clients darauf genattet werden. Benötigt wird in gateway 'meta' router_ip
stateful_firewall	bool 	nein 	Aktiviert auf dem Client Interface eine Statefull Firewall die eingehende Verbindungen droppt.
essid 	string 	nein 	16byte max. Länge, SSID des WLANs
chan2ghz 	int 	nein 	1-13 Frequenz 2,4GHz
chan5ghz 	int 	nein 	36-64 & 100-140 Frequenz 5GHz
** Zum Beispiel 2001:db8:aaaa:bbbb::1/64, es dürfen hier nur /64 Netze angegeben werden. Im Monitoring wird die Adresse dann unter 2001:db8:ffff:ffff:ffff:ffff:ffff:ffxx versteckt.
==== wan ====
Name 	Typ 	Pflicht	Beschreibung
iface	interface	nein 	WAN auf ein Interface legen (z.B. eth0, eth0.1)
vlan 	int 	nein 	WAN auf VLAN mit angegebener ID auf dem Standard-Switch legen (alternativ zu iface!)
==== dns ====
Name 	Typ 	Pflicht	Beschreibung
server	list	nein 	DNS-Server, auf den geforwarded wird*
* Hinweis: Hier sollten auch IPv6-DNS-Server aufgelistet werden.
Werden keine DNS Server konfiguriert, wird die Freifunk Franken Anycast Adresse fd43:5602:29bd:ffff:1:1:1:1 benutzt.
Damit diese zuverlässig funktioniert, muss eine IPv6 ULA konfiguriert sein, oder die fdff::/64 Adressen entfernt werden.
Zusätzlich gibt es auch einen DNS64, unter der Anycast Adresse fd43:5602:29bd:ffff:1:1:1:64. Damit können IPv6-only Router trotzdem, über das im Freifunk Franken Netz verfügbare NAT64, IPv4 Geräte erreichen.
==== babelpeer ====
Name 	Typ 	Pflicht	Beschreibung
iface 	interface 	nein 	Babel auf physikalisches Interface legen
vlan 	number 	nein 	Babel auf VLAN mit angegebener IP auf dem Standard-Switch legen (alternativ zu iface!)
type 	babel-type	nein 	Babel-Verbindungstyp (z. B. wired, wireless, tunnel, ...)
rxcost	int 	nein 	Babel rxcost
==== wireguardpeer ====
Name 	Typ 	Pflicht	Beschreibung
endpoint_host 	host oder ip 	ja 	Hostname oder IP-Adresse der Gegenstelle
endpoint_port 	port 	ja 	Port der Gegenstelle
persistent_keepalive	seconds 	nein 	
remote_public_key 	wireguard pubkey 	ja 	Öffentlicher Schlüssel des Peering-Partners
local_private_key 	wireguard privkey	nein 	Eigener privater Schlüssel (automatisch generiert wenn nicht angegeben)
rxcost 	int 	nein 	Babel rxcost
mtu 	int 	nein 	MTU des Babel Interfaces. WICHTIG bei DSL Anschlüssen, siehe TODO.
== Hardware-Port-Belegungen ==
Die Switch-Port-Belegung für die gängigen und genutzten Router für die VLAN-Konfiguration.
==== GL-Inet AR-150 ====
Port	Switch Port	Bemerkung
WAN 	- 	Bezeichnung in der gateway-config: 'eth1'
LAN 	- 	Bezeichnung in der gateway-config: 'eth0'
==== GL-Inet MT-1300 ====
Port	Switch Port	Bemerkung
WAN 	? 	Bezeichnung in der gateway-config: 'wan:*'
LAN 	? 	Bezeichnung in der gateway-config: 'lan2:*'
LAN 	? 	Bezeichnung in der gateway-config: 'lan1:*'
==== TP-Link WDR4900 v1 ====
Switchport-Interface Name (DSA)
wan
lan1
lan2
lan3
lan4
==== TP-Link Archer C7 V2 ====
Port 	Switch Port
eth1 	0
WAN 	1
LAN 1	2
LAN 2	3
LAN 3	4
LAN 4	5
eth0 	6
==== TP-Link Archer C7 V5 ====
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 WR1043N(D) v2, v3, v4, v5 ====
Port 	Switch Port
WAN 	5
LAN 1	4
LAN 2	3
LAN 3	2
LAN 4	1
CPU 	0
==== Ubiquiti EdgeRouter ER-X / ER-X-SFP ====
https://openwrt.org/toh/ubiquiti/ubiquiti_edgerouter_x_er-x_ka
Switchport-Interface Name (DSA)	ER-X 	ER-X-SFP
eth0 	24V PoE passiv in 	24V PoE passiv out
eth1 	 	24V PoE passiv out
eth2 	 	24V PoE passiv out
eth3 	 	24V PoE passiv out
eth4 	24V PoE passiv passthrough	24V PoE passiv out
eth5 	nicht vorhanden 	
==== Xiaomi Mi Router 4A (Gigabit) ====
Switchport-Interface Name (DSA)
wan
lan1
lan2
==== Ubiquiti Edgerouter 4 ====
Switchport-Interface Name (DSA)
eth0
eth1
eth2
eth3
==== Ubiquiti Unifi AC-Mesh ====
Der Router hat nur einen Ethernetport, die Abschnitte mit den VLAN-Einstellungen entfallen.
WAN: Im config wan Abschnitt muss option iface 'eth0' verwendet werden. Im config client Abschnitt muss option iface 'eth1' verwendet werden.
LAN: Vermutlich gibt es für diese Konfiguration mangels Kontakt zu einem Peering-Partner keine sinnvolle Anwendung. Im config client Abschnitt muss option iface 'eth0' verwendet werden, config wan und config wireguardpeer entfallen.