15.3. ネットワーク設定
デフォルトイメージには NetworkManager 動的ネットワーク制御および設定システムが含まれており、bootc はケーブルが接続されているすべてのインターフェイスで DHCP を使用して接続を試みます。/run/NetworkManager/conf.d ディレクトリーをセットアップすることで、一時的なネットワーク設定を適用できます。
ただし、静的アドレス指定や、VLAN、ボンディング、ブリッジ、チームなどのより複雑なネットワークを使用する必要がある場合は、別の方法を使用できます。ネットワークを設定する方法に関係なく、NetworkManager の設定は NetworkManager キーファイルの形式を使用します。
- ホストネットワーク設定オプション
- 複雑なネットワーク設定では、多くの場合、マシンごとの状態も必要です。たとえば、静的 IP アドレスが含まれたマシン固有のコンテナーイメージを生成できます。ホストの MAC アドレスを検査して、イメージ内からネットワーク設定を生成するコードを含めることもできます。
- 利用可能なネットワーク設定オプション
静的 IP を設定するために使用できるオプションと、設定方法は次のとおりです。
Containerfile を使用する: 静的 IP を持つコンテナーイメージを作成するか、MAC アドレスに基づいてイメージ内からネットワーク設定を生成するコードを含めます。
- MAC アドレスまたはその他のアドレスをマッチさせるには、Device List Format で指定されている設定を使用します。
-
ネットワークを設定するには、起動済みのシステムで行うのと同様に、
nmcli connection addを使用できます。ただし、ビルド時には、明示的に--offline引数と組み合わせてコマンドを使用する必要があります。詳細は、nmcli を使用したイーサネット接続の設定 を参照してください。 ContainerFile 内の
nmcliコマンドの前に、必ず次のコマンドを追加してください。RUN nmcli --offline connection add
-
Anaconda を使用する場合: Anaconda キックスタートを使用して、ベアメタルインストール用に Wi-Fi を含むネットワークを設定できます。設定はデフォルトで
/etc/NetworkManager/system-connections/に保存され、基本的にマシン固有の状態として扱われます。 -
カーネル引数を使用する: 最初の起動時にカーネルパラメーターを追加して、ネットワーク設定を定義します。マシンの最初の起動時に、ネットワーク設定を定義するカーネル引数を入力します。カーネル引数のほとんどは、
dracut.cmdlineの man ページで定義されています。さまざまな方法を使用して、最初の起動時にこれらのカーネル引数を適用できます。bootc installを使用する場合、--kargを使用してマシンごとにカーネル引数を設定することもできます。 -
NetworkManager キーファイルを使用する:
nmcliまたはnm-initrd-generator
nmcli を使用して NetworkManager キーファイルを生成する
nmcli NetworkManager コマンドラインツールは、NetworkManager デーモンと通信せず、キーファイルの内容を標準出力に書き込むだけのオフラインモードを提供します。
作成する接続プロファイルごとに
nmcliツールを実行します。$ nmcli --offline connection add \ type ethernet ifname enp1s0 \ ipv4.method manual ipv4.addresses 192.0.0.1/24 \ ipv6.method disabled [connection] id=ethernet-enp1s0 uuid=ff242096-f803-425f-9a77-4c3ec92686bd type=ethernet interface-name=enp1s0 [ethernet] [ipv4] address1=192.0.0.1/24 method=manual [ipv6] addr-gen-mode=default method=disabled [proxy]
nmcli を使用して指定できるプロパティーのリストについては、設定の man ページを参照してください。Bash の自動補完が利用可能です。
nm-initrd-generator を使用して NetworkManager キーファイルを生成する
NetworkManager には、dracut カーネル引数構文からキーファイルを生成できる nm-initrd-generator ツールが含まれています。このツールを使用すると、カーネル引数からキーファイルに変換したり、少量の入力でキーファイルを素早く生成して、より詳細な設定を変更したりすることができます。
nm-initrd-generatorを使用してボンディングのキーファイルを生成します。$ podman run --rm -ti quay.io/<namespace>/<image>:<tag> /usr/libexec/nm-initrd-generator -s -- "ip=bond0:dhcp" "bond=bond0:ens2,ens3:mode=active-backup,miimon=100" "nameserver=8.8.8.8" * Connection 'bond0' * [connection] id=bond0 uuid=643c17b5-b364-4137-b273-33f450a45476 type=bond interface-name=bond0 multi-connect=1 permissions= [ethernet] mac-address-blacklist= [bond] miimon=100 mode=active-backup [ipv4] dns=8.8.8.8; dns-search= may-fail=false method=auto [ipv6] addr-gen-mode=eui64 dns-search= method=auto [proxy] * Connection 'ens3' * [connection] id=ens3 uuid=b42cc917-fd87-47df-9ac2-34622ecddd8c type=ethernet interface-name=ens3 master=643c17b5-b364-4137-b273-33f450a45476 multi-connect=1 permissions= slave-type=bond [ethernet] mac-address-blacklist= * Connection 'ens2' * [connection] id=ens2 uuid=e111bb4e-3ee3-4612-afc2-1d2dfff97671 type=ethernet interface-name=ens2 master=643c17b5-b364-4137-b273-33f450a45476 multi-connect=1 permissions= slave-type=bond [ethernet] mac-address-blacklist=
このコマンドは、各インターフェイスに対して、bond0、ens3、ens2 の 3 つのキーファイルを生成します。生成された出力を使用して、さらに設定を追加したり、既存の設定を変更したりして、ファイルをコンテナーイメージにコミットできます。
静的 IP の設定
次の
dracutカーネル引数を使用できます。テンプレート:
ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
以下に例を示します。
ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:ens2:none:8.8.8.8
コンテナーイメージに埋め込まれた設定を書き込む
この形式は不変のイメージ状態の一部であるため、コンテナーイメージに埋め込まれた NetworkManager 設定を /usr/lib/NetworkManager/system-connections/ に保存します。コンテナーイメージの一部として /etc/NetworkManager/system-connections/ に設定を書き込むこともできます。デフォルトの OSTree 3 方向マージ (つまり、古いデフォルト設定、アクティブな /etc システム、および新しいデフォルト設定の使用) は、マシン固有の設定に適用されます。
キーファイルには 600 の root 専用アクセス権限が必要です。そうでない場合、NetworkManager はこのファイルを無視します。
イーサネットデバイスの自動設定を無効にする
デフォルトでは、NetworkManager はケーブルが接続されているすべてのインターフェイスで DHCP または SLAAC アドレスを使用して自動設定を試みます。一部のネットワーク環境では、これは望ましくない場合があります。そのためには、/usr/lib/NetworkManager/conf.d/noauto.conf などの設定ファイルを追加して、NetworkManager の動作を変更することができます。
Ethernet デバイスの
NetworkManager自動設定を無効にする[main] # Do not do automatic (DHCP or SLAAC) configuration on ethernet devices # with no other matching connections. no-auto-default=*