Гостевая сеть не работает на KVM-сервере Debian Jessie Host с мостовой сетью br0
Гости сети не работают вообще. Другими словами, гость не может пропинговать хост или шлюз локальной сети.
- У меня уже создан мост br0, также brctl показывает, что vnet0 был правильно добавлен KVM в br0 при гостевом запуске
- Я установил ip_forward на 1
- Iptables выключен и даже не установлен, что не нужно, так как мне просто нужны ГОСТИ для прямого доступа к маршрутизатору / локальной сети через мост br0
У меня есть эта установка, работающая на других системах с хостом centos, но я новичок в Debian и не уверен, что, возможно, забыл сделать.
Сеть хоста, кажется, работает нормально, у eth0 больше нет IP, а у br0 тот IP, который раньше имел eth0. Команда brctl show показывает br0 с eth0, порабощенным, когда гости выключены, и когда гость включен, он показывает оба eth0 и vnet0
Я ТОЛЬКО ПОЛУЧИЛ ЭТО РАБОТАТЬ, просто переключившись с VIRTIO на сетевой интерфейс RTL, что аналогично выбору "гипервизора по умолчанию". Также вывод lsmod | grep virtio
virtio_pci 17389 0
virtio_net 26553 0
virtio_blk 17341 0
virtio_ring 17469 3 virtio_blk,virtio_net,virtio_pci
virtio 13058 3 virtio_blk,virtio_net,virtio_pci
Мне пришлось вручную добавить virtio с помощью modprobe virtio, но это все равно не решило проблему. Я не перезагружался после добавления модулей ядра с помощью modprobe virtio и т. Д., Но я перезапустил libvirtd и virt-manager
Работает нормально, но не с virtio. Есть потенциальная проблема с ядром? как проверить конфигурацию ядра, это Debian с uname -a
выход
Linux vmserver 3.14-2-amd64 #1 SMP Debian 3.14.15-2 (2014-08-09) x86_64 GNU/Linux
Благодаря Мэйс. для очистки моего первого поста. Я только что заметил, что папка /sys/devices/virtio не существует на гостевой, а папка /sys/devices/virtual / net / lo существует, но нет /sys/devices/virtual / net / eth0
ifconfig на centos 6.4 "guest" показывает, что eth0 получил 0 байтов RX, но 14kB TX, так что я предполагаю, что он не получает никаких сообщений. Я не сдамся с легкостью, но я не собирался перестраивать ядра с нуля на гостевой и хост-машине.
2 ответа
Ну, кажется, я понял проблему. Для диагностики я установил гостевую ОС Windows и установил драйверы Windows virtio. Я смог использовать virtio network в Windows, поэтому проблема в гостевых ядрах Linux или драйверах ядра, поскольку в гостевой системе Linux уже загружены модули virtio pci/block и т. Д., Возможно, ядро нуждается в перекомпиляции. Так что не было ничего плохого со стороны "ХОСТ".
Кроме того, я должен отметить, что в моем исследовании было раздражающим, когда люди всегда давали советы по виртуализации, не уточняя, ссылаются ли они на GUEST или HOST, на самом деле из-за этого возникает путаница, когда люди загружаются. модули ядра virtio на хосте вместо гостевого и т. д.(у меня они были загружены на обоих, без необходимости на хосте... но в любом случае это не имеет значения, не решает мою проблему, кажется, мне придется перекомпилируйте ядро Linux на моем госте Linux Centos.)
Вы включили маскировку в iptables?
Проверить с
iptables -L -t nat
Вы должны увидеть что-то вроде:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.0.0/24 !10.0.0.0/24
Если вы не видите MASQUERADE в ваших iptables, вы можете разрешить его, используя:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE
Конечно, замените диапазон IP тем, который вы используете.