У меня есть образ с установкой debian-squeeze, с помощью которого я создал два оверлейных образа для загрузки двух (почти идентичных) виртуальных машин.
Когда я загружаю их по отдельности (подключаю их к vde-switch и указываю mac-адрес в командной строке qemu / kvm), все работает так, как я ожидал.
Однако, когда я запускаю их одновременно, происходит что-то странное:
Первая загружаемая машина работает, как ожидалось, и создает интерфейс «eth0», но вторая машина создает не «eth0», а «eth1».
Может кто-нибудь объяснить это поведение?
Как лучше всего гарантировать, что во всех виртуальных машинах виртуальный сетевой интерфейс имеет одно и то же имя?
Большое спасибо!
Большинство систем Linux используют udev для привязки имени интерфейса к определенным MAC-адресам (чтобы компьютеры с несколькими сетевыми адаптерами имели интерфейсы, согласованные при загрузке). Однако это вызывает эту проблему, когда MAC-адрес действительно изменяется (например, при загрузке в виртуальной машине с другим установленным MAC-адресом), но вам не нужно назначать новое имя интерфейса. Чтобы очистить эти сопоставления, удалите соответствующий файл в /etc/udev/rules.d/
(обычно называют 70-persistent-net.rules
) и перезагрузитесь. В вашем случае вы хотите сделать это при создании эталонного образа.
Если ваш гость - Debian 10, вы можете легко переименовать интерфейс в /etc/network/interfaces
:
rename enp1s0=mynw0
auto mynw0
iface mynw0 inet dhcp
Затем активируйте его:
ifup mynw0
Вы можете использовать любое имя, какое захотите.
Они запускаются на одной машине? Как они общаются с внешним миром? Используете ли вы какой-либо интерфейс моста, например br0, на хост-машине? Можете ли вы вставить команду qemu, которая используется для запуска обоих vms.