Вчера столкнулся с неведомой глупостью... Proxmox, а точнее Debian меня просто поставил в ступор.
Есть у меня значит теперь домашний сервер, который построен на базе обычного ПК. Когда я только устанавливал туда proxmox, я запихнул простенькую видеокарту с пассивным охлаждением. Были мысли пробросить эту видеокарту позже в виртуальную машину, но она мне пригодилась в другом месте. И вот значит я выдёргиваю эту видеокарту из этого сервера и... Я слышу как он запускается, слышу как он включился, но видеть не могу так как монитора нет. Но вот ни одна виртуальная машина не стартует. Да и сама оболочка гипервизора тоже (хотя как позже выяснилось они стартовали, вот только есть один нюанс). Решил воткнуть обратно видеокарту и всё вновь заработало. Сеть поднялась, виртуалочки крутятся. Ну, думаю, «дёрну ка я обратно видеокарту». И снова получаю ту же самую картину.
Достал из шкафа старый монитор, подключил к интегрированной видеокарте. И... гипервизор стартанул, proxmox похвастался своим ip адресом, но попасть с другой машины на него я не смог. Звучит глупо, но... Да, я нагуглил причину.
Дело в том, что в операционных системах Linux ввели новое именования интерфейсов:
«Starting with v197 systemd/udev will automatically assign predictable, stable network interface names for all local Ethernet, WLAN and WWAN interfaces. This is a departure from the traditional interface naming scheme ("eth0", "eth1", "wlan0", ...), but should fix real problems.»
Он используется предоставляемый BIOS указатель номеров, а после пытается использовать номер слота PCI-карт. Имена получает вида ens0, ens1 и так далее. Так вот, когда я выдёргивал видеокарту, сетевая карта получала другой порядковый номер, а в конфигах был указан предыдущий.
Благо, в GRUB можно вернуть старое именование. Для этого делаем следующее:
1) открываем через любимый текстовой редактор /etc/default/grub
У меня особая стадия извращения, поэтому я открываю через mcedit
2) добавляем строку GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
3) перечитываем настройки update-grub и вообще ребутаемся.
После всего этого в конфигах необходимо прописать вместо старого имени сетевого интерфейса, новый. Обычно eth0.
1) вспоминаем, что я извращенец и открываем mcedit /etc/network/interfaces
2) и меняем старый ens (или может быть enp ещё, кстати, на eth0). Получаем следующего вида.
auto lo
iface lo inet loopback
iface eth0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.0.2/24
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
Перезапускаем сеть, или вновь просто перезагружаемся — кому как удобнее.
Вуаля! Внезапно сеть начинает работать и мы радуемся жизни и нашему proxmox.