Proxmox: проброс USB в виртуальную машину

USB-устройство, подключённое к серверу Proxmox, не появляется внутри виртуальной машины автоматически — гипервизор изолирует хостовое оборудование, и для передачи флешки, токена, принтера или USB-адаптера в гостевую систему требуется явная настройка проброса. Proxmox VE поддерживает два основных способа: проброс отдельного USB-устройства по идентификатору и проброс целого USB-порта, к которому можно подключать разные устройства.

Ниже разберём оба метода через веб-интерфейс и командную строку, ограничения по типам машин (QEMU/KVM и LXC), а также типичные ошибки вроде неработающего устройства после перезагрузки хоста. Инструкция актуальна для современных версий Proxmox VE; в старых релизах часть опций веб-интерфейса может отсутствовать.

Что нужно знать перед пробросом USB в Proxmox

Проброс USB в Proxmox работает только для виртуальных машин на базе KVM/QEMU. Для контейнеров LXC механизм другой — там устройство прокидывается через bind-mount или прямой доступ к файлу устройства, и веб-интерфейс такой опции не предлагает. Если у вас контейнер, стандартная кнопка «Add USB Device» будет недоступна.

Важно понимать разницу между двумя режимами проброса:

  • 🔌 Проброс по Vendor/Device ID — конкретное устройство привязывается к ВМ независимо от того, в какой порт оно воткнуто. Удобно для токенов и ключей, которые могут переподключаться.
  • 🔢 Проброс по порту (hostport) — в ВМ передаётся всё, что подключено к конкретному физическому порту сервера. Подходит, если устройства меняются, а порт фиксирован.
  • USB 3.0 (xhci) — для устройств USB 3.x стоит выбирать контроллер usb3, иначе возможны проблемы со скоростью или совместимостью.
  • 🚫 Устройство, проброшенное в ВМ, становится недоступным хосту — например, проброшенный USB-диск нельзя одновременно смонтировать в Proxmox.
⚠️ Внимание: не пробрасывайте в виртуальную машину USB-накопитель, с которого загружается сам Proxmox, или устройство, где лежат образы дисков ВМ. После старта машины хост потеряет к нему доступ, что может привести к сбоям хранилища.

Способ 1: проброс USB через веб-интерфейс Proxmox

Самый простой путь — графический интерфейс. Откройте нужную виртуальную машину в панели Proxmox, перейдите на вкладку Hardware и нажмите Add → USB Device. В появившемся окне доступен выбор режима: Use USB Vendor/Device ID или Use USB Port.

В первом случае выберите устройство из выпадающего списка — Proxmox покажет все обнаруженные на хосте USB-девайсы с их идентификаторами. Во втором случае укажите номер порта в формате, который отображается в списке (например, 1-2). Для устройств USB 3.x отметьте опцию Use USB3, чтобы гостевая система получила контроллер xHCI вместо более медленного эмулируемого USB 2.0.

После добавления устройство появится в списке оборудования ВМ. Изменения подхватываются при следующем запуске машины; горячее подключение возможно, но работает не для всех гостевых ОС и типов устройств — надёжнее выполнить полную перезагрузку ВМ.

☑️ Проброс USB через веб-интерфейс

Выполнено: 0 / 5

Способ 2: проброс USB через командную строку

Терминал даёт больше контроля и позволяет автоматизировать настройку. Сначала определите подключённые устройства командой lsusb — она покажет список вида Bus 001 Device 003: ID 0781:5567 SanDisk Cruzer Blade, где 0781:5567 — это Vendor ID и Product ID.

Для проброса по идентификатору устройства выполните:

qm set 100 --usb0 host=0781:5567

Здесь 100 — ID виртуальной машины, а usb0 — номер виртуального USB-слота (можно usb0, usb1 и так далее). Для проброса целого порта и включения USB 3.0 команда выглядит так:

qm set 100 --usb0 host=1-2,usb3=1

Чтобы удалить проброшенное устройство, используйте qm set 100 --delete usb0. Проверить текущую конфигурацию можно командой qm config 100 — строки usb0, usb1 и т.д. покажут все назначенные устройства. Изменения записываются в файл конфигурации /etc/pve/qemu-server/100.conf, его можно править и вручную, но через qm безопаснее — команда проверяет синтаксис.

Сравнение способов проброса

Выбор метода зависит от сценария использования. Краткая сводка:

Критерий По Vendor/Device ID По порту (hostport)
Привязка К конкретному устройству К физическому порту сервера
Замена устройства Требует перенастройки Работает с любым устройством в том же порту
Несколько одинаковых устройств Не различает экземпляры Различает по порту
Переподключение в другой порт Продолжает работать Перестаёт работать
Типичный сценарий Токены, ключи, HASP Флешки, временные устройства
📊 Какой способ проброса USB вы используете в Proxmox?
По Vendor/Device ID
По номеру порта
Через PCI-пасsthrough контроллера
Ещё не настраивал

Проброс целого USB-контроллера через PCI passthrough

Если стандартный проброс работает нестабильно — устройство отваливается, не определяется после перезагрузки или требует прямого доступа к железу (типично для USB-сетевых адаптеров, тюнеров, звуковых карт) — есть альтернатива: проброс целого USB-контроллера как PCI-устройства. Тогда все порты этого контроллера целиком уходят в виртуальную машину.

Для этого на хосте должна быть включена поддержка IOMMU (Intel VT-d или AMD-Vi) в BIOS/UEFI и в загрузчике. Затем через Hardware → Add → PCI Device в настройках ВМ выбирается нужный контроллер. Учтите: хост полностью теряет эти порты, поэтому метод подходит только если на отдельном контроллере не висят критичные для Proxmox устройства — например, клавиатура, через которую вы управляете сервером локально.

⚠️ Внимание: PCI passthrough требует корректной изоляции устройства в отдельной IOMMU-группе. Если контроллер оказался в одной группе с другим оборудованием, проброс может не сработать или затронуть соседние устройства. Проверяйте группы командой find /sys/kernel/iommu_groups/ -type l перед настройкой.
Как проверить, включён ли IOMMU

Выполните на хосте команду dmesg | grep -e DMAR -e IOMMU. Если вывод пустой — скорее всего, IOMMU отключён в BIOS или не добавлен параметр ядра (intel_iommu=on для Intel или amd_iommu=on для AMD в настройках загрузчика). После изменения параметров требуется перезагрузка хоста.

Типичные проблемы и их решение

Устройство добавлено, но в гостевой системе его нет — самая частая жалоба. Начните диагностику с хоста: команда lsusb должна показывать устройство до запуска ВМ. Если его нет даже там, проблема в физическом подключении, питании порта или неисправности самого устройства, а не в Proxmox.

Другие распространённые ситуации:

  • 🔄 Устройство пропадает после перезагрузки хоста — возможная причина в том, что устройство сменило номер на шине. Проброс по Vendor/Device ID решает это лучше, чем по порту.
  • 🐢 Низкая скорость передачи данных — проверьте, включён ли режим usb3; без него диски работают через медленный эмулируемый контроллер.
  • 🪟 Windows не видит устройство — установите в гостевой системе актуальные драйверы VirtIO и проверьте Диспетчер устройств на наличие неизвестного оборудования.
  • 🔁 Устройство занято хостом — если Proxmox смонтировал USB-диск или использует его, проброс может завершиться ошибкой; отмонтируйте устройство на хосте перед стартом ВМ.

Если ничего не помогает, посмотрите журнал ВМ: qm start 100 в терминале выводит ошибки запуска, а dmesg на хосте покажет события USB-подсистемы. Часто там видны конкретные причины — например, конфликт адресов или отказ в доступе.

Проброс USB в LXC-контейнеры

Контейнеры LXC не поддерживают стандартный механизм USB-пасsthrough из веб-интерфейса, поскольку они разделяют ядро с хостом. Тем не менее передать устройство можно, отредактировав конфигурацию контейнера вручную: задаётся доступ к файлу устройства в /dev и права через cgroup. Точные параметры зависят от типа устройства и версии Proxmox, поэтому сверяйтесь с официальной документацией Proxmox VE для вашего релиза.

Для привилегированных контейнеров такой подход проще, для непривилегированных потребуется дополнительная настройка прав. Если устройство критично и требует изоляции, надёжнее использовать полноценную виртуальную машину вместо контейнера.

Часто задаваемые вопросы

Можно ли пробросить USB-устройство в работающую ВМ без перезагрузки?

Да, Proxmox поддерживает горячее подключение USB для запущенных машин — устройство добавляется через Hardware → Add или командой qm set и подхватывается на лету. Однако не все гостевые системы и устройства корректно обрабатывают hotplug, поэтому при проблемах выполните полную перезагрузку ВМ.

Почему ВМ не стартует после добавления USB-устройства?

Возможные причины: устройство физически отключено от сервера, занято хостом (например, смонтировано) или указан неверный идентификатор/порт. Проверьте наличие устройства через lsusb и попробуйте запустить машину из терминала командой qm start <ID>, чтобы увидеть текст ошибки.

Сколько USB-устройств можно пробросить в одну ВМ?

Proxmox позволяет добавить несколько записей usb0–usb4 (до пяти устройств) в конфигурацию одной виртуальной машины. Если нужно больше, рассмотрите проброс целого USB-контроллера через PCI passthrough.

Будет ли работать проброшенная USB-флешка как загрузочная в ВМ?

Да, если в настройках ВМ в разделе Options → Boot Order поднять приоритет USB-устройства или выбрать его в меню загрузки через консоль (клавиша Esc при старте в SeaBIOS). Для UEFI-загрузки с USB поведение может отличаться — проверяйте настройки OVMF.

Что делать, если устройство отваливается во время работы ВМ?

Проверьте стабильность питания USB-порта и качество кабеля, отключите энергосбережение USB в гостевой ОС и попробуйте другой порт сервера. Если сбои продолжаются, перейдите на PCI passthrough контроллера — прямой доступ к железу обычно устраняет такие проблемы.