タイプ: nic

注釈

nicデバイスタイプはコンテナと VM の両方でサポートされます。

ipvlan NIC タイプを除いて)NIC はコンテナと VM の両方でホットプラグをサポートします。

ネットワークデバイス(ネットワークインタフェースコントローラーNICとも呼びます)はネットワークへの接続を提供します。 Incus はさまざまな異なるタイプのネットワークデバイス(NICタイプ)をサポートします。

注釈

VMでUSBネットワークアダプターを使用する場合、メインラインのQEMUはMACアドレスの先頭2バイトを40:で置き換えます。 この影響を受ける方はホストとゲストでMACの報告をそろえるために、手動でhwaddrプロパティを40:から始まるMACアドレスに設定したいかもしれません。

nictypenetwork

インスタンスにネットワークデバイスを追加する際には、追加したいデバイスのタイプを選択するのに 2 つの方法があります。nictypeプロパティを指定するかnetworkプロパティを使うかです。

これらの 2 つのデバイスオプションは相互排他であり、デバイスを作成時にどちらか 1 つのみ指定可能です。 しかし、networkオプションを指定する際には、nictypeオプションはネットワークタイプから自動的に導出されることに注意してください。

nictype

nictype`デバイスオプションを使用する際は、Incus に管理されていないネットワークインターフェースを指定できます。 このため、Incus がネットワークインターフェースを使用するために必要なすべての情報を指定する必要があります。

この方法を使用する際は、nictypeオプションはデバイス作成時に指定する必要があり、作成後は変更できません。

network

networkデバイスオプションを使用する際は、NIC は既存の管理されたネットワークにリンクされます。 この場合、Incus はネットワークについて必要な情報をすべて持っているので、デバイス追加時にはネットワーク名を指定するだけでよいです。

この方法を使用する際は、nictypeオプションは Incus が自動的に導出します。 値は読み取り専用で変更できません。

ネットワークから継承される他のデバイスオプションは NIC 固有のデバイスオプションの「管理」カラムで「yes」と記載されています。 networkの方法を使う場合、NIC のこれらのオプションを直接カスタマイズはできません。

詳細な情報はネットワークについてを参照してください。

利用可能なNIC

次の NIC はnictypenetworkオプションを使って追加できます:

  • bridged: ホスト上に存在する既存のブリッジを使い、ホストのブリッジをインスタンスに接続する仮想デバイスペアを作成します。

  • macvlan: 既存のネットワークデバイスをベースに MAC アドレスが異なる新しいネットワークデバイスを作成します。

  • sriov: SR-IOV が有効な物理ネットワークデバイスの仮想ファンクション(virtual function)をインスタンスにパススルーします。

  • physical: ホストの物理デバイスをインスタンスにパススルーします。 対象のデバイスはホスト上では見えなくなり、インスタンス内に出現します。

次の NIC はnetworkオプションでのみ追加できます:

  • ovn: 既存の OVN ネットワークを使用し、インスタンスが接続する仮想デバイスペアを作成します。

次の NIC はnictypeオプションでのみ追加できます:

  • ipvlan: 既存のネットワークデバイスをベースに MAC アドレスは同じですが IP アドレスが異なる新しいネットワークデバイスを作成します。

  • p2p: 仮想デバイスペアを作成し、片方をインスタンス内に置き、残りの片方をホスト上に残します。

  • routed: 仮想デバイスペアを作成し、ホストからインスタンスに繋いで静的ルートとプロキシ ARP/NDP エントリーを作成します。これにより指定された親インターフェースのネットワークにインスタンスが参加できるようになります。

利用可能なデバイスオプションは NIC タイプによって異なり、以下のセクションの表に一覧表示されます。

nictype: bridged

注釈

この NIC タイプはnictypeオプションかnetworkオプションで選択できます(管理されたbridgeネットワークの情報についてはブリッジネットワーク参照)。

bridged NIC はホストの既存のブリッジを使用し、ホストのブリッジをインスタンスに接続するための仮想デバイスのペアを作成します。

デバイスオプション

bridged タイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VMのブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Managed:

no

connected

NICがホストネットワークに接続されているかどうか

Key: connected
Type:

bool

Default:

true

Required:

no

host_name

ホスト内でのインターフェースの名前

Key: host_name
Type:

string

Default:

ランダムに割り当て

Managed:

no

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

Managed:

no

io.bus

デバイスのバスをオーバーライド(virtiousb)(VMのみ)

Key: io.bus
Type:

string

Default:

virtio

Managed:

no

io.bus

デバイスのバスをオーバーライド(virtiousbaccelerationnoneに設定する必要あり) (VMのみ)

Key: io.bus
Type:

string

Default:

virtio

Managed:

no

ipv4.address

DHCPでインスタンスに割り当てるIPv4アドレス(security.ipv4_filtering設定時にすべてのIPv4トラフィックを制限するにはnoneと設定可能)

Key: ipv4.address
Type:

string

Managed:

no

ipv4.routes

ホスト上でNICに追加するIPv4静的ルートのカンマ区切りリスト

Key: ipv4.routes
Type:

string

Managed:

no

ipv4.routes.external

NICにルーティングしアップリンクのネットワーク(BGP)で公開するIPv4静的ルートのカンマ区切りリスト

Key: ipv4.routes.external
Type:

string

Managed:

no

ipv6.address

DHCPでインスタンスに割り当てるIPv6アドレス(security.ipv6_filtering設定時にすべてのIPv6トラフィックを制限するにはnoneと設定可能)

Key: ipv6.address
Type:

string

Managed:

no

ipv6.routes

ホスト上でNICに追加するIPv6静的ルートのカンマ区切りリスト

Key: ipv6.routes
Type:

string

Managed:

no

ipv6.routes.external

NICにルーティングしアップリンクのネットワーク(BGP)で公開するIPv6静的ルートのカンマ区切りリスト

Key: ipv6.routes.external
Type:

string

Managed:

no

limits.egress

外向きトラフィックのI/O制限値(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.egress
Type:

string

Managed:

no

limits.ingress

内向きトラフィックのI/O制限値(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.ingress
Type:

string

Managed:

no

limits.max

内向きと外向きの両方のトラフィックI/O制限値(limits.ingresslimits.egressの両方を設定するのと同じ)

Key: limits.max
Type:

string

Managed:

no

limits.priority

外向きトラフィックの優先度、カーネルでネットワークパケットに優先度をつけるためにカーネルキューイング規律によって使用される

Key: limits.priority
Type:

integer

Managed:

no

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親デバイスのMTU

Managed:

yes

name

インスタンス内でのインターフェースの名前

Key: name
Type:

string

Default:

カーネルが割り当て

Managed:

no

network

nictypeを直接設定する代わりに)デバイスをリンクする先の管理されたネットワーク

Key: network
Type:

string

Managed:

no

parent

ホストデバイスの名前(nictypeを直接設定する場合は必須)

Key: parent
Type:

string

Managed:

yes

queue.tx.length

NICの送信キューの長さ

Key: queue.tx.length
Type:

integer

Managed:

no

security.acls

適用するネットワークACLのカンマ区切りリスト

Key: security.acls
Type:

string

Managed:

no

security.acls.default.egress.action

どのACLルールにもマッチしないエグレス・トラフィックに使うアクション

Key: security.acls.default.egress.action
Type:

string

Default:

drop

Managed:

no

security.acls.default.egress.logged

どのACLルールにもマッチしないエグレス・トラフィックをログ出力するかどうか

Key: security.acls.default.egress.logged
Type:

bool

Default:

false

Managed:

no

security.acls.default.ingress.action

どのACLルールにもマッチしないイングレス・トラフィックに使うアクション

Key: security.acls.default.ingress.action
Type:

string

Default:

drop

Managed:

no

security.acls.default.ingress.logged

どのACLルールにもマッチしないイングレス・トラフィックをログ出力するかどうか

Key: security.acls.default.ingress.logged
Type:

bool

Default:

false

Managed:

no

security.ipv4_filtering

インスタンスが他のインスタンスのIPv4アドレスになりすますのを防ぐ(これを設定するとmac_filteringも有効になります)

Key: security.ipv4_filtering
Type:

bool

Default:

false

Managed:

no

security.ipv6_filtering

インスタンスが他のインスタンスのIPv6アドレスになりすますのを防ぐ(これを設定するとmac_filteringも有効になります)

Key: security.ipv6_filtering
Type:

bool

Default:

false

Managed:

no

security.mac_filtering

インスタンスが他のインスタンスのMACアドレスになりすますのを防ぐ

Key: security.mac_filtering
Type:

bool

Default:

false

Managed:

no

security.port_isolation

NICがポート隔離を有効にしたネットワーク内の他のNICと通信するのを防ぐ

Key: security.port_isolation
Type:

bool

Default:

false

Managed:

no

vlan

タグなしのトラフィックに使用するVLAN ID(デフォルトのVLANからポートを削除するにはnoneを指定)

Key: vlan
Type:

integer

Managed:

no

vlan.tagged

タグありのトラフィックに参加するVLAN IDまたはVLANの範囲のカンマ区切りリスト

Key: vlan.tagged
Type:

integer

Managed:

no

nictype: macvlan

注釈

この NIC タイプはnictypeオプションかnetworkオプションで選択できます(管理されたmacvlanネットワークの情報についてはmacvlan ネットワーク参照)。

macvlan NIC は既存の NIC をベースにしますが、MAC アドレスが異なる新しいネットワークデバイスをセットアップします。

macvlan NIC を使う場合、Incus ホストとインスタンス間の通信はできません。 ホストとインスタンスの両方がゲートウェイと通信できますが、それらが直接通信はできません。

デバイスオプション

macvlanタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VMのブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Managed:

no

gvrp

GARP VLAN Registration Protocolを使ってVLANを登録する

Key: gvrp
Type:

bool

Default:

false

Managed:

no

connected

NICがホストネットワークに接続されているかどうか(VMのみ)

Key: connected
Type:

bool

Default:

true

Required:

no

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

Managed:

no

io.bus

デバイスのバスをオーバーライド(virtiousb)(VMのみ)

Key: io.bus
Type:

string

Default:

virtio

Managed:

no

mode

Macvlanモード(bridgevepapassthruprivateのいずれか)

Key: mode
Type:

string

Default:

bridge

Managed:

no

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親デバイスのMTU

Managed:

yes

name

インスタンス内部でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

Managed:

no

network

nictypeを直接設定する代わりに)デバイスをリンクする先の管理されたネットワーク

Key: network
Type:

string

Managed:

no

parent

親ホストデバイスの名前(nictypeを直接設定する場合は必須)

Key: parent
Type:

string

Managed:

yes

vlan

アタッチ先のVLAN ID

Key: vlan
Type:

integer

Managed:

no

nictype: sriov

注釈

この NIC タイプはnictypeオプションかnetworkオプションで選択できます(管理されたsriovネットワークの情報についてはSR-IOV ネットワーク参照)。

sriov NIC は SR-IOV を有効にした物理ネットワークデバイスの仮想ファンクションをインスタンスにパススルーします。

SR-IOV を有効にしたネットワークデバイスは一組の仮想ファンクション(VF)をネットワークデバイスの単一の物理ファンクション(PF)に関連付けます。 PF は標準的な PCIe 関数です。 一方、VF はデータの移動に最適化された非常に軽量な PCIe 関数です。 PF のプロパティを変えるのを防ぐため、VF の構成機能は限定されています。

VF はシステムには通常の PCIe デバイスのように見えますので、通常の物理デバイスと全く同じようにインスタンスにパススルーできます。

VF の割り当て

sriovインターフェースタイプはparentプロパティを通してシステム上の SR-IOV を有効にしたネットワークデバイスの名前を渡されることを想定しています。 すると Incus はシステム上の任意の利用可能な VF をチェックします。

デフォルトでは、Incus は見つけた最初の未使用な VF を割り当てます。 有効になっているものが 1 つもないか、有効な VF がすべて使用中の場合、サポートされている VF の数を最大に上げて最初の未使用な VF を使用します。 すべての利用可能な VF が使用中か、カーネルまたはカードが VF の数の増加をサポートしない場合は、Incus はエラーを返します。

注釈

Incus に特定の VF を使わせたい場合、sriov NIC の代わりにphysical NIC を使用し、parentオプションを VF 名に設定してください。

デバイスオプション

sriovタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VMのブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Managed:

no

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

Managed:

no

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

カーネルが割り当て

Managed:

yes

name

インスタンス内部でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

Managed:

no

network

nictypeを直接設定する代わりに)デバイスをリンクする先の管理されたネットワーク

Key: network
Type:

string

Managed:

no

parent

ホストデバイスの名前(nictypeを直接設定する場合は必須)

Key: parent
Type:

string

Managed:

yes

pci

親のホストデバイスのPCIアドレス

Key: pci
Type:

string

Required:

no

productid

親のホストデバイスのプロダクトID

Key: productid
Type:

string

Required:

no

security.mac_filtering

インスタンスが他のインスタンスのMACアドレスになりすますのを防ぐ

Key: security.mac_filtering
Type:

bool

Default:

false

Managed:

no

security.trusted

セキュリティーを低減させるかもしれないようなNICの設定をインスタンスに許可するか

Key: security.trusted
Type:

bool

Default:

親デバイスでサポートされていればfalse

Managed:

no

vendorid

親のホストデバイスのベンダーID

Key: vendorid
Type:

string

Required:

no

vlan

アタッチ先のVLAN ID

Key: vlan
Type:

integer

Managed:

no

nictype: ovn

注釈

この NIC タイプはnetworkオプションでのみ選択できます(管理されたovnネットワークの情報についてはOVN ネットワーク参照)。

ovn NIC は既存の OVN ネットワークを使用し、それにインスタンスが接続する仮想デバイスペアを作成します。

SR-IOV ハードウェアアクセラレーション

acceleration=sriovを使用するには、Incus ホスト内の Ethernet スイッチデバイスのドライバーモデル(switchdev)をサポートする互換性のある SR-IOV 物理 NIC を持っている必要があります。 Incus は物理 NIC(PF)がswitchdevモードに設定され、OVN 統合 OVS ブリッジに接続され、1 つ以上の仮想ファンクション(VF)がアクティブになっていることを前提とします。

これを実現するには、基本的な前提条件となる以下のセットアップ手順に従ってください。

  1. PF と VF をセットアップする:

    1. PF 上でいくつかの VF をアクティベートし(以下の例ではenp9s0f0np0とし、PCI アドレスは0000:09:00.0とします)、アンバインドします。

    2. switchdevモードと PF 上のhw-tc-offloadを有効にします。

    3. VF をリバインドします。

    echo 4 > /sys/bus/pci/devices/0000:09:00.0/sriov_numvfs
    for i in $(lspci -nnn | grep "Virtual Function" | cut -d' ' -f1); do echo 0000:$i > /sys/bus/pci/drivers/mlx5_core/unbind; done
    devlink dev eswitch set pci/0000:09:00.0 mode switchdev
    ethtool -K enp9s0f0np0 hw-tc-offload on
    for i in $(lspci -nnn | grep "Virtual Function" | cut -d' ' -f1); do echo 0000:$i > /sys/bus/pci/drivers/mlx5_core/bind; done
    
  2. ハードウェアオフロードを有効にし、統合ブリッジ(通常br-intと呼ばれます)に PF NIC を追加して OVS をセットアップします:

    ovs-vsctl set open_vswitch . other_config:hw-offload=true
    systemctl restart openvswitch-switch
    ovs-vsctl add-port br-int enp9s0f0np0
    ip link set enp9s0f0np0 up
    
VDPA ハードウェアアクセラレーション

acceleration=vdpaを使用するには互換性のある VDPA 物理 NIC が必要です。 セットアップ手順は SR-IOV ハードウェアアクセラレーションと同様ですが、さらにvhost_vdpaモジュールをセットアップし、利用可能な VDPA 管理デバイスがあることを確認する必要があります:

modprobe vhost_vdpa && vdpa mgmtdev show

デバイスオプション

ovn タイプの NIC デバイスには以下のデバイスオプションがあります:

acceleration

ハードウェアオフローディングを有効にする(nonesriovvdpa

Key: acceleration
Type:

string

Default:

none

Managed:

no

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VMのブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Managed:

no

connected

NICがホストネットワークに接続されているかどうか(accelerationnoneに設定する必要あり)

Key: connected
Type:

bool

Default:

true

Required:

no

host_name

ホスト内部でのインターフェース名

Key: host_name
Type:

string

Default:

ランダムに割り当て

Managed:

no

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

Managed:

no

ipv4.address

DHCPでインスタンスに割り当てるIPv4アドレス、IP割り当てを無効にするにはnoneが使える

Key: ipv4.address
Type:

string

Managed:

no

ipv4.address.external

(典型的にはネットワークフォワードから)特定の外部アドレスを選択

Key: ipv4.address.external
Type:

string

Managed:

no

ipv4.routes

NICへルーティングするIPv4静的ルートのカンマ区切りリスト

Key: ipv4.routes
Type:

string

Managed:

no

ipv4.routes.external

NICへのルーティングとアップリンクネットワークでの公開に使用するIPv4静的ルートのカンマ区切りリスト

Key: ipv4.routes.external
Type:

string

Managed:

no

ipv6.address

DHCPでインスタンスに割り当てるIPv6アドレス、IP割り当てを無効にするにはnoneが使える

Key: ipv6.address
Type:

string

Managed:

no

ipv6.address.external

(典型的にはネットワークフォワードから)特定の外部アドレスを選択

Key: ipv6.address.external
Type:

string

Managed:

no

ipv6.routes

NICへルーティングするIPv6静的ルートのカンマ区切りリスト

Key: ipv6.routes
Type:

string

Managed:

no

ipv6.routes.external

NICへのルーティングとアップリンクネットワークでの公開に使用するIPv6静的ルートのカンマ区切りリスト

Key: ipv6.routes.external
Type:

string

Managed:

no

limits.egress

外向きトラフィックのI/O制限をbit/sで指定(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.egress
Type:

string

Managed:

no

limits.ingress

内向きトラフィックのI/O制限をbit/sで指定(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.ingress
Type:

string

Managed:

no

limits.max

内向きと外向きの両方のトラフィックのI/O制限をbit/sで指定(limits.ingresslimits.egressの両方に設定するのと同じ/limits.ingresslimits.egressとは相互排他)

Key: limits.max
Type:

string

Managed:

no

limits.priority

外向きトラフィックの優先度、ネットワークパケットの優先度を決めるカーネルキューイング規律で使用

Key: limits.priority
Type:

integer

Default:

100

Managed:

no

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親ネットワークのMTU

Managed:

yes

name

インスタンス内部でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

Managed:

no

nested

このNICをどの親NICの下にネストするか(vlanも参照)

Key: nested
Type:

string

Managed:

no

network

デバイスの接続先の管理されたネットワーク(必須)

Key: network
Type:

string

Managed:

yes

security.acls

適用するネットワークACLのカンマ区切りリスト

Key: security.acls
Type:

string

Managed:

no

security.acls.default.egress.action

どのACLルールにもマッチしないエグレス・トラフィックに使うアクション

Key: security.acls.default.egress.action
Type:

string

Default:

reject

Managed:

no

security.acls.default.egress.logged

どのACLルールにもマッチしないエグレス・トラフィックをログ出力するかどうか

Key: security.acls.default.egress.logged
Type:

bool

Default:

false

Managed:

no

security.acls.default.ingress.action

どのACLルールにもマッチしないイングレス・トラフィックに使うアクション

Key: security.acls.default.ingress.action
Type:

string

Default:

reject

Managed:

no

security.acls.default.ingress.logged

どのACLルールにもマッチしないイングレス・トラフィックをログ出力するかどうか

Key: security.acls.default.ingress.logged
Type:

bool

Default:

false

Managed:

no

security.promiscuous

OVNに未知のネットワークトラフィックをこのネットワークインタフェースに送信させる(特定のネストしたケースで必要)

Key: security.promiscuous
Type:

bool

Default:

false

Managed:

no

vlan

ネストする際に使用する VLAN ID (nestedも参照)

Key: vlan
Type:

integer

Managed:

no

注釈

ipv4.addressipv6.addressnoneを使うには、他のプロトコルも無効にする必要があることに注意してください。 現状ではOVNがIPv4かIPv6だけのIP割り当てを無効にする方法はありません。

nictype: physical

注釈

  • この NIC タイプはnictypeオプションまたはnetworkオプションで選択できます(管理されたphysicalネットワークの情報については物理ネットワーク参照)。

  • それぞれの親デバイスに対してphysical NIC は1つだけ持つことができます。

physical NIC はホストからパススルーされるそのままの物理デバイスを提供します。 対象のデバイスはホストから消失し、インスタンス内に出現します(これは各ターゲットデバイスにphysical NIC は 1 つだけ持つことができることを意味します)。

デバイスオプション

physicalタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VMのブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Managed:

no

gvrp

GARP VLAN Registration Protocolを使ってVLANを登録する

Key: gvrp
Type:

bool

Default:

false

Condition:

コンテナー

Managed:

no

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

Condition:

コンテナー

Managed:

no

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親デバイスのMTU

Condition:

コンテナー

Managed:

no

name

インスタンス内部でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

Managed:

no

network

デバイスのリンク先(nictypeを直接指定する代わりに)の管理ネットワーク

Key: network
Type:

string

Managed:

no

parent

ホストデバイスの名前(nictypeを直接指定する場合は必須)

Key: parent
Type:

string

Managed:

yes

vlan

アタッチ先のVLAN ID

Key: vlan
Type:

integer

Condition:

コンテナー

Managed:

no

vlan.tagged

タグ付きトラフィックに参加するVLAN IDあるいはVLAN範囲のカンマ区切りリスト

Key: vlan.tagged
Type:

integer

Condition:

コンテナー

Managed:

no

nictype: ipvlan

注釈

  • この NIC タイプはコンテナのみで利用でき、仮想マシンでは利用できません。

  • この NIC タイプはnictypeオプションでのみ選択できます。

  • この NIC タイプはホットプラグをサポートしません。

ipvlan NIC は既存のネットワークデバイスを元に、同じ MAC アドレスですが IP アドレスは異なるような新しいネットワークデバイスをセットアップします。

ipvlan NIC を使う場合、Incus ホストとインスタンス間の通信はできません。 ホストとインスタンスの両方がゲートウェイと通信できますが、それらが直接通信はできません。

Incus は現状 L2 と L3S モードで IPVLAN をサポートします。 このモードでは、ゲートウェイは Incus により自動的に設定されますが、コンテナが起動する前にipv4.addressipv6.addressの設定の 1 つあるいは両方を使うことにより IP アドレスを手動で指定する必要があります。

DNS

ネームサーバーは自動的には設定されないので、コンテナ内部で設定する必要があります。 このためには、以下のsysctlの設定をしてください:

  • IPv4 アドレスを使用する場合:

    net.ipv4.conf.<parent>.forwarding=1
    
  • IPv6 アドレスを使用する場合:

    net.ipv6.conf.<parent>.forwarding=1
    net.ipv6.conf.<parent>.proxy_ndp=1
    

デバイスオプション

ipvlanタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

gvrp

GARP VLAN Registration Protocolを使ってVLANを登録する

Key: gvrp
Type:

bool

Default:

false

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

ipv4.address

インスタンスに追加するIPv4静的アドレスのカンマ区切りリスト(l2モードでは、CIDR形式か/24のサブネットの単一アドレスで指定可能)

Key: ipv4.address
Type:

string

ipv4.gateway

l3sモードでは、デフォルトIPv4ゲートウェイを自動的に追加するかどうか(autononeを指定可能)。l2モードでは、ゲートウェイのIPv4アドレス

Key: ipv4.gateway
Type:

string

Default:

l3sモードでは)auto、(l2モードでは)-

ipv4.host_table

(メインのルーティングテーブルに加えて)IPv4の静的ルートを追加する先のカスタムポリシー・ルーティングテーブルID

Key: ipv4.host_table
Type:

integer

ipv6.address

インスタンスに追加するIPv6静的アドレスのカンマ区切りリスト(l2モードでは、CIDR 形式か/64のサブネットの単一アドレスで指定可能)

Key: ipv6.address
Type:

string

ipv6.gateway

l3sモードでは、デフォルトIPv6ゲートウェイを自動的に追加するかどうか(autononeを指定可能)。l2モードで、はゲートウェイのIPv6アドレス

Key: ipv6.gateway
Type:

string

Default:

l3sモードでは)auto、(l2モードでは)-

ipv6.host_table

(メインのルーティングテーブルに加えて)IPv6の静的ルートを追加する先のカスタムポリシー・ルーティングテーブルID

Key: ipv6.host_table
Type:

integer

mode

IPVLANのモード(l2l3sのいずれか)

Key: mode
Type:

string

Default:

l3s

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親デバイスのMTU

name

新しいインターフェースのMTU

Key: name
Type:

string

Default:

カーネルが割り当て

parent

ホストデバイスの名前(必須)

Key: parent
Type:

string

vlan

アタッチ先のVLAN ID

Key: vlan
Type:

integer

nictype: p2p

注釈

この NIC タイプはnictypeオプションでのみ選択できます。

p2p NIC は仮想デバイスペアを作成し、片方はインスタンス内に配置し、もう片方はホストに残します。

デバイスオプション

p2pタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priotiry

VMのブート優先度 (高いほうが先にブート)

Key: boot.priotiry
Type:

integer

connected

NICがホストネットワークに接続されているかどうか

Key: connected
Type:

bool

Default:

true

Required:

no

host_name

ホスト内でのインターフェースの名前

Key: host_name
Type:

string

Default:

ランダムに割り当て

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

io.bus

デバイスのバスをオーバーライド(virtiousb)(VMのみ)

Key: io.bus
Type:

string

Default:

virtio

ipv4.routes

ホスト上でNICに追加するIPv4静的ルートのカンマ区切りリスト

Key: ipv4.routes
Type:

string

ipv6.routes

ホスト上でNICに追加するIPv6静的ルートのカンマ区切りリスト

Key: ipv6.routes
Type:

string

limits.egress

外向きトラフィックのI/O制限値(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.egress
Type:

string

limits.ingress

内向きトラフィックのI/O制限値(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.ingress
Type:

string

limits.max

内向きと外向きの両方のトラフィックI/O制限値(limits.ingresslimits.egressの両方を設定するのと同じ)

Key: limits.max
Type:

string

limits.priority

外向きトラフィックの優先度、カーネルでネットワークパケットに優先度をつけるためにカーネルキューイング規律によって使用される

Key: limits.priority
Type:

integer

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

カーネルが割り当て

name

インスタンス内部でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

queue.tx.length

NICの送信キューの長さ

Key: queue.tx.length
Type:

integer

nictype: routed

注釈

この NIC タイプはnictypeオプションでのみ選択できます。

routed NIC タイプはホストをインスタンスに接続する仮想デバイスペアを作成し、インスタンスが指定された親インターフェースのネットワークに参加できるように、静的ルートとプロキシ ARP/NDP エントリをセットアップします。 コンテナでは仮想イーサネットデバイスペアを使用し、VM では TAP デバイスを使用します。

この NIC タイプは運用上は IPVLAN に似ていて、ブリッジを設定することなくホストの MAC アドレスを共用して、インスタンスが外部ネットワークに参加できるようにします。 しかし、カーネルに IPVLAN サポートを必要としないことと、ホストとインスタンスが互いに通信できることがipvlanとは異なります。

この NIC タイプはnetfilterのルールを尊重し、ホストのルーティングテーブルを使ってパケットをルーティングしますので、ホストが複数のネットワークに接続している場合に役立ちます。

IP アドレス、ゲートウェイ、ルーティング

インスタンスが起動する前に IP アドレスを(ipv4.addressipv6.addressの設定のいずれかあるいは両方を使って)手動で指定する必要があります。

コンテナでは、NIC はホスト上に下記のリンクローカルゲートウェイ IP アドレスを設定し、それらをコンテナの NIC インターフェースのデフォルトゲートウェイに設定します:

169.254.0.1
fe80::1

VM では、ゲートウェイは手動かcloud-initハウツーガイド参照)のような仕組みを使って設定する必要があります。

注釈

お使いのコンテナイメージがインタフェースに対して DHCP を使うように設定されている場合、上記の自動的に追加される設定は削除される可能性が高いです。 この場合、IP アドレスとゲートウェイを手動かcloud-initのような仕組みを使って設定する必要があります。

この NIC タイプはインスタンスの IP アドレスすべてをインスタンスのvethインターフェースに向ける静的ルートをホスト上に設定します。

複数の IP アドレス

それぞれの NIC デバイスに複数の IP アドレスを追加できます。

しかし、代わりに複数のrouted NIC インターフェースを使うほうが望ましいかもしれません。 この場合、ipv4.gatewayipv6.gatewayの値をnoneに設定し、後続のインターフェースがデフォルトゲートウェイの衝突を避けるようにします。 さらに、これらの後続のインターフェースにipv4.host_addressipv6.host_addressを使って異なるホスト側のアドレスを指定することを検討してください。

親のインターフェース

この NIC はparentのネットワークインターフェースのセットがあってもなくても利用できます。

parentネットワークインターフェースのセットがある場合、インスタンスの IP のプロキシ ARP/NDP エントリが親のインターフェースに追加され、インスタンスが親のインターフェースのネットワークにレイヤ 2 で参加できるようにします。

これを有効にするには以下のネットワーク設定を sysctl でホストに適用する必要があります:

  • IPv4 アドレスを使用する場合:

    net.ipv4.conf.<parent>.forwarding=1
    
  • IPv6 アドレスを使用する場合:

    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.<parent>.forwarding=1
    net.ipv6.conf.all.proxy_ndp=1
    net.ipv6.conf.<parent>.proxy_ndp=1
    

デバイスオプション

routedタイプの NIC デバイスには以下のデバイスオプションがあります:

attached

NICが差し込まれているかどうか

Key: attached
Type:

bool

Default:

true

Required:

no

connected

NICがホストネットワークに接続されているかどうか

Key: connected
Type:

bool

Default:

true

Required:

no

gvrp

GARP VLAN Registration Protocolを使ってVLANを登録する

Key: gvrp
Type:

bool

Default:

false

host_name

ホスト内でのインターフェース名

Key: host_name
Type:

string

Default:

ランダムに割り当て

hwaddr

新しいインターフェースのMACアドレス

Key: hwaddr
Type:

string

Default:

ランダムに割り当て

io.bus

デバイスのバスをオーバーライド(virtiousb)(VMのみ)

Key: io.bus
Type:

string

Default:

virtio

ipv4.address

インスタンスに追加するIPv4静的アドレスのカンマ区切りリスト

Key: ipv4.address
Type:

string

ipv4.gateway

自動的にIPv4デフォルトゲートウェイを追加するかどうか(autononeを指定可能)

Key: ipv4.gateway
Type:

string

Default:

auto

ipv4.host_address

ホスト側のvethインターフェースに追加するIPv4アドレス

Key: ipv4.host_address
Type:

string

Default:

169.254.0.1

ipv4.host_table

Deprecated: 代わりにipv4.host_tablesを使ってください

Key: ipv4.host_table
Type:

integer

(メインのルーティングテーブルに加えて)IPv4の静的ルートを追加する先のカスタムポリシー・ルーティングテーブルID :type: "integer"

ipv4.host_tables

IPv4静的ルートを追加する先のルーティングテーブルIDのカンマ区切りリスト

Key: ipv4.host_tables
Type:

string

Default:

254

ipv4.neighbor_probe

IPアドレスが利用可能か知るために親のネットワークを調べるかどうか

Key: ipv4.neighbor_probe
Type:

bool

Default:

true

ipv4.routes

ホスト上でNICに追加するIPv4静的ルートのカンマ区切りリスト(L2 ARP/NDPプロキシを除く)

Key: ipv4.routes
Type:

string

ipv6.address

インスタンスに追加するIPv6静的アドレスのカンマ区切りリスト

Key: ipv6.address
Type:

string

ipv6.gateway

自動的にIPv6のデフォルトゲートウェイを追加するかどうか(autononeを指定可能)

Key: ipv6.gateway
Type:

string

Default:

auto

ipv6.host_address

ホスト側のvethインターフェースに追加するIPv6アドレス

Key: ipv6.host_address
Type:

string

Default:

fe80::1

ipv6.host_table

Deprecated: 代わりにipv6.host_tablesを使ってください

Key: ipv6.host_table
Type:

integer

(メインのルーティングテーブルに加えて)IPv6の静的ルートを追加する先のカスタムポリシー・ルーティングテーブルID :type: "integer"

ipv6.host_tables

IPv6静的ルートを追加する先のルーティングテーブルIDのカンマ区切りリスト

Key: ipv6.host_tables
Type:

string

Default:

254

ipv6.neighbor_probe

IPアドレスが利用可能か知るために親のネットワークを調べるかどうか

Key: ipv6.neighbor_probe
Type:

bool

Default:

true

ipv6.routes

ホスト上でNICに追加するIPv6静的ルートのカンマ区切りリスト(L2 ARP/NDPプロキシを除く)

Key: ipv6.routes
Type:

string

limits.egress

外向きトラフィックに対するbit/sでのI/O制限値(さまざまな単位をサポート、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.egress
Type:

string

limits.ingress

内向きトラフィックに対するbit/sでのI/O制限値(さまざまな単位をサポート、ストレージ、メモリとネットワーク制限の単位参照)

Key: limits.ingress
Type:

string

limits.max

内向きと外向き両方のトラフィックのI/O制限値(limits.ingresslimits.egressの両方を設定するのと同じ)

Key: limits.max
Type:

string

limits.priority

外向きトラフィックの優先度、カーネルでネットワークパケットに優先度をつけるためにカーネルキューイング規律によって使用される

Key: limits.priority
Type:

integer

mtu

新しいインターフェースのMaximum Transmit Unit (MTU)

Key: mtu
Type:

integer

Default:

親のMTU

name

インスタンス内でのインターフェース名

Key: name
Type:

string

Default:

カーネルが割り当て

parent

インスタンスが参加するホストデバイス名

Key: parent
Type:

string

queue.tx.length

NICの送信キューの長さ

Key: queue.tx.length
Type:

integer

vlan

アタッチ先の VLAN ID

Key: vlan
Type:

integer

vrf

ホスト側のインターフェースが接続されており、ルートが作成されるホスト上のVRF

Key: vrf
Type:

string

bridgemacvlanipvlanを使った物理ネットワークへの接続

bridgedmacvlanipvlanインターフェースタイプのいずれも、既存の物理ネットワークへ接続するために使用できます。

macvlanは、物理 NIC を効率的に分岐できます。つまり、物理 NIC からインスタンスで使える第 2 のインターフェースを取得できます。 この方法はブリッジデバイスと仮想イーサネットデバイスペアの作成を不要にしますし、通常はブリッジよりも良いパフォーマンスが得られます。

macvlanの欠点は、macvlanはインスタンス自身と外部との間で通信はできますが、親デバイスとは通信できないことです。 つまりインスタンスとホストが通信する必要がある場合はmacvlanは使えません。

そのような場合は、bridgeデバイスを選ぶのが良いでしょう。 macvlanでは使えない MAC フィルタリングと I/O 制限も使えます。

ipvlanmacvlanと同様ですが、フォークされたデバイスが静的に割り当てられた IP アドレスを持ち、ネットワーク上の親の MAC アドレスを受け継ぐ点が異なります。