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
RUN nmcli --offline connection addCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
通过使用 Anaconda:您可以使用 Anaconda Kickstart 为裸机安装配置网络,包括 Wi-Fi。配置默认存储在
/etc/NetworkManager/system-connections/文件中,本质上是每台机器的状态。 -
通过使用内核参数:在第一次引导时添加内核参数以定义网络配置。在机器第一次引导时,输入定义网络配置的内核参数。内核参数大多在
dracut.cmdline手册页中定义。您可以使用不同的方法在第一次引导时应用这些内核参数。使用bootc install时,您也可以使用--karg设置每台机器内核参数设置。 -
使用 NetworkManager 密钥文件:
nmcli或nm-initrd-generator
使用 nmcli 生成 NetworkManager keyfile
nmcli NetworkManager 命令行工具提供一个离线模式,该模式不与 NetworkManager 守护进程通信,只是将 keyfile 内容写入标准输出。
为您要创建的每个连接配置文件运行
nmcli工具:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关使用 nmcli 指定的属性的列表,请参阅设置手册页。Bash 自动完成可用。
使用 nm-initrd-generator 生成 NetworkManager Keyfile
NetworkManager 包含 nm-initrd-generator 工具,它可以从 dracut 内核参数语法生成 keyfile。您可以使用工具从内核参数转换为 keyfile,或者给出少量输入就可快速生成一些 keyfile,然后修改一些更详细的设置。
使用
nm-initrd-generator为绑定生成 keyfile:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
命令为每个接口:bond0、ens3 和 ens2 生成三个 keyfile 。您可以使用生成的输出,添加更多设置或修改现有设置,然后将这些文件提交到容器镜像中。
配置静态 IP
您可以使用以下
dracut内核参数:模板:
ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
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
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 三路合并,即使用旧的默认配置、活跃的 /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=*
[main] # Do not do automatic (DHCP or SLAAC) configuration on ethernet devices # with no other matching connections. no-auto-default=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow