15.3. 网络配置


默认镜像包括 NetworkManager 动态网络控制和配置系统,bootc 尝试使用插了网线的每个接口上的 DHCP 进行连接。您可以通过设置 /run/NetworkManager/conf.d 目录来应用临时网络配置。

但是,如果您需要使用静态寻址或更复杂的网络,如 VLAN、绑定、网桥、team 等,您可以使用不同的方法。无论您选择哪种配置网络的方式,其结果都是对 NetworkManager 的配置,其采用 NetworkManager keyfiles 格式。

主机网络配置选项
复杂的网络配置通常需要每台机器的状态。您可以生成包含静态 IP 寻址的特定于机器的容器镜像。您还可以包含通过检查主机的 MAC 地址,从镜像内部生成网络配置的代码。
可用的网络配置选项

以下是配置静态 IP 的可用选项,以及如何完成配置:

  • 使用 Containerfile :创建带有静态 IP 的容器镜像,或者包含根据 MAC 地址,从镜像内部生成网络配置的代码。

    • 使用 设备列表格式 中指定的配置来匹配 MAC 地址或其他地址。
    • 要配置网络,您可以使用使用 nmcli connection add ,类似于对引导系统所做的操作。但是,在构建期间,您必须将命令与明确的 --offline 参数一起使用。如需了解更多详细信息,请参阅 使用 nmcli 配置以太网连接
    • 确保在 ContainerFile 中的 nmcli 命令之前添加以下命令:

      RUN nmcli --offline connection add
      Copy to Clipboard Toggle word wrap
  • 通过使用 Anaconda:您可以使用 Anaconda Kickstart 为裸机安装配置网络,包括 Wi-Fi。配置默认存储在 /etc/NetworkManager/system-connections/ 文件中,本质上是每台机器的状态。
  • 通过使用内核参数:在第一次引导时添加内核参数以定义网络配置。在机器第一次引导时,输入定义网络配置的内核参数。内核参数大多在 dracut.cmdline 手册页中定义。您可以使用不同的方法在第一次引导时应用这些内核参数。使用 bootc install 时,您也可以使用 --karg 设置每台机器内核参数设置。
  • 使用 NetworkManager 密钥文件:nmclinm-initrd-generator

使用 nmcli 生成 NetworkManager keyfile

nmcli NetworkManager 命令行工具提供一个离线模式,该模式不与 NetworkManager 守护进程通信,只是将 keyfile 内容写入标准输出。

  • 为您要创建的每个连接配置文件运行 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]
    Copy to Clipboard Toggle word wrap

有关使用 nmcli 指定的属性的列表,请参阅设置手册页。Bash 自动完成可用。

使用 nm-initrd-generator 生成 NetworkManager Keyfile

NetworkManager 包含 nm-initrd-generator 工具,它可以从 dracut 内核参数语法生成 keyfile。您可以使用工具从内核参数转换为 keyfile,或者给出少量输入就可快速生成一些 keyfile,然后修改一些更详细的设置。

  • 使用 nm-initrd-generator 为绑定生成 keyfile:

    $ 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=
    Copy to Clipboard Toggle word wrap

命令为每个接口:bond0ens3ens2 生成三个 keyfile 。您可以使用生成的输出,添加更多设置或修改现有设置,然后将这些文件提交到容器镜像中。

配置静态 IP

  • 您可以使用以下 dracut 内核参数:

    模板:

ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
Copy to Clipboard Toggle word wrap

示例:

ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:ens2:none:8.8.8.8
Copy to Clipboard Toggle word wrap

编写嵌入到容器镜像中的配置

将嵌入在容器镜像中的 NetworkManager 配置存在 /usr/lib/NetworkManager/system-connections/ 中,因为这种形式是不可变镜像状态的一部分。您还可以将配置写入 /etc/NetworkManager/system-connections/ ,来作为容器镜像的一部分。默认的 OSTree 三路合并,即使用旧的默认配置、活跃的 /etc 系统和新的默认配置,适用于任何特定于机器的配置。

keyfile 必须具有 600 仅 root 访问权限,否则 NetworkManager 会忽略它们。

禁用以太网设备的自动配置

默认情况下,NetworkManager 会尝试使用插了网线的每个接口上的 DHCP 或 SLAAC 地址进行自动配置。在一些网络环境中,这可能并不是必需的。为此,可以通过添加配置文件,如 /usr/lib/NetworkManager/conf.d/noauto.conf 来更改 NetworkManager 行为。

  • 禁用以太网设备的 NetworkManager 自动配置

    [main]
    # Do not do automatic (DHCP or SLAAC) configuration on ethernet devices
    # with no other matching connections.
    no-auto-default=*
    Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部