Da es bei mir wegen fehlender Kabel nicht anders möglich ist, muss ich meinen LXCCU Pi über Wlan betreiben.
Da ich keine Anleitung oder Konzept gefunden habe, wie man das umsetzen könnte, habe ich mich mit einem Kumpel selbst ans Werk gemacht.
Die Lösung ist vielleicht nicht die schnellste, beste oder eleganteste, aber bei mir funktioniert sie gut.
Die Ursache für die Probleme mit der LXCCU im Wlan liegt an dem Netzwerk Setup des lxc
containers. Dessen Netzwerkinterface wird über eine bridge (lxccubr0) mit der Netzwerkkarte (eth0) verbunden, damit er sich dort eine eigene IP Adresse über DHCP beziehen kann.
Im Gegensatz zum Kabelnetzwerk scheitern mehrere MAC Adressen pro interface meistens an Treiber, Netzwerksetup, Wifi Security oder dem AccessPoint.
Der Plan: Wir entfernen das physikalische Interface aus der bridge und lassen die LXCCU darin alleine. Sie bekommt eine Static IP und ist dann von Pi selbst aus erreichbar. Anschließend forwarden wir Port 80 vom physikalischen interface (in meinem Fall wlan0 / 192.168.0.5) über die bridge auf Port 80 der LXCCU (unten konfiguriert als 192.168.10.2).
Falls also jemand vor dem gleichen Problem steht wie ich, vielleicht hilft es einem:
1. Routing
Zunächst aktivieren wir forwarding auf dem pi, damit er zwischen dem Heimnetz und dem kleinen Virtuellen Netz an der bridge routet:
Dazu in der /etc/sysctl.conf folgende Zeile auskommentieren:
Code: Alles auswählen
net.ipv4.ip_forward = 1
In der Datei /etc/rc.local vor dem exit folgendes einfügen:
Code: Alles auswählen
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Die vom lxccu beim Installieren angelegte Netzwerkkonfiguration ändern wir entsprechend unseres Planes ab. Die bridge bekommt eine Fest-IP (über die der PI mit dem CCU container sprechen kann). Außerdem entfernen wir das wlan interface aus der bridge denn wir wissen ja, dass das nur Stress macht.
/etc/networking/interfaces
Code: Alles auswählen
auto lxccubr0
iface lxccubr0 inet static
address 192.168.10.1
netmask 255.255.255.0
bridge_ports none
Wir passen die Netzwerkkonfiguration vom CCU container an. Da sie keinen DHCP server erreichen kann (in der bridge gibt es keinen) gibt es ebenfalls eine Fest-Ip.
Die Einstellung kann man per WebInterface vornehmen oder aber, weil man dort ja nicht so einfach rankommt, einfach in den Konfigurationsdateien des Containers umstellen.
In der Datei: /var/lib/lxc/lxccu/root/usr/local/etc/config/netconfig die Zeilen MODE, IP, NETMASK, GATEWAY und NAMESERVER1 anpassen.
Code: Alles auswählen
HOSTNAME=homematic-ccu2
MODE=MANUAL
CURRENT_IP=192.168.10.2
CURRENT_NETMASK=255.255.255.0
CURRENT_GATEWAY=192.168.10.1
CURRENT_NAMESERVER1=192.168.10.1
CURRENT_NAMESERVER2=0.0.0.0
IP=192.168.10.2
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
NAMESERVER1=192.168.0.1
NAMESERVER2=0.0.0.0
CRYPT=0
3. Port forwarding einrichten
Jetzt müssen als letztes noch iptables-Regeln für alle LXCCU Ports, die wir benötigen eingerichtet werden. Exemplarisch hier Port 80:
Wie oben mache ich das in der rc.local auch wenn es vielleicht bessere Wege gibt.
In der Datei /etc/rc.local vor dem exit folgendes einfügen:
Code: Alles auswählen
iptables -t nat -A PREROUTING -p tcp -i wlan0 --dport 80 -j DNAT --to-destination 192.168.10.2:80
Jetzt einen Reboot durchführen, und eure LXCCU sollte nun auch über WLAN über die IP des Pis über Port 80 aus eurem privaten Netzwerk erreichbar sein.