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 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, 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: 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.
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 | |
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'