🏠: красноглазие

Проброс USB по сети

Берём «железный» linux-сервер, например, Ubuntu 22.04 LTS, на котором есть порты USB, вставляем туда ключ HASP, широко использующийся для аппаратной защиты программ типа 1С или цифровой подписи. Проверяем, определился ли он в системе:

Определился, прекрасно. Теперь ставим usbip.

# Установка (usbip входит в стандартный набор утилит)
apt install linux-tools-common linux-tools-generic
# Вкл модуль ядра для сервера:
modprobe usbip-host
echo "usbip-host" >> /etc/modules
# Вкл службу
usbipd -D
# Проверить версию
usbip version # usbip (usbip-utils 2.0)

Выводим список локальных устройств usbip и предоставляем нужное устройство в общий доступ.

Теперь нужно настраивать клиента, в данном случае на Windows 11, работающей в виртуальной среде Hyper-V, где, как известно, USB с хоста пробросить в виртуалку нельзя (и это правильно). Предварительно на клиентской машине необходимо установить драйвер usbip, а для этого импортировать сертификат, идущий в комплекте, и отключать цифровую подпись драйверов. Это можно сделать из меню восстановления при загрузке, так как команда bcdedit /set TESTSIGNING ON в современных системах Windows уже не действует.

Итак, драйвер установлен, теперь можно посмотреть, какие устройства доступны на удалённом сервере, и подключить нужное.

Работает! Наш ключ определился как три устройства Sentinel (после установки драйверов HASP). Ниже виден ранее установленный usbip.

Чтобы отключить устройство от клиента, нужно знать порт usbip, на котором оно сидит.

Всё функционирует корректно. Флешка и внешний привод DVD-RW тоже успешно подключаются, а вот веб-камеру мне пробросить на Windows не удалось.

Конечно, применимость этой технологии в промышленной среде под вопросом, прежде всего из-за возни с неподписанными драйверами и отключения механизма проверки подписи для Windows-клиента (Upd: автор подписал драйвер, теперь всё гораздо проще). Как будут себя вести клиенты, если сервер перезагрузится? А если убрать устройство на сервере без отключения на клиенте - как восстанавливать работу, не повиснет ли система? Вопросами автоматической привязки и подключения устройств на сервере и клиентах я также пока не занимался, хотя и знаю, что это возможно. Ещё одной особенностью, которую необходимо учитывать, является невозможность ограничения доступа к USB-устройству, опубликованному на сервере; по всей видимости, нужно будет это делать с помощью межсетевого экрана.

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

HTTP/2

Включил на этом сайте поддержку модной технологии HTTP/2, где «по сравнению с обычным порошком» всё стало быстрее, выше и сильнее.

На моём маломощном Orange Pi PC Plus это не даёт заметного прироста производительности и пришлось повозиться с установкой, потому что имеется баг в версии Apache 2.4.18, когда просто так модуль http2 включить нельзя, пришлось собирать Апач из исходников, чтобы выудить из него собранный модуль mod_http2.so, добавить в каталог модулей уже установленного Апача и только потом запустить.

Тем не менее, мне просто приятно поддерживать сайт в более-менее актуальном состоянии, а также мне нравятся красивые зелёные галочки онлайн-проверок. 🙂

Изображение без описания