Назад | Перейти на главную страницу

имена виртуальных интерфейсов в qemu / kvm

У меня есть образ с установкой 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.