Я только что установил KVM на свой сервер Ubuntu в соответствии с этим руководством: https://help.ubuntu.com/community/KVM/Installation
Затем подготовили мостовую сеть, как показано здесь: https://help.ubuntu.com/community/KVM/Networking
Затем я создал виртуальную машину с помощью virt-manager. Я пробовал несколько раз, но гость не может подключиться к сети! Любая помощь?
ifconfig:
br0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10493 (10.4 KB) TX bytes:8433 (8.4 KB)
eth0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11361 (11.3 KB) TX bytes:8479 (8.4 KB)
Interrupt:41
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0 Link encap:Ethernet HWaddr 5a:8c:57:95:af:3b
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
brctl show:
bridge name bridge id STP enabled interfaces
br0 8000.d02788b0e438 no eth0
virbr0 8000.000000000000 yes
brctl showmacs br0:
port no mac addr is local? ageing timer
1 5c:d9:98:67:b6:28 no 48.33
1 d0:27:88:b0:e4:38 yes 0.00
1 e0:2a:82:f9:6c:09 no 0.00
IP-маршрут:
default via 192.168.20.1 dev br0 metric 100
192.168.20.0/24 dev br0 proto kernel scope link src 192.168.20.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
* В госте * Мне не удалось скопировать вставить информацию из гостя, потому что не могу ssh к нему. Он не получил IP от DHCP. Не будет работать даже после ручной настройки.
server
networking
kvm
network-bridge
THpubs
источник
источник
ifconfig
,brctl show
,brctl showmacs br0
, иip route
. На гостя:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, иtraceroute 8.8.8.8
. Я не могу сказать, что я настроил KVM так, как вы, но я получил мост для работы с помощьюkvm
команды. Мне пришлось отключить беспроводную связь, чтобы мой хост подключился к Интернету, и, как указано в приведенных вами инструкциях, вам нужно подключиться к Интернету через Ethernet.brctl showmacs br0
списке выше?Ответы:
прелиминарии
Это следующее работает для меня для Ubuntu 12.04. Вы должны отключить брандмауэр вашего компьютера во время тестирования, чтобы он не мешал.
Файл / etc / default / qemu-kvm должен быть таким же, как изначально установлен.
Вам нужно будет установить bridge-utils qemu-kvm и libvirt-bin . Любые пользователи, использующие виртуальные машины, должны быть добавлены в группу libvirtd.
Кажется, больше нет необходимости добавлять возможность CAP_NET_ADMIN.
Настройка сети
Сетевым режимом по умолчанию является режим пользователя, также называемый SLIRP. Он использует предопределенный мост virbr0, который NAT направляется на гостевой компьютер. NAT-маршрутизация использует функцию ядра ip_forwarding и iptables . В режиме моста в гостевой системе используется виртуальный мост, к которому подключается (ненумерованный) интерфейс Ethernet и на котором у хоста и гостя есть свои сетевые интерфейсы.
Следующие диаграммы могут прояснить различия:
Вы можете увидеть, как сеть пользователя по умолчанию определяется с помощью:
Я могу настроить мостовой режим с помощью следующих подходов:
В / etc / network / interfaces (из той части поста, которую вы упоминаете в своем вопросе):
Перезагружать; и убедитесь, что беспроводная сеть не активна. Проверьте IP-маршрут по умолчанию с
ip route
. Это должен быть интерфейс br0.Примечание: если ваш Ethernet не подключен, когда это изменение будет сделано, вам нужно подключить кабель Ethernet и получить носитель, или загрузка будет зависать в течение двух минут, и у вас не будет возможности сети. Это связано с тем, что интерфейс eth0 Находясь в этом файле, должен подойти, прежде чем загрузка может продолжаться нормально.
NB. Как правило, вы не можете использовать беспроводную сеть вместо eth0 из-за невозможности использования нескольких MAC-адресов (я полагаю, что им нужен второй для моста).
В качестве альтернативы вы можете отключить использование Ethernet и убедитесь , что он не имеет IP - адрес, и что не существует маршрут по умолчанию устанавливается с
ip route
. Затем:Вы также можете указать здесь статический IP-адрес, а также указать маршрут по умолчанию и адрес DNS. Для этого примера
dhclient
это делается.Вот моя таблица маршрутов:
Использование KVM
Затем я могу загрузить машину с мостовым подключением с помощью:
В
-netdev tap
марке параметров Sudo требования. При запуске виртуальной машины qemu-kvm выполняет следующие команды:Это делается с помощью / etc / qemu-ifup
Интерфейс виртуальной машины vnet0 добавлен к мосту br0, потому что маршрут по умолчанию, используемый выше, использует этот интерфейс моста. Если бы этого не было, вместо этого интерфейс крана был бы добавлен к интерфейсу virbr0. Поскольку он не подключен к Интернету, в моих экспериментах NAT использовался для подключения гостя к хосту и Интернету. Вы можете направить vnet0 на конкретный мост в / etc / default / qemu-kvm. Используя virt-manager ниже, вы можете явно указать, к какому мосту подключаться.
Из-за вышеупомянутых команд, выпущенных qemu-kvm, и
-netdev tap,id=tunnel,ifname=vnet0
параметра, виртуальная машина vm подключена к туннелю vnet0, а туннель подключен к мосту br0.Теперь я могу напрямую подключиться к этой гостевой виртуальной машине с другого компьютера в моей сети.
Мой хост
ifconfig
(обратите внимание на интерфейс vnet0, который появляется в моей сети, когда виртуальная машина работает):Моя конфигурация моста во время работы виртуальной машины:
Обратите внимание, что как интерфейс виртуальной машины vnet0, так и интерфейс eth0 подключены к мосту br0.
И MAC на интерфейсе br0:
Обратите внимание, что интерфейс br0 соединяет мой хост-компьютер с тем же мостом, который используется гостем.
Вы можете проверить, что вы соединены мостом, а не NAT направлен в вашу собственную сеть с помощью
traceroute 8.8.8.8
. Если первый узел является маршрутизатором вашей сети, а не IP-адресом гостя, ваша сеть должна работать правильно.Смотрите эту документацию .
вирт-менеджер
Будьте уверены, что вы установили
virt-manager
иhal
.hal
Пакет является предложил зависимость дляvirt-manager
и используется для определения сетевой конфигурации вашей системы при создании или редактировании гостей.Определив мост br0, как описано выше, я создал виртуальную машину с помощью virt-manager:
Я был в состоянии пойти непосредственно к остальной части моей домашней сети и к Интернету от этого гостя. Я также смог подключиться к нему с другого (не хостового, не гостевого) компьютера Ubuntu в моей домашней сети.
Вот очень длинная
kvm
команда, запускаемая virt-manager (для сравнения с EApubs или кем-то еще, имеющим проблемы с этим):Вот сетевая часть описания виртуальной машины в /etc/libvirt/qemu/quantal.xml
Согласно этой ссылке, для производительности и надежности лучше всего установить модель сетевого устройства
virtio
, вы можете сделать это в virt-viewer, нажав кнопку i , перейдя к настройке NIC и установив «Модель устройства». "кvirtio
. Вы также можете добавить это в XML выше, добавив строку:В итоге
Все это заняло 12.04 было:
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
, либо создайте виртуальную машину с помощью virt-manager, указав сетевой мост br0 на шаге 4 -> панель «Дополнительные параметры».Никаких дальнейших изменений в сети, возможностях, шаблонах или конфигурациях не потребовалось.
Чтобы выставить услугу вашего нового гостя в Интернете, вам необходимо:
Не забудьте протестировать и снова включить службу брандмауэра для вашего главного компьютера. Может потребоваться любая запись для пересылки трафика гостю.
См. Https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking и https://help.ubuntu.com/12.04/serverguide/libvirt. HTML .
источник
ps aux | grep kvm
).brctl show
как указано в вашем вопросе?) Какую версию Ubuntu вы используете? Может в этом и разница. Какая версия вирт-менеджера? (Мой 0.9.1-1ubuntu5.1).Если вы видите, что хост может получить доступ к гостю, а гость может получить доступ к хосту, но гость не может получить доступ к другим машинам в сети или наоборот ... возможно, брандмауэр хоста блокирует доступ.
Смотрите: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461.
В частности, этот раздел: «Последний шаг - отключение сетевого фильтра на мосту:
источник
Это два сценария, которые я использую для создания моста.
qemu-kvm
.Во-первых, пусть хост станет IP-маршрутизатором.
Сценарий
ip-router.sh
:Затем создайте
tun-tap
интерфейс иbridge
с интерфейсом по умолчанию (обычно с подключением к Интернету).Сценарий
create-qemu-bridged-tuntap.sh
:Я использую эти сценарии ежедневно, поэтому они должны хорошо работать и для вас. Вам нужно будет установить какой-то пакет, чтобы все это работало. С помощью:
Вы можете увидеть, какой пакет должен иметь
COMMAND
. Например, чтобы увидеть, какой пакет требуется иметьbrctl
, просто запустите:и вы будете иметь:
Используя один и тот же подход для всех команд в этих сценариях, вы должны (как минимум) запустить эту
aptitude
командную строку:Наконец, вы можете запустить основной скрипт (как обычный пользователь):
При запуске
ip addr
вы должны увидетьbr0
интерфейс с IP-адресом192.168.1.1
, как указано вcreate-qemu-bridged-tuntap.sh
скрипте:Это
host address
как видно изguest
. И наоборот, гость будет иметь в качестве IP-адреса192.168.1.95
(опять же, это можно легко изменить в основном скрипте).Теперь, используя
virt-manager
, вы просто должны настроить свой гостевой ник для использования вbr0
качестве физического интерфейса.Внутри
guest
, вы просто должны датьeth0
IP-адрес,192.168.1.95
и все должно работать нормально.источник
cat /proc/sys/net/ipv4/ip_forward
дал0
. Включение и сохранение его прояснило проблему для меня, инструкции в этом посте .