pve-trunks-plugin/README.md

92 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# PVE Trunks Plugin
Добавляет поле **Trunks** в редактор сетевого интерфейса QEMU VM в веб-интерфейсе Proxmox VE.
Proxmox уже умеет парсить и сохранять параметр `trunks`, но в UI нет поля для него — приходится редактировать конфиг VM вручную. Этот плагин это исправляет.
## Установка
```bash
# Скопировать на хост Proxmox
scp -r pve-trunks-plugin/ root@<PVE_HOST>:/tmp/
# Установить
ssh root@<PVE_HOST> "bash /tmp/pve-trunks-plugin/install.sh"
```
После установки перезагрузить веб-интерфейс: **Ctrl+Shift+R**.
## Удаление
```bash
ssh root@<PVE_HOST> "bash /tmp/pve-trunks-plugin/uninstall.sh"
```
## Использование
1. VM → Hardware → Network Device → Edit
2. Поставить галку **Advanced**
3. Заполнить поле **Trunks**
### Формат
| Значение | Описание |
|---|---|
| `100;200;300` | Пропустить VLAN 100, 200, 300 тегированными |
| `100-200` | Диапазон VLAN от 100 до 200 |
| `100;200-300;400` | Комбинация отдельных VLAN и диапазонов |
### Примеры
| VLAN Tag | Trunks | Результат |
|---|---|---|
| 100 | `200;300` | Native VLAN 100 (untagged), VLAN 200 и 300 тегированные |
| *(пусто)* | `100;200;300` | Без native VLAN, все три VLAN тегированные |
| *(пусто)* | *(пусто)* | Access-порт, без тегирования |
### Пропустить все VLAN (полный транк)
**Вариант 1** — указать диапазон:
```
2-4094
```
Пропустит все используемые VLAN (1 обычно native/default).
**Вариант 2** — оставить оба поля пустыми:
Если **VLAN Tag** и **Trunks** пустые, а бридж `vlan-aware`, VM получает весь трафик без изменений. Тегирование делает гостевая ОС:
```bash
# Внутри VM
ip link add link eth0 name eth0.100 type vlan id 100
ip link add link eth0 name eth0.200 type vlan id 200
```
> **Важно:** На хосте Proxmox у бриджа должен быть `bridge-vlan-aware yes` в `/etc/network/interfaces` для работы VLAN/trunk.
## Совместимость
Проверено на Proxmox VE 9.1. Должно работать на PVE 8.x+ (любая версия с поддержкой `trunks` в парсере).
## Как работает
Плагин использует ExtJS `override` на `PVE.qemu.NetworkInputPanel` и добавляет поле Trunks в секцию Advanced. Сериализацию делает штатный `PVE.Parser.printQemuNetwork` (он уже умеет `trunks=`), плагин лишь поддерживает `me.network.trunks`. Исходные файлы pvemanagerlib не правятся — добавляется только новый JS-файл, подключённый в index template после `pvemanagerlib.js`.
### Переживание обновлений
JS-файл (`/usr/share/pve-manager/js/`) и `index.html.tpl` принадлежат пакету `pve-manager`, поэтому `apt upgrade` их затирает. Установщик поэтому:
- кладёт копию плагина в `/usr/local/share/pve-trunks-plugin/`;
- ставит идемпотентный `/usr/local/sbin/pve-trunks-reapply.sh` (восстанавливает JS и тег в шаблоне, перезапускает `pveproxy` только при реальном изменении);
- регистрирует apt-hook `/etc/apt/apt.conf.d/99-pve-trunks-plugin`, дёргающий reapply в конце apt-транзакции.
`install.sh` и `uninstall.sh` идемпотентны; перед правкой `index.html.tpl` делается бэкап `index.html.tpl.pve-trunks-bak`.
## Файлы
- `pve-trunks-plugin.js` — ExtJS override плагин
- `install.sh` — установщик (+ reapply-hook для апгрейдов)
- `uninstall.sh` — удаление (вместе с reapply-машинерией)