Proxmox на Linux VMware Workstation – нет доступа к сети внутри гостевых ОС

В этой короткой статье-шпаргалке я расскажу с какой столкнулся особенность при настройке Proxmox на Linux VMware Workstation. Я не тестировал проблему с доступом к сети во вложенной виртуализацией Hyper-V и ESXi на VMware Workstation. Однако, с большой долей вероятности там данная проблема также воспроиведется. Поэтому, приведенное ниже решение должно помочь (я надеюсь).

Описание проблемы

Виртуальные машины, подключенныйе к виртуальной сети Proxmox, не имели доступа к шлюзу внутри локальной сети. Как следствие, у виртуальных машин отсутствовал доступ в Интернет.

Причем, по DHCP виртуальная машина или контейнер Proxmox получали IP-адрес.

Однако, если попытаться проверить доступность шлюза вунтри локальной сети (через утилиту ping), то ни один пакет не доходил до целевого узла. Как результат, доступа во внешний мир с виртуальных машин или контейнеров тоже не было.

Окружение

Версия операционной системы: Linux Mint 20.3 Cinnamon (kernel 5.4.0-121).

Версия гипервизора: VMware® Workstation 15 Pro (15.5.2 build-15785246).

Ядро и версия Proxmox: Proxmox Virtual Environment 7.2-7 (kernel 5.15.39-1).

Настройки виртуальной сети Proxmox:

Причина

Файлы устройств виртуальных сетей (/dev/vmnet*) не были настроены на прием и передачу всех пакетов (promiscuous mode).

Исходные разрешения на файлы устройств:

sudo ls -l /dev/vmnet*
root@mintwks:/home/roman# sudo ls -l /dev/vmnet*
crw-rw---- 1 root root 119, 0 Jul 13 22:07 /dev/vmnet0
crw-rw---- 1 root root 119, 1 Jul 13 22:07 /dev/vmnet1
crw-rw---- 1 root root 119, 8 Jul 13 22:07 /dev/vmnet8
root@mintwks:/home/roman# 

В операционной системе я работаю под учетной записью roman и группой roman. Соответственно, у моей УЗ нет доступа к этим файлам устройств и я не могу полноценно работать с виртуальными сетями внутри гостевых ОС.

roman@mintwks:~$ id
uid=1000(roman) gid=1000(roman) groups=1000(roman),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),114(lpadmin),134(sambashare)

Решение

Необходимо включить прием и передачу всех пакетов (promiscuous mode) для виртуальных сетей VMware. Решение не мое, я подсмотрел его вот здесь. Тем не менее я решил сохранить его у себя, чтобы всегда было под рукой.

Я добавил две команды в файл nano /etc/init.d/vmware, которые назначают группу владельца (roman в моем случае, именно эта группа является основной группой моей УЗ) и добавляют разрешения на запись для группы.

Открываем файл /etc/init.d/vmware на редактирование:

nano /etc/init.d/vmware

Находим функцию vmwareStartVmnet() и добавляем две команды:

# Start the virtual ethernet kernel service
vmwareStartVmnet() {
   vmwareLoadModule $vnet
   "$BINDIR"/vmware-networks --start >> $VNETLIB_LOG 2>&1
   chgrp roman /dev/vmnet*
   chmod g+rw /dev/vmnet*
}

Обратите внимание, что в вашем случае имя группы может быть другое, т.е. первая команда должна выглядеть слудющим образом:

chgrp <имя_вашей_группы> /dev/vmnet*

Вносим и сохраняем изменения. Перезагружаемся. Виртуальные сети Proxmox на Linux VMware Workstation теперь должны работать корректно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *