У меня 5 физических машин под управлением Ubuntu 14.04, все они вместе в сети. Все они имеют статические IP-адреса. Каждая из этих машин имеет от 1 до 4 виртуальных машин через KVM / QEMU под управлением Ubuntu 14.04. Мне разрешено использовать DHCP для получения нестатических адресов для всех виртуальных машин в физической сети, но для моего распределенного программного обеспечения мне нужно, чтобы все виртуальные машины имели статические IP-адреса в виртуальной сети (поскольку я не могу получить подробнее о физической сети). Однако эта виртуальная сеть должна охватывать всех гостей на всех виртуальных машинах. Кроме того, одна из виртуальных машин также должна иметь статический адрес в физической сети.
Мне удалось создать виртуальную сеть на одном хосте для всех виртуальных машин, поэтому у них могут быть статические IP-адреса, но если я сделаю это для каждого хоста, это не сработает. Я также создал мостовой интерфейс для статического IP-адреса в физической сети на одной из виртуальных машин.
Это моя желаемая схема:
123.45.144.0/28 (physical network)
192.168.0.0/16 (virtual network for all the vms)
123.45.147.3 (host)
192.168.122.101, 123.45.147.49 (vm)
192.168.122.102 (vm)
192.168.122.103 (vm)
192.168.122.104 (vm)
123.45.147.4 (host)
192.168.122.105 (vm)
123.45.147.5 (host)
192.168.122.106 (vm)
123.45.147.6 (host)
192.168.122.107 (vm)
192.168.122.108 (vm)
123.45.147.7 (host)
192.168.122.109 (vm)
192.168.122.110 (vm)
Вот результаты работы ifconfig:
Один из хозяев:
eth0 Link encap:Ethernet HWaddr 5c:f9:dd:75:07:72
inet addr:123.45.147.3 Bcast:123.45.151.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
virbr0 Link encap:Ethernet HWaddr 52:54:00:bd:2b:39
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Виртуальная машина с мостовым интерфейсом (eth1) и интерфейсом для виртуальной сети (eth0)
eth0 Link encap:Ethernet HWaddr 52:54:00:59:2d:c8
inet addr:192.168.122.101 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr 52:54:00:4d:d0:59
inet addr:123.45.147.49 Bcast:123.45.151.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
После нескольких часов поиска в Google мне не удалось найти аналогичную настройку проблемы, с которой я столкнулся. Поскольку я плохо знаком с сетями, я был бы признателен за любые подсказки к решению.
Когда вы создаете виртуальную сеть на каждом хосте, обратите внимание на ifconfig
показывает "virbr0" как имеющий адрес "192.168.122.1". Попробуйте отредактировать файл конфигурации виртуальной сети на каждом хосте после создания виртуальной сети так, чтобы «virbr0» содержал другой IP-адрес (например, 192.168.122.2 на хосте 2, 192.168.122.3 на хосте 3, 192.168.122.4 на хосте 4, 192.168. 122,5 на хосте 5).
Вероятно, у вас возникли проблемы с дублированием IP, потому что легко забыть, что ваш хост является членом этой виртуальной сети через virbr0. Вы должны изменить IP-адрес в файлах конфигурации, чтобы настройки пережили перезагрузку.
Возможно, вам придется включить пересылку пакетов, чтобы эта работа работала
sudo sysctl net.ipv4.ip_forward=1
Если у вас есть отдельный интерфейс ethX в системе с подключением к физической сети, создайте второй мост на этом интерфейсе. Затем вы можете настроить физический адрес на этом виртуальном мосту.
Статический адрес можно настроить на виртуальной машине. Это упрощает поддержание стабильного адресного пространства.