92 lines
4.3 KiB
Markdown
92 lines
4.3 KiB
Markdown
# 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-машинерией)
|