ニュースのトップページに戻る

Incus 6.14 リリースのお知らせ

2025/06/28

はじめに

Incus チームは、Incus 6.14 のリリースのアナウンスができてうれしいです!

このリリースは、University of Texas の学生との作業のいくつかを終え、いくつかの小さな機能を追加した、多数の歓迎すべきバグ修正とパフォーマンスの改良を加えた軽量なリリースです。

また、nftables とネットワーク隔離で使用したブリッジネットワークのネットワーク ACL を使用するユーザーに影響するセキュリティ上の問題をいくつか修正しています。

image|690x263

いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/

Enjoy!

セキュリティ修正

このリリースでは、ANSSI(French Cybersecurity Agency)の Olivier BAL-PETRE によって報告された 2 つのセキュリティ問題が修正されています。

どちらの問題も、ファイアウォール用の nftables を使い、ネットワーク隔離機能の一部と組み合わせて、ローカルブリッジ上で Incus のネットワーク ACL を使用することに関連する問題です。

最近の Incus 6.12 での ACL ロジックの変更により、分離の一部がバイパスされ、その環境内の root が DoS 攻撃を引き起こしたり、ホストを偽装して同じネットワークを共有するインスタンスからのトラフィックの一部を傍受したりできました。

  • CVE-2025-52890 (Incus がセキュリティオプションの一部をバイパスする nftables ルールを作成する )
  • CVE-2025-52889 (Incus の制限なしのリソース割り当てにより、管理ブリッジネットワークでファイアウォールルールをバイパスできる )

前述の通り、影響を受けるバージョンは Incus 6.12 と 6.13 です。どちらも定期的なマンスリーリリースであり、Incus 6.14 以降はサポートされません。
最新の LTS リリースはこの問題の影響を受けません。

新機能

インスタンスとボリュームバックアップの S3 アップロード

インスタンスとストレージボリュームのバックアップを S3 バケットに自動的にアップロードできるようになりました。この機能は、システムバックアップを取る時に興味を引く機能であるため、現時点では API 経由でのみ利用できます。

Incus は通常通りバックアップを作成し、ローカルコピーを削除する前に、すぐにターゲットとなるバケットにバックアップのアップロードを開始します。

stgraber@dakara:~$ incus launch images:alpine/edge a1
Launching a1
stgraber@dakara:~$ incus query -X POST /1.0/instances/a1/backups -d '{"optimized_storage": true, "target": {"protocol": "s3", "url": "https://storage.googleapis.com", "bucket_name": "incus_backups", "path": "my-backup.tar.gz", "access_key": "ACCESS-KEY", "secret_key": "SECRET-KEY"}}' --wait
{
    "class": "task",
    "created_at": "2025-06-28T13:46:21.781378949-04:00",
    "description": "Backing up instance",
    "err": "",
    "id": "89936d87-25b3-44d2-930e-92b579cc2ee0",
    "location": "none",
    "may_cancel": false,
    "metadata": null,
    "resources": {
        "backups": [
            "/1.0/instances/a1/backups/backup0"
        ],
        "instances": [
            "/1.0/instances/a1"
        ]
    },
    "status": "Success",
    "status_code": 200,
    "updated_at": "2025-06-28T13:46:21.781378949-04:00"
}

これは University of Texas in Austin の学生による作業です。

スナップショット作成時の有効期限のカスタマイズ

incus snapshot createincus storage volume snapshot create コマンドの両方に、--expiry フラグが追加されました。これにより、スナップショット作成時に有効期限を直接指定できるようになり、サーバー側で設定されているデフォルト値を上書きできるようになりました。

stgraber@dakara:~$ incus snapshot create a1 foo --expiry=2d
stgraber@dakara:~$ incus snapshot list a1
+------+----------------------+----------------------+----------+
| NAME |       TAKEN AT       |      EXPIRES AT      | STATEFUL |
+------+----------------------+----------------------+----------+
| foo  | 2025/06/28 13:50 EDT | 2025/06/30 13:50 EDT | NO       |
+------+----------------------+----------------------+----------+

手動で作成するスナップショットのデフォルト有効期限の変更

snapshots.expiry.manual を使い、スナップショットのデフォルト有効期限を変更できるようになりました。この設定が指定されていない場合、Incus は、スケジュールされたスナップショットで使用する snapshot.expiry の値を自動的に適用します。

stgraber@dakara:~$ incus config set a1 snapshots.expiry=7d
stgraber@dakara:~$ incus snapshot create a1 first
stgraber@dakara:~$ incus config set a1 snapshots.expiry.manual=2d
stgraber@dakara:~$ incus snapshot create a1 second
stgraber@dakara:~$ incus snapshot list a1
+--------+----------------------+----------------------+----------+
|  NAME  |       TAKEN AT       |      EXPIRES AT      | STATEFUL |
+--------+----------------------+----------------------+----------+
| first  | 2025/06/28 13:53 EDT | 2025/07/05 13:53 EDT | NO       |
+--------+----------------------+----------------------+----------+
| second | 2025/06/28 13:54 EDT | 2025/06/30 13:54 EDT | NO       |
+--------+----------------------+----------------------+----------+

ライブマイグレーションの調整と進捗報告

メモリーを頻繁に変更する VM のマイグレーション時間を減らすため、メモリー転送ロジックにいくつか調整を加えました。

Incus は、マイグレーションする VM の CPU をより積極的にスロットルするようになりました。最初の試行後 50% のスロットルを適用し、変更がより高いレートで検出されると、徐々に制限値を下げていきます。

これに加え、Incus はメモリーマイグレーションの進捗も提供します。

image|689x247

resource API での CPU アドレスサイズの報告

CPU やプラットフォームが異なれば、メモリーを指定するための物理アドレスと仮想アドレスサイズも異なります。

これは、起動時やホットプラグ後、仮想マシンで利用できるメモリーの総量に影響します。

このため、Incus は VM 内でホットプラグ可能なメモリーの最大量を調整するために、これらの値を追跡し続ける必要があります。

stgraber@castiana:~$ incus query /1.0/resources | jq .cpu.sockets[0].address_sizes
{
  "physical_bits": 48,
  "virtual_bits": 48
}

データベースロジックのコードジェネレーターへの移動

さまざまなネットワークオブジェクトについて、そのデータベース関数にコードジェネレーターを使うようにする移行作業が完了しました。

このリリースでは、次の 2 つのオブジェクトが変換されました:

  • ネットワークフォワード
  • ネットワークピア

これは University of Texas in Austin の学生による作業です。

すべての変更点

このリリースのすべての変更のリストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • incus: Make sure we parse the config early enough
  • incus/main_aliases: Avoid parsing loops
  • incusd/instance/qemu: Skip invtsc on non-x86 and when running nested
  • incusd/instance/qmp remove net Conn
  • api: backup_s3_upload
  • shared/api: Add backup target for instance and volume
  • doc/rest-api: Refresh swagger YAML
  • incusd/backup: Add upload function
  • incusd: Add backup upload logic
  • incusd/device/nic_physical: Check for parent being a bridge
  • incusd/device/nic_physical: Handle managed physical network being a bridge
  • incusd/instance/lxc: Tweak OCI entrypoint escaping
  • incusd/network/ovn: Add dhcpv6_stateless flag
  • incusd/network/ovn: Tweak DNS server logic
  • incusd/network/ovn: Set stateless DHCPv6 flag
  • incusd/main_forknet: Don't crash on missing status code
  • incusd/server/network: correct complement range calculation for DHCP reservations
  • test/storage/zfs: add test for incus:content_type after clone
  • incusd/storage/zfs: Fix missing incus:content_type after cloning a custom volume
  • incusd/instance/qmp move logfile to qmp
  • incusd/instance/qmp add qmp log implementation
  • incusd/instance/qmp base qmp log on new implementation
  • incusd/instances: Fix operation plumbing
  • incusd/instance/qemu/qmp: Add MigrateSetParameters
  • incusd/instance/qemu: Tweak migration parameters
  • incusd/instance/qemu/qmp: Add QueryMigrate
  • incusd/instance/qemu: Report migration progress
  • incus/profile: Fix a typo in profile set usage text
  • i18n: Update translation templates for profile set cmd
  • incusd/storage: Handle missing storage bucket listener
  • incusd/instance/qmp added qmp event log
  • incus-migrate: Fix calculating volume size for block device
  • incusd/instance/qmp: Prevent initialization of qmpLog with an empty log file path
  • incus/info: Fix --show-log
  • incusd: Remove target check when server clustered
  • Translated using Weblate (Portuguese)
  • client: Don't swallow error if incusParseResponse is successful
  • Translated using Weblate (Portuguese)
  • incusd/cluster: Return the cluster certificate after bootstrap
  • Translated using Weblate (Portuguese)
  • Translated using Weblate (Portuguese)
  • incusd/network/ovn: Fix regression in stateful DHCPv6 handling
  • incusd/db/cluster: Port network peer to database generator
  • incusd: Update for new network peer functions
  • gomod: Update dependencies
  • incusd/apparmor/forkproxy: Expand /dev exception
  • Translated using Weblate (Portuguese)
  • Translated using Weblate (Portuguese)
  • internal/instance: Add exported error
  • incus/snapshot: Implement --expiry
  • incus/storage/snapshot: Implement --expiry
  • i18n: Update translation templates
  • api: snapshot_manual_expiry
  • doc/storage: Add snapshots.expiry.manual
  • internal/instance: Add snapshots.expiry.manual
  • doc: Update config
  • incusd/storage: Add snapshots.expiry.manual validation
  • incusd/instance_snapshot: Add snapshots.expiry.manual
  • incusd/storage_volume_snapshot: Add snapshots.expiry.manual
  • shared/tls: Export TLSConfigWithTrustedCert
  • internal/server/db/cluster: Generate functions using DB generator
  • incusd/scriptlet: Allow sets
  • internal/server/network: Port to generated functions
  • Translated using Weblate (Portuguese)
  • Translated using Weblate (Portuguese)
  • lxc-to-incus: Add lxc.apparmor.allow_nesting
  • tests: Workaround old socat bug
  • tests: Update for newer easyrsa
  • tests: Recent XFS requires a minimum volume size of 300MiB
  • github: Switch to ZFS backend for Linstor
  • github: Switch tests to Ubuntu 24.04
  • api: resources_cpu_address_sizes
  • incusd/resources: Track CPU address sizes
  • incusd/instance/qemu: Be smarter about max memory hotplug
  • doc/rest-api: Refresh swagger YAML
  • incusd/instance/qemu: Cap hotplug memory to 1TB
  • incusd/cluster: Fix incorrect handling of server address
  • incusd/instance/qmp: Fix typo
  • incusd/device/disk: Allow degraded zpools
  • incusd/storage_volumes: Fix cross-project cluster volume copy/move
  • incusd/firewall/nftables: Fix rule ordering for ARP/NDP
  • incusd/firewall/nftables: Fix ordering of basic rules
  • incusd/storage/lvm: Avoid concurrent activation/deactivation
  • devcontainer: Add gofumpt
  • incus/config/set: Add example using stdin
  • i18n: Update translation templates
  • incusd/instance/qemu: Only compress qcow2 if publishing a split image
  • incusd/instance/qemu: Don't flood the debug log
  • incusd/storage/zfs: Handle re-use of delegated dataset
  • incus/file: Remove OS-specific handling from SSHFS logic
  • gomod: Update dependencies
  • Translated using Weblate (Portuguese)

ドキュメント

Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)

パッケージ

Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。

Linux 上に Incus サーバーをインストールする

Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。

https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)

Incus クライアントの Homebrew パッケージ

Homebrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。

https://formulae.brew.sh/formula/incus

Incus クライアントの Chocolatey パッケージ

Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://community.chocolatey.org/packages/incus/6.14.0

Incus クライアントの Winget パッケージ

Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://winstall.app/apps/LinuxContainers.Incus

サポート

月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。

コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues