LINUX.ORG.RU
ФорумAdmin

VM + IPv6


0

0

никак не могу сообразить как раздавать IPv6 виртуальным машинам (в моём случае это KVM, но это врятли важно). Сейчас все они создаются с "-net tap", потом все tap-интерфесы связываются в bridge.

В такой конфигурации для IPv4-интернета достаточно повесить dhcpd-сервер на bridge и включить маскарадинг+IPv4-форфадинг. С IPv6 всё сложнее. Хостовая машина (=A) получает IPv6-интернет от роутера (=B) на котором крутится radvd-сервер. Как в http://www.virtualbox.org/wiki/Advanced_Networking_Linux пытался повесить на «A» локальный radvd-сервер на bridge с тем же конфигом как на «B» — он отказывается запускаться пока не разрешу IPv6-forwarding на «A». А если разрешить IPv6-forwarding на «A» — сама машина «A» не получает IPv6-адрес от radvd-сервера на «B».

Всезнающий all, подскажите куда копать или ссылку какую-нибудь.

★★

> Хостовая машина (=A) получает IPv6-интернет от роутера (=B) на котором крутится radvd-сервер.

Получает только один адрес, правильно? И раздавать дальше нечего.

Можно статически распределить кусок /64 для хоста: один адрес для него самого, а всё остальное под чутким руководством radvd, запущенного на хосте, распределять гостям. Либо объединить в бридж не только гостевые tap'ы, но и аплинк хоста, чтобы гости получали адреса от B из того же блока, что и хост A.

const86 ★★★★★ ()
Ответ на: комментарий от const86

> Получает только один адрес, правильно? И раздавать дальше нечего.

ну по идее эта /64 подсеть неисчерпаемая, и вероятность коллизии при назначении IPv6 адресов практически нулевая. Мне кажется тут проблема на в адресах а в роутинге (чтобы роутер «B» слал пакеты для виртуалок через «A»). С IPv4 роутинг разруливается с proxy ARP, но в IPv6 ARP не работает.

Либо объединить в бридж не только гостевые tap'ы, но и аплинк хоста, чтобы гости получали адреса от B из того же блока, что и хост A.


это было бы вкуснее всего, так и хотел. Но как это сделать? Аплинк хоста «A» называется eth0.

brctl addbr br0
for n in debian centos ubuntu; do
tunctl -g kvm -t $n
brctl addif br0 $n
ifconfig $n up
done
brctl addif br0 eth0
ifconfig eth0 up

теперь они все в одном бридже, но теперь даже IPv4 не работает — eth0 должен получать адрес от роутера по dhcp. Что теперь запускать, «dhclient br0» или «dhclient eth0»? Ни то, ни то не работает. При запуске машин на TAP-инрерфесах debian centos ubuntu они radvd не видят. Нужно ли при этом оставлять dhcpd на br0, или VM'ы и IPv4-адреса от роутера «B» должны получать?

pupok ★★ ()
Ответ на: комментарий от pupok

> теперь они все в одном бридже, но теперь даже IPv4 не работает — eth0 должен получать адрес от роутера по dhcp. Что теперь запускать, «dhclient br0» или «dhclient eth0»? Ни то, ни то не работает.

На br0 запускать надо. Ни на eth0, ни на туннелях никаких настроек быть не должно, всё на br0. DHCP раздаёт адреса по макам? У br0 может оказаться не тот мак, какой нужен, надо осторожно всё делать.

При запуске машин на TAP-инрерфесах debian centos ubuntu они radvd не видят.

А вот это уже странно... Стоит проверить tcpdump'ом, что запрос уходит в eth0 и radvd вообще отвечает. А ещё стоит посмотреть на параметры br0 (setfd, например) и настройки radvd (интервалы между unsolicited advertisement).

Нужно ли при этом оставлять dhcpd на br0, или VM'ы и IPv4-адреса от роутера «B» должны получать?

От B должны получать.

const86 ★★★★★ ()
Ответ на: комментарий от const86

> На br0 запускать надо. Ни на eth0, ни на туннелях никаких настроек быть не должно, всё на br0. DHCP раздаёт адреса по макам? У br0 может оказаться не тот мак, какой нужен, надо осторожно всё делать.

DHCP-сервер даёт машине «A» фиксированный адрес по MAC, но есть у пул свободных IP-адресов для всех остальных. Может дело в том что eth0 на самом деле wireless NIC подключаемая с wpa_supplicant по WPA2?

я делаю

wpa_supplicant -i eth0 -c /etc/wpa_supplicant/my.conf
brctl addif br0 eth0
dhclient br0

тогда br0 получает IP-адрес, но он несколько минут до следуещей смены WPA2-ключей. После этого связь пропадает. DHCP-запросы с виртуальных машин на роутер «B» вообще не форватдятся.

Однако когда с той же карточкой подключаюсь к открытой точке доступа (без wpa_supplicant) или вместо wireless использую проводной ethernet — всё работает, и виртуальные машины получают IPv4 адрес от роутера «B», и dhclient живёт на br0.

pupok ★★ ()
Ответ на: комментарий от pupok

если говорить

wpa_supplicant -i eth0 -c /etc/wpa_supplicant/my.conf -b br0 -B
brctl addif br0 eth0
dhclient br0

то вроде wpa_supplicant перестаёт отваливаться, и на хосте «A» стабильно работает IPv4 и IPv6. Виртуальные машины получают IPv6 unsolicited advertisements и настраивают IPv6 адрес через несколько минут после включения, но кроме хоста «A» и друг друга они ничего не пингуют, даже роутер «B».

pupok ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.