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 kann 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:

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

Name Typ Pflicht Beschreibung
iface interface nein Clientnetz auf Interface legen (z.B. eth0, eth0.1)
vlan int nein Clientnetz auf VLAN mit angegebener IP auf dem Standard-Switch* legen (alternativ zu iface!)
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)

* Bei Adrian: Nur verwenden, wenn maximal EIN ethX mit tagged VLANs vorhanden ist!

** Zum Beispiel 2001:DB8:aaaa:bbbb::1/64, wobei 2001:DB8: und aaaa den du beim reservieren erhältst und bbbb der selbst festgelegte Teil (damit es zu einen /64 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 versteckt.

dns

Name Typ Pflicht Beschreibung
server list nein DNS-Server, auf den geforwarded wird*

* Hinweis: Hier sollten auch IPv6-DNS-Server aufgelistet werden.

batman

Name Typ Pflicht Beschreibung
iface interface nein B.A.T.M.A.N. auf physikalisches auf Interface legen
vlan int nein B.A.T.M.A.N. auf VLAN mit angegebener IP auf dem Standard-Switch* legen (alternativ zu iface!)

* Bei Adrian: Nur verwenden, wenn maximal EIN ethX mit tagged VLANs vorhanden ist!

wan

Name Typ Pflicht Beschreibung
iface interface nein WAN auf physikalisches auf Interface legen
vlan int nein WAN auf VLAN mit angegebener IP auf dem Standard-Switch* legen (alternativ zu iface!)

* Bei Adrian: Nur verwenden, wenn maximal EIN ethX mit tagged VLANs vorhanden ist!

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)

* Bei Adrian: Nur verwenden, wenn maximal EIN ethX mit tagged VLANs vorhanden ist!

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
public_key wireguard pubkey ja Öffentlicher Schlüssel des Peering-Partners
private_key wireguard privkey nein Eigener privater Schlüssel (automatisch generiert wenn nicht angegeben)
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 Variante Beschreibung
<name> string ja Name des generierten uci Eintrags
net IPv6 network ja IPv6 Netzwerk (z.b. aaaa:bbbb:cccc::/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.

Beispiele für Geräte mit Mixed-Switch

Archer C7 v2

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

TBD

C2600

config add_vlan 
        option vlan '1' 
        option ports '1 2 6t' 

config add_vlan 
        option vlan '2' 
        option ports '5 0t' 

config add_vlan 
        option vlan '3' 
        option ports '3 4 6t' 

config client 
        option iface 'eth1.1' 
        ... 

config batman 
        option iface 'eth1.3' 

# Nicht notwendig, nur zur Erläuterung
config wan 
        option iface 'eth0.2'