VLAN ins Hausnetz
Motivation
Idealerweise befindet sich alle Hardware, die am Freifunk teilnehmen soll, auf der Clientseite des Freifunk-Routers. Das wäre also WiFi oder eine Verkabelung hinter den Client-Ports des FFF-Routers. Manchmal will man aber auch Geräte erreichen, die zwar im eigenen Haushalt verkabelt sind (im Hausnetz), aber nicht mit der Client-Seite des Freifunkrouters verbunden werden können.
Die folgende Methode ermöglicht es, einen virtuellen "Client-Port" als VLAN ins Hausnetz zu leiten, also vom Freifunkrouter aus dem WAN-Port heraus. Damit das Hausnetz nicht für die Gäste im Freifunknetz erreichbar wird, soll dies über ein getaggtes VLAN erfolgen.
Konfigurationsänderung auf dem Freifunk-Router mit Layer-3 Firmware
Prinzipiell ist das Verfahren auch mit der Node Firmware möglich. Weil die Node Firmware eher nicht dafür vorgesehen ist, manuell in die Konfiguration einzugreifen, beschränkt sich der folgende Text auf die Layer-3 Firmware. In der Datei "gateway" muss an zwei Stellen modifiziert werden.
Das Clientnetz muss getagged (5t) auf den WAN-Port gelegt werden. Hier im Beispiel eines Routers mit 5 Ethernet-Ports liegt der WAN Port auf Position 5 und alle anderen Ports sind Client-Ports. Wir ändern auch die VLAN-Kennung von 1 auf 100, Begründung folgt.
config vlan '100' option comment 'client' option ports '1 2 3 4 5t'
config client option vlan '100' ...
Einschränkung: Der Mietrouter des Internet-Providers nutzt selber einige VLAN Verbindungen für zusätzlich buchbare Optionen. Damit sind üblicherweise einige niedrige VLAN-Kennungen im Hausnetz bereits belegt. Wenn es ganz blöd läuft, kann ein Router in der Strecke auch VLAN Verbindungen komplett blockieren. Hier im Beispiel wurde deshalb die VLAN-Kennung 100 gewählt.
Konfiguration auf dem Computer
Die folgende Konfiguration variiert sehr stark je nach verwendetem Betriebssystem. Bitte um weitere Betriebssysteme ergänzen!
Ubuntu Linux (zuletzt getestet mit 22.04)
Installation des VLAN Zusatzpakets:
sudo apt-get install vlan
Testen, ob das Kernelmodul 8021q bereits aktiv ist. Normalerweise ist es das nicht, und das folgende Kommando gibt nichts aus.
lsmod | grep 8021q
Falls das Modul nicht aktiv war, testen, ob sich das Modul laden lässt.
sudo modprobe 8021q lsmod | grep 8021q
Werden nun 3 Zeilen Text ausgegeben, dann kann das Modul aktiviert werden und muss nun nur noch bei jedem Systemstart geladen werden:
sudo vi /etc/modules
Ans Ende der Datei wird eine Zeile mit dem Text "8021q" ergänzt.
Grafische Konfiguration
Rufe in der Kommandozeile das Tool "nm-connection-editor" auf. Es erscheint ein Dialog. Soweit hier nicht explizit erwähnt, können alle Einstellungen auf den Defaultwerten gelassen werden. Erzeuge mit dem "+" Button (unten links) ein neues VLAN. Hier im Beispiel nennen wir es "vlan100", der Name ist natürlich egal.
<Bild2>
Die "Übergeordnete Schnittstelle" ist der reale Hardware-Ethernetport. Der Name kann mit dem Kommando "ip address show" gefunden werden. Die VLAN-Kennung ist in unserem Fall 100. Der Name der VLAN-Schnittstelle ist zwar willkürlich, aber es bietet sich an, den Verbindungsnamen zu übernehmen. Der Name der Schnittstelle wird von anderen Programmen oder manuell in der Kommandozeile verwendet.
<Bild3>
<Bild4>
Dieser Computer ist ein gewöhnlicher Freifunk-Client, soll also über den Freifunk-Router mit mit IP-Adressen, DNS usw. versorgt werden.
Jetzt wollen wir noch, dass sich der Computer im Normalfall automatisch mit dem Freifunknetz verbindet. Dafür schalten wir die automatische Aktivierung im Hausnetz aus und im Freifunknetz (also VLAN) ein.
<Bild0>
<Bild1>
Die grafischen Tools von Ubuntu können das VLAN leider nicht schalten. Es werden nur die anderen Netze zusätzlich aktiviert oder deaktiviert, ohne den Zustand des VLAN zu berücksichtigen. Aber es gibt ein pseudografisches Kommandozeilen-Tool "nmtui".
<Bild-nmtui>
Damit können alle Netze gezielt aktiviert oder deaktiviert werden, auch das VLAN. So können wir sicher stellen, dass wirklich nur ein Netz und das gewünschte aktiv ist. Hier im Beispiel ist das Freifunk-WiFi aktiv. Man kann nun das WiFi deaktivieren und entweder das Freifunk-VLAN oder direkt den Hausnetz-Port aktivieren. Es sollten nie zwei Netze gleichzeitig aktiv sein, außer man weiß, was man tut.
Manuelle Konfiguration
Für speziellere Setups kann das VLAN auch über Netplan konfiguriert werden. Achtung! Benutze die grafischen Tools (siehe oben) dann nicht zur Konfiguration! Es entstehen sonst unkontrollierbare Zustände, und spätestens nach dem nächsten Boot wird eh alles überschrieben.
Mit dem Tool "nmtui" kann weiterhin zwischen den Netzen umgeschaltet werden, wie oben beschrieben. Nur Konfigurationsänderungen sollte man vermeiden.
sudo vi /etc/netplan/01-network-manager-all.yaml
Hier folgt ein Beispiel, das ab der Zeile "Added for VLAN" der obigen grafischen Konfiguration entspricht.
# Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager # Added for VLAN ethernets: enp2s0: activation-mode: manual dhcp4: yes dhcp6: yes vlans: vlan100: id: 100 link: enp2s0 dhcp4: yes dhcp6: yes
Man sieht wieder die reale Ethernet-Schnittstelle (hier "enp2s0"), die VLAN-Schnittstelle (hier "vlan100") und die VLAN-Kennung (hier "100"). Die Zeile "activation-mode: manual" am Ethernet-Port sorgt dafür, dass das Hausnetz nach dem Rechnerstart erst mal deaktiviert ist.
Aktivierung von Änderungen: Entweder Reboot, oder mit dem folgenden Kommando. Wenn man remote auf dem Rechner ist und durch Fehlkonfiguration ausgesperrt wird, einfach 2 Minuten warten. Anderenfalls innerhalb der Frist mit ENTER bestätigen.
sudo netplan try
Anmerkung: Diese Netplan Konfiguration funktioniert auch auf Betriebssystemen mit "networkd" statt "NetworkManager". Allerdings gibt es dann nicht das Tool "nmtui" zum Umschalten zwischen den Netzen - dort muss eine andere Lösung gefunden werden.
Fehlersuche
ip address show
Es sollte das VLAN existieren und mit Freifunk-Adressen aus der eigenen dezentralen Hood versorgt sein.
ip route show
Es sollte eine Defaultroute über das VLAN zum Freifunk-Router gelegt sein. Das VLAN sollte eine IP-Adresse aus dem Bereich der eigenen dezentralen Hood bekommen haben.
traceroute <IP des Freifunk-Routers> traceroute <IP im Freifunknetz> traceroute 8.8.8.8 traceroute <eine Domain>
Das sollte alles funktionieren, mit IPv6-Adressen analog (traceroute -6).
curl <eine Domain>
Alternativ im Browser. Es sollten Webseiten aufrufbar sein, während die Verbindung übers VLAN läuft.