
# ip link set wlan0 netns 1
RTNETLINK answers: Invalid argument
Работает для обычного ethernet. Работает также для фирменного драйвера broadcom "wl".
Как это сделать для обычного драйвера на базе mac80211?
решение1
Вам необходимо переместить PHY:
iw phy phy0 set netns 666
Где 666 — это pid некоторого процесса, запущенного в этом сетевом пространстве имен; для сетевых пространств, созданных iproute2
инструментами (с помощью ip netns
), вы можете создать там кратковременный процесс и получить его pid:
iw phy phy0 set netns "$(ip netns exec mynetns sh -c '
sleep 1 >&- & echo "$!"')"
Чтобы переместить его обратно в корневое пространство имен:
ip netns exec mynetns iw phy phy0 set netns 1
решение2
Для Wi-Fi сначала узнайте физический адрес вашего интерфейса (если у вас более 1 беспроводной карты):
iw dev
Результат будет примерно таким:
phy#0
Interface wlp58s0
ifindex 3
wdev 0x1
...
Итак, имяphy0
Теперь используйте это, чтобы назначить свой Wi-Fi пространству имен:
# iw phy phy0 set netns name <MyNamespace>
С помощью 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)
решение3
Реализовал свой собственный обходной путь:ветифицировать
- Создайте пару виртуальных интерфейсов, переместите один из них (например, veth1) в другое пространство имен:
ip link add type veth
;ip link set veth1 netns <some_pid>
; - Включите интерфейс wlan0 и veth0, но не добавляйте к ним никаких адресов;
- Запустить
vethify wlan0 veth0
в пространстве имен хостовой сети. Он скопирует все захваченное на wlan0 в veth0 и обратно; - Настройте IP-адрес и маршрутизацию в другом пространстве имен на veth1;
- Отключить выгрузку контрольной суммы для veth1:
ethtool --offload veth1 rx off tx off && ethtool -K veth1 gso off
.
Примечание: vethify видит все пакеты в сетевом пространстве имен, а не только wlan0 и veth0. Это добавит задержку и вызовет дополнительные накладные расходы.