Gatewayfirmware Adrian

= /etc/config/gateway =
Die folgenden Unterkapitel erläutern die verschiedenen Konfigurationseinheiten in der Datei /etc/config/gateway
Gültig ab gw_20190527
Ältere Versionen aus 2019 sind nicht stabil und sollten aktualisiert werden. Für Versionen aus dem Jahr 2018 ist eine ANDERE Konfiguration notwendig.
== VLAN-/Port-Konfiguration ==
Zur Konfiguration der Ports existieren grundsätzlich drei Möglichkeiten.
=== 1. /etc/firstbootfff ===
Die Datei /etc/firstbootfff wird nach jedem Upgrade ausgeführt und kann beliebige uci commands enthalten. Ports können dort entsprechend updatesicher gesetzt werden, z. B.
uci set network.vlan1.ports='0t 1 2' # Set client ports
uci set network.vlan2.ports='0t 5' # Set wan port (if wan is in switch)
uci set network.vlan3.ports='0t 3 4' # Set batman ports
uci commit network
Im Normalbetrieb kann man dann entweder dieselben Änderungen manuell in /etc/config/network vornehmen oder
sh /etc/firstbootfff
aufrufen.
Hier können auch komplexere Änderungen vorgenommen werden:
Neues VLAN anlegen:
. /lib/functions/fff/networksetup
addVLAN '5' '0t 6' # Add VLAN with ID 5 and use ports 0t and 6
VLAN löschen:
uci del network.vlan2 # Delete VLAN with ID 2 (default WAN)
=== 2. WebUI ===
Das WebUI verfügt nun über einen primitiven Modus, um Ports in einem Switch zu konfigurieren. Dabei können die Ports für bestehende VLANs verändert werden, das Anlegen neuer VLANs oder Löschen bestehender ist (noch) nicht möglich.
Wurde ein VLAN jedoch in der /etc/config/network angelegt, ist es danach auch im WebUI konfigurierbar. (Namensschema vlanX beachten!)
Alle Änderungen per WebUI werden automatisch in die /etc/firstbootfff eingetragen, wodurch sie updatesicher werden.
=== 3. /etc/config/gateway ===
Die beiden zuvor genannten Möglichkeiten sind unabhängig von der gewählten Firmware-Variante (Knoten vs. Gateway).
Im Rahmen der Gateway-Firmware ist es nun zusätzlich möglich, Ports in der /etc/config/gateway zu definieren. Diese Notation ist jedoch optional, d.h. wurden die Ports bereits anderweitig definiert oder soll die Standardkonfiguration verwendet werden, ist keine nochmalige Definition nötig.
Zum Anlegen eines VLANs oder Überschreiben der bestehenden Ports kann folgender Block verwendet werden:
config add_vlan 
 option vlan '11' # VLAN-ID
 option ports '0t 4' # Ports inkl. CPU-Anbindung
Achtung: Meine Firmware erfordert die Angabe des CPU-Ports (hier 0t).
Soll ein VLAN geändert werden, sodass die alte VLAN-ID entfernt werden muss, kann folgender Block verwendet werden:
config del_vlan 
 option vlan '2' # Zu entfernende VLAN-ID
Die Blöcke 'config vlan' aus der bisherigen Gatewayfirmware werden nicht ausgewertet.
Nochmals: Möchte man die Standardkonfiguration verwenden, ist hier keine Angabe nötig. Gleiches gilt für Two-Port-Geräte ohne konfigurierbares Switch.
== Netzwerk-Konfiguration ==
Nach der Konfiguration der VLANs muss jedes VLAN oder Ethernet-Interface nun den entsprechenden Funktionen (client, batman, babel, ...) zugewiesen werden, z. B.:
Client-Funktion an VLAN-ID 1 binden (typische Geräte mit Switch):
config client
 option vlan '1'
ODER Client-Funktion an eth0 binden (z. B. FritzBox 4040 mit Switch für Clients):
config client
 option iface 'eth0'
Achtung: Bestimmte Geräte (TL-WR1043ND v2/v3, Archer C7 v2, C2600) haben mehrere ethX mit dem Switch verbunden ("Mixed Switch"). Hier darf die 'option vlan' nicht verwendet werden. Stattdessen muss die Notation ethX.Y (Y=VLAN-ID) verwendet werden:
config client
 option iface 'eth1.1'
Eine Übersicht von Beispielkonfigurationen findet sich ganz unten.
Entsprechend dem obigen Prinzip erfolgt dann auch die Definition von 'config batman' und 'config wan'.
Achtung: client und batman sind Pflichtangaben. wan hingegen ist optional, erfolgt keine Angabe bleibt die bestehende Konfiguration erhalten.
== Weitere Optionen ==
Die folgenden Tabellen geben eine Übersicht über weitere Config-Blöcke und Optionen.
Bitte benutzte IP-Adressbereiche im Wiki eintragen:
IPv4: Portal:Netz
IPv6: Portal:Netz/IPv6
==== gateway ====
Name 	Typ 	Pflicht	Beschreibung
peer_ip 	IPv4-Adresse	nein 	IPv4-Adresse für Peerings
peer_ip6	IPv6-Adresse	nein 	IPv6-Adresse für Peerings
==== client ====
Die folgenden Optionen müssen zusätzlich zur 'option vlan' bzw. 'option iface' im Block 'config client' angegeben werden. Es darf nicht mehr als einen Block 'config client' in der /etc/config/gateway geben!
Name 	Typ 	Pflicht	Beschreibung
ipaddr 	IPv4-Adresse	nein 	Router-IP im Client-Netz (CIDR-Notation)
ip6addr 	IPv6-Adresse	nein 	Router-IP im Client-Netz (CIDR-Notation)**
dhcp_start	IPv4-Adresse	nein 	DHCP-Startadresse
dhcp_limit	int 	nein 	Maximale Anzahl an DHCP-Leases (default 150)
** Zum Beispiel 2001:db8:aaaa:bbbb::1/64, wobei 2001:db8 dem Provider zugewiesen ist und aaaa, den du beim Reservieren erhältst, und bbbb, der selbst festgelegte Teil (damit es zu einem /64-Netz wird), mit dem du die jeweiligen Netze der dezentralen Gateways unterscheidest. Im Monitoring wird die Adresse dann unter 2001:db8:ffff:ffff:ffff:ffff:ffff:ff01 maskiert.
==== dns ====
Name 	Typ 	Pflicht	Beschreibung
server	list	nein 	DNS-Server, auf den geforwarded wird*
* Hinweis: Hier sollten auch IPv6-DNS-Server aufgelistet werden.
==== 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
babel_penalty	int 	nein 	Penalty für eingehenden und ausgehenden Traffic
mtu 	int 	nein 	MTU für Babel peering
fix_mtu 	0 oder 1 	nein 	PMTU clamping aktivieren (default: aus)
* Die Verwendung dieser Optionen erfolgt analog zur Definition in client, batman, usw.
==== 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 	
local_private_key 	wireguard privkey	nein 	Eigener privater Schlüssel ab 201908 (automatisch generiert wenn nicht angegeben)
private_key 	wireguard privkey	nein 	Eigener privater Schlüssel bis 201907 (automatisch generiert wenn nicht angegeben)
remote_public_key 	wireguard pubkey 	ja 	Öffentlicher Schlüssel des Peering-Partners ab 201908
public_key 	wireguard pubkey 	ja 	Öffentlicher Schlüssel des Peering-Partners bis 201907
rxcost 	int 	nein 	Babel rxcost
babel_penalty 	int 	nein 	Penalty für eingehenden und ausgehenden Traffic
mtu 	int 	nein 	MTU für Babel peering
fix_mtu 	0 oder 1 	nein 	PMTU clamping aktivieren (default: aus)
==== babelfilter '<name>' ====
Name 	Typ 	Pflicht	Beschreibung
<name>	string 	ja 	Name des generierten uci-Eintrags
net 	IPv6 network	ja 	IPv6-Netzwerk (z. B. 2001:db8::/48)
type 	string 	ja 	z. Zt. nur 'redist'
==== monitoring 'gwinfo' ====
Name 	Typ 	Pflicht	Beschreibung
admin 	list	nein 	Admin-Namen für Monitoring
statslink	URL 	nein 	Webadresse für Statistik-Seite des GW
urls 	list	nein 	Zieladressen für gwinfo-Skript*
* Wird 'urls' nicht angegeben, wird die Standard-Adresse verwendet. Verwendet man die option, fällt der default weg, und alle Zieladressen müssen hier genannt werden.
==== monitoring 'alfred' ====
Name	Typ 	Pflicht	Beschreibung
urls	list	nein 	Zieladressen für alfred-proxy-Skript*
* Wird 'urls' nicht angegeben, wird die Standard-Adresse verwendet. Verwendet man die option, fällt der default weg, und alle Zieladressen müssen hier genannt werden.
== Beispielkonfigurationen (nur Ethernet) ==
=== Beispiele für Standard-Geräte mit Switch ===
==== TL-WDR4300 v1/TL-WDR4900 v1 ====
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '1' 
 option ports '0t 4 5' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '2' 
 option ports '0t 1' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '3' 
 option ports '0t 2 3' 
config client 
 option vlan '1' 
 ... 
config batman 
 option vlan '3' 
config wan # Nicht notwendig, nur zur Erläuterung
 option vlan '2' 
==== TL-WR1043ND v4 ====
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '1' 
 option ports '0t 2 1' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '2' 
 option ports '0t 5' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '3' 
 option ports '0t 4 3' 
config client 
 option vlan '1' 
 ... 
config batman 
 option vlan '3' 
config wan # Nicht notwendig, nur zur Erläuterung
 option vlan '2' 
=== Beispiele für Geräte ohne vollwertiges/konfigurierbares Switch ===
==== Fritzbox 4040 (Switch-Modus Client) ====
# Keine VLAN-Definitionen nötig
config client
 option iface 'eth0'
 ...
config batman
 # Kein option iface, da nur WAN und CLIENT konfiguriert
config wan # Nicht notwendig, nur zur Erläuterung
 option iface 'eth1' 
==== Fritzbox 4040 (Switch-Modus Batman) ====
# Keine VLAN-Definitionen nötig
config client
 # Kein option iface, da nur WAN und BATMAN konfiguriert
 ...
config batman
 option iface 'eth0'
config wan # Nicht notwendig, nur zur Erläuterung
 option iface 'eth1' 
==== GL-AR150 (LAN-Port-Modus Client) ====
# Keine VLAN-Definitionen nötig
config client
 option iface 'eth1'
 ...
config batman
 # Kein option iface, da nur WAN und CLIENT konfiguriert
config wan # Nicht notwendig, nur zur Erläuterung
 option iface 'eth0' 
=== Beispiele für Geräte mit Mixed-Switch ===
==== Archer C7 v2 ====
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '1' 
 option ports '0t 4 5'
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '2' 
 option ports '6t 1' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '3' 
 option ports '0t 2 3' 
config client
 option iface 'eth1.1' 
config batman
 option iface 'eth1.3'
# Diese Angabe erfolgt nur zur Erklärung.
# Da es sich um die Standardkonfiguration handelt,
# kann diese am Gerät entfallen
config wan
 option iface 'eth0.2' 
==== TL-WR1043ND v2/v3 ====
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '1' 
 option ports '0t 1 2'
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '2' 
 option ports '6t 5' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '3' 
 option ports '0t 3 4' 
config client 
 option iface 'eth1.1' 
 ... 
config batman 
 option iface 'eth1.3' 
config wan # Nicht notwendig, nur zur Erläuterung
 option iface 'eth0.2' 
==== C2600 ====
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '1' 
 option ports '1 2 6t' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '2' 
 option ports '5 0t' 
config add_vlan # Nur angeben, wenn Ports geändert werden sollen
 option vlan '3' 
 option ports '3 4 6t' 
config client 
 option iface 'eth1.1' 
 ... 
config batman 
 option iface 'eth1.3' 
config wan # Nicht notwendig, nur zur Erläuterung
 option iface 'eth0.2'