今回は、Incusで作成したインスタンスを、クラスタ内のネットワークではなく、ホスト側のネットワークに直接接続する方法をご紹介します。Netplanを使っていますが、Netplanでなくても基本的な手順は同じなので、応用も効くはずです。
Contents
前準備: bridgeネットワークを構成する
まずは、ホスト側にブリッジネットワークを設定します。
cloud-initを無効化する
Ubuntuを使っている場合、50-cloud-init.yaml
というファイルがネットワーク設定の邪魔をすることがあります。これを無効化しておきます。Netplanを使っていない場合はスキップして大丈夫です。
sudo touch /etc/cloud/cloud-init.disabled
sudo rm /etc/netplan/50-cloud-init.yaml
bridge用の設定を書く
次に、ブリッジネットワークの設定ファイルを書いていきます。ここではbr0
というブリッジネットワークを作成し、物理ネットワークデバイスのenp3s0
をそのインターフェースとして使います。br0
側に固定IPアドレスなどを設定します。
# /etc/netplan/01-config.yaml
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
dhcp6: false
bridges:
br0:
dhcp4: false
dhcp6: false
interfaces: [enp3s0]
addresses: [192.168.100.101/24]
routes:
- to: default
via: 192.168.100.1
nameservers:
addresses: [192.168.100.1]
parameters:
stp: false
forward-delay: 0
設定をapplyする
ここまでできたら、設定を適用します。コマンド実行後、ip a
やifconfig
などを使って、br0
ネットワークデバイスがちゃんと構成されているか確認してみてください。ついでに、物理デバイスにIPアドレスが降ってきていないことも確認すると完璧です。
注: 設定を間違えると、リモートで接続できなくなる可能性があります。もしもの時のために、物理マシンにディスプレイを接続できる環境で作業することをおすすめします。
sudo chmod 600 /etc/netplan/01-config.yaml # rootユーザーでyamlを作らなかった場合
sudo netplan generate # 不要かも
sudo netplan apply
クラスタ内のサーバーに適用する
もしIncusをクラスタで構成しているなら、ブートストラップサーバー以外のサーバーにもbr0
を作成する必要があります。クラスタ内のすべてのサーバーで、同じ手順を踏んでください。このとき、固定IPアドレスなどは適宜調整が必要です。
プロフィールにネットワークを設定
いよいよIncus側の設定です。先ほど作成したブリッジネットワーク(br0
)を継承して、Incusのインスタンスがホストネットワークに接続できるように設定していきます。ネットワークからは現状できないようなので、プロフィールに直接設定を書き込んでいきます。
いくつかの参考スレッドを貼っておきます。
参考1: https://discuss.linuxcontainers.org/t/incus-cluster-network-issue/18650
参考2: https://discuss.linuxcontainers.org/t/attaching-instances-from-the-managed-bridge-network-to-the-host-bridge-network/21530/3
参考3: https://discuss.linuxcontainers.org/t/how-to-use-my-local-lan-instead-of-incus-network-ipv4-and-ipv6/21564/4
参考4: https://discuss.linuxcontainers.org/t/incus-container-bridge-issues/22128/3
CLIで設定する場合
プロフィールは任意ですが、ここではdefault
プロフィールに適用します。
incus profile device remove default eth0
incus profile device add default eth0 nic nictype=bridged parent=br0 name=eth0
GUIで設定する場合
IncusのGUIを使っている場合は、プロフィール編集画面の以下のトグルからYAMLの設定画面に移動できます。

ここでeth0
の部分を以下のように変更してください。

インスタンスを作成します
いよいよインスタンスを作成する番です!先ほど設定したプロフィールを使って、新しいインスタンスを作成してみましょう。
インスタンスが起動したら、ip a
などでIPアドレスがちゃんと降ってきているか確認してみてください。もし設定したホストネットワークのIPアドレス範囲から取得できていれば、ほぼ成功です!喜びながら、pingも打ってみましょう。
補足: Cloud-Initで固定IPを割り振る
一例ですがUbuntu24.04のイメージを使用する場合、Cloud-Init設定内にあるNetwork Configを以下のように記述することでIPv4アドレスを固定可能です。
version: 2
ethernets:
enp5s0:
dhcp4: false
dhcp6: true
addresses:
- 192.168.100.123/24 # 使用したいアドレス
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses:
- 192.168.0.1
最後に
今回はIncusのインスタンスをホスト側のネットワークに接続する方法をご紹介しました。クラスタのネットワークとは別に、直接ホストのネットワークにインスタンスを参加させたい場合に役立つ設定です。
ブリッジネットワークの設定、cloud-initの無効化、そしてIncusプロフィールの変更と、いくつかの手順を踏む必要がありましたが、うまくいって良かったです。
もしうまくいかない場合は、コメントいただければわかる範囲で回答します。