Гостевая сеть не работает на 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 тем, который вы используете.

Другие вопросы по тегам