Hallo,
mit folgendem Befehl erzeuge ich ein virtuelles Interface, sodass mein WLAN-Chip mit wlan0 als Station und mit uap0 als Access Point arbeitet:
1 | iw dev wlan0 interface add uap0 type __ap |
Für den hostapd Daemon ist uap0 als Interface konfiguriert (/etc/hostapd/hostapd.conf). Ebenfalls ist für das uap0 Interface der networking Daemon (/etc/network/interfaces.d/uap0) so konfiguriert, dass dem Interface eine statische IP-Adresse zugewiesen wird. Darüber hinaus gelten für das Interface auch noch iptables Regeln (/etc/iptables/rules.v4) und ein SSH Daemon soll dort lauschen. Das funktioniert auch alles:
1 2 | ifup uap0 systemctl start hostapd.service |
Jedoch soll das der Raspberry Pi bereits während des Bootvorgangs machen. Wäre nicht das virtuelle Interface, würde folgender Befehle alles erledigen:
1 | systemctl enable hostapd.service |
Um die Abhängigkeiten kümmert sich dann Linux, was dann mit dem virtuellen Interface so aussehen dürfte/sollte:
Netzwerk Interfaces initiieren
Virtuelles Interface anlegen
iptables Regeln laden
hostapd Daemon starten
SSH Daemon starten
Lösungen habe ich nun schon gefunden:
Mit udev Regel virtuelles Interface anlegen und den networking Daemon (/etc/network/interfaces.d/uap0) so konfigurieren, dass er dann den hostapd Daemon (post-up) startet.
networking Daemon (/etc/network/interfaces.d/wlan0) so konfigurieren, dass er dann das virtuelle Interface anlegt (post-up) und dieses (/etc/network/interfaces.d/uap0) dann den hostapd Daemon (post-up) startet.
Einen eigenen systemd Daemon schreiben, der das virtuelle Interface anlegt und dann den hostapd Daemon startet.
...
Meine Frage ist nun, (a) was ist „richtige“ Linux Weg das zu realisieren. Wie würde das gelöst werden, wenn das schon „fertiger“ Bestandteil von Linux wäre? Und (b), falls es hier kein „richtig“ oder „falsch“ gibt, in welcher Reihenfolge arbeitet systemd die oben aufgezählten Punkte (1 bis 5) ab und wo sind die Abhängigkeiten dazu hinterlegt?
Basti