14.3. 网络配置


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

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

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

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

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

    • 使用 设备列表格式中指定的配置 来匹配 MAC 地址或其他地址。
    • 要配置网络,您可以使用 nmcli connection 添加 与您对引导系统执行的操作相似。但是,在构建期间,您必须使用 命令和 explicit- 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 man page 中定义。您可以使用不同的方法在第一次引导时应用这些内核参数。使用 bootc install 时,您也可以使用每个机器内核参数设置。
  • 使用 NetworkManager 密钥文件: nmclinm-initrd-generator

使用 nmcli生成 NetworkManager 密钥文件

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 Keyfiles

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

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

    $ 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。您可以使用生成的输出,添加更多设置或修改现有的设置,然后将这些文件提交到容器镜像中。

配置静态 IP

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

    template:

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

Example:

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 系统和新的默认配置,适用于任何特定于机器的配置。

keyfiles 必须具有 600 个 root-only 访问权限,否则 NetworkManager 忽略它们。

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

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

  • 禁用以太网设备的 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

© 2025 Red Hat