
# ip link set wlan0 netns 1
RTNETLINK answers: Invalid argument
Funktioniert mit normalem Ethernet. Funktioniert auch mit dem proprietären Broadcom-„WL“-Treiber.
Wie geht das mit einem normalen Mac80211-basierten Treiber?
Antwort1
Sie müssen das PHY verschieben:
iw phy phy0 set netns 666
Wobei 666 die PID eines Prozesses ist, der in diesem Netzwerk-Namespace ausgeführt wird. Für von iproute2
Tools (mit ip netns
) erstellte Netspaces können Sie dort einen kurzlebigen Prozess erstellen und seine PID abrufen:
iw phy phy0 set netns "$(ip netns exec mynetns sh -c '
sleep 1 >&- & echo "$!"')"
So verschieben Sie es zurück in den Stammnamespace:
ip netns exec mynetns iw phy phy0 set netns 1
Antwort2
Für WLAN ermitteln Sie zunächst die physikalische Adresse Ihrer Schnittstelle (falls Sie über mehr als eine WLAN-Karte verfügen):
iw dev
Das Ergebnis wird ungefähr so aussehen:
phy#0
Interface wlp58s0
ifindex 3
wdev 0x1
...
Der Name ist alsophy0
Verwenden Sie es nun, um Ihr WLAN dem Namespace zuzuweisen:
# iw phy phy0 set netns name <MyNamespace>
Mit Hilfe von iw
:
phy <phyname> set netns { <pid> | name <nsname> }
Put this wireless device into a different network namespace:
<pid> - change network namespace by process id
<nsname> - change network namespace by name from /var/run/netns
or by absolute path (man ip-netns)
Antwort3
Habe meinen eigenen Workaround implementiert:verifizieren
- Erstellen Sie ein Paar virtueller Schnittstellen und verschieben Sie eine davon (z. B. veth1) in einen anderen Namespace:
ip link add type veth
;ip link set veth1 netns <some_pid>
; - Aktivieren Sie die Schnittstelle wlan0 und veth0, aber fügen Sie keine Adressen hinzu.
- Starten Sie
vethify wlan0 veth0
im Namespace des Hostnetzwerks. Es kopiert alles, was auf wlan0 erfasst wurde, nach veth0 und zurück. - Konfigurieren Sie IP-Adresse und Routing im anderen Namespace auf veth1;
- Deaktivieren Sie das Prüfsummen-Offloading für veth1
ethtool --offload veth1 rx off tx off && ethtool -K veth1 gso off
:.
Hinweis: vethify sieht alle Pakete im Netzwerk-Namespace, nicht nur wlan0s und veth0s. Es führt zu Latenz und zusätzlichem Overhead.