Gatewayfirmware Adrian

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

/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 Web-Adresse 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-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' 

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'