1

Я на ноутбуке использую libvirt для запуска некоторых контейнеров.

По умолчанию он использует сеть по default предоставляемую libvirt, и контейнеры имеют сеть 192.168.122.0/24.

Я пытаюсь сделать так, чтобы контейнер находился в той же сети, что и мой ноутбук (т.е. 192.168.0.1/24).

Вот что я сделал:

#> ip link add type veth        // create a pair of veth
#> iw dev wlan0 set 4addr on    // allow WDS mode on my wifi
#> ifconfig veth0 up            // up veth0 interface
#> brctl addbr br0              // create br0
#> brctl addif br0 wlan0        // insert wlan0 in the bridge
#> brctl addif br0 veth0        // insert veth0 in the bridge
#> ifconfig br0 192.168.0.4/24  // assign the bridge the approriate ip
#> ifconfig wlan0 0.0.0.0       // free wlan0 ip

Когда я применяю это, я не получаю Интернет на моем ноутбуке; кажется, что он не может получить IP-адрес.

ОС: Fedora 18
Карта WiFi: Intel® Centrino® Advanced-N 6235
Wifi драйвер: iwlwifi
modinfo iwlwifi output находится здесь.

Чего мне не хватает, так что wlan0 заканчивается без IP-адреса и, следовательно, без подключения?

2 ответа2

0

Я не видел этого сообщения, изначально. Для этого есть решение.

Прежде всего, позвольте мне сказать, что я не хочу использовать команды obsolte: пакет iproute2 содержит команды для всего этого, включая настройку виртуальных интерфейсов (что-то, для чего нам когда-то приходилось использовать openvpn или tunctl или uml-utilities) и создание мостов. Если вы не знаете, как настроить мост с помощью ip, мы пойдем:

  ip tuntap add tap0 mode tap user root 

  ip link set tap0 up

  ip link add br0 type bridge

  ip link set tap0 master br0

  ip link set eth0 master br0

  ip addr add 10.173.10.1/24  dev br0

  ip link set br0 up

С помощью этого набора команд мы создаем виртуальный интерфейс с именем tap0, затем мост с именем br0, затем порабощаем eth0 и tap0 мосту, которому мы назначаем IP-адрес 10.173.10.1, а затем приводим его в действие. Требуются три отдельных случая запуска интерфейсов (для tap0, eth0 и br0).

Что касается твоей проблемы. Хитрость , чтобы сделать эту работу , чтобы использовать прокси-Арп, что позволяет ваш компьютер (не виртуальная машина /Linux контейнер / сеть имен) , чтобы ответить на ARP - запросы на их место.

Другими словами, используя переадресацию IPv4 между вашим аппаратным интерфейсом и вашим виртуальным интерфейсом, вы думаете, что можете подключить вашу VM/LXC/NNS к вашей локальной сети, как если бы это был физический интерфейс, но это не так: вы забываете абсолютно основной трафик ARP, который действительно позволяет локальной сети работать. Итак, проблема в том, что если я правильно пересылаю трафик IPv4, как я также могу пересылать трафик ARP, чтобы моя VM/LXC/NNS работала? Хитрость заключается в том, чтобы использовать proxy-arp.

Полный ответ на этот вопрос можно найти в блоге Бохди Дзадзена под откровенным названием « Мостовые беспроводные карты». Он использует устаревший пакет, uml-утилиты, для создания виртуального интерфейса с помощью команды tunctl: это единственная команда, для которой он использует uml-утилиты, так что вы можете спокойно пренебречь загрузкой пакета и использовать команду I Выше написано, чтобы создать интерфейс tap или tun, в зависимости от того, что вам нравится, просто измените команду соответствующим образом. затем создайте пару веток для вашего LXC, а теперь создайте мост между tap0 и veth0. Этот мост, называемый br0, - это то, для чего вы должны использовать proxy-arp вместо простого интерфейса tap0, описанного Bohdi Zazen.

0

Я написал руководство по использованию nat bridge с lxc который является превосходным решением и работает с openvpn & dhcp .

Я также написал руководство по мосту хоста с беспроводной связью & lxc. Это немного из заметок Bodhizazen + Debian Wiki. Этот хост-мост работает до тех пор, пока вы не используете openvpn .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .