RHEL 8 已弃用的网络脚本

RHEL 8 已弃用的网络脚本

我正在阅读有关 RHEL 8 的内容,这是已发表声明:

网络脚本在 Red Hat Enterprise Linux 8 中已弃用,默认情况下不再提供。基本安装提供了新版本的 ifup 和 ifdown 脚本,它们通过 nmcli 工具调用 NetworkManager 服务。

好的,所以对我来说,这意味着/etc/sysconfig/network-scripts将不再使用它,尽管从我的阅读中不清楚应该替换什么ifcfg-eth0(或类似的)。

但后来我读到此页面有关静态 IP 地址,其中断言:

在 RHEL 8 上配置静态 IP 地址的过程: 创建一个名为/etc/sysconfig/network-scripts/ifcfg-eth0如下的文件:

DEVICE=eth0  
BOOTPROTO=none  
ONBOOT=yes  
PREFIX=24  
IPADDR=192.168.2.203  

在 RHEL 8 上重新启动网络服务:systemctl restart NetworkManager或者sudo nmcli connection reload

那么,是不是只有ifupifdown被弃用,而配置文件仍然保留?scripts和之间有区别吗configuration files,即使它们看起来集中在一个章节中?第十二章 RHEL 固定网络脚本作为:

第 12 章网络脚本
...网络接口的配置文件以及激活和停用它们的脚本位于该/etc/sysconfig/network-scripts/目录中。

那么,什么构成了被弃用的内容呢?它似乎不是其中的脚本,/etc/sysconfig/network-scripts因为这显然仍然是配置静态 IP 的合适方法。

我还没有运行 RHEL 8 机器,所以我希望有人能够阐明应该避免什么。

答案1

从您的第一个链接:

/sbin/ifup-local请注意, 、ifdown-pre-local和脚本中的自定义命令ifdown-local不会被执行。

如果需要任何这些脚本,仍然可以使用以下命令在系统中安装已弃用的网络脚本:

~]# yum install network-scripts

因此,RHEL 8 network-scriptsRPM 文件中包含的任何内容或依赖于该 RPM 功能的内容现已被弃用。特别是,如果您以前使用脚本来/sbin/ifup-local设置一些高级路由或其他专门的网络配置,那么现在是时候找到一种新的方法来做到这一点了。

请注意,当 NetworkManager 被引入 RHEL 时,它包含并且仍然包含一个使用旧配置文件位置的配置后端,但具有新的 NetworkManager 基础架构和旧配置脚本语法的扩展版本。所以/etc/sysconfig/network-scripts/ifcfg-*文件仍然会在那里并使用相同的语法,尽管它们现在将由 NetworkManager 解析并且不作为源脚本执行。

已弃用的network-scripts包主要包含:

  • SysVinit 风格的服务脚本/etc/init.d/network
  • 您曾经在目录中看到的ifup*ifdown*和脚本init.ipv6-globalnetwork-functions*/etc/sysconfig/network-scripts/
  • /usr/sbin/ifup和的经典版本(这将覆盖默认情况下存在的/usr/sbin/ifdown兼容性包装器)nmcli
  • 命令/usr/sbin/usernetctl
  • 以及相关的文档和示例文件

因此,当您不使用已弃用的network-scriptsRPM 时,您现在期望该/etc/sysconfig/network-scripts/目录仅有的包含ifcfg-*网络接口的文件,可能还route-*包含自定义路由的文件,但根本不包含其他文件。如果您需要该usernetctl命令,它属于已弃用的功能,您应该开始使用适当的nmcli子命令作为其替代。

ifup并且ifdown仍然可用,但现在通过 完成它们的工作NetworkManager,除非您安装已弃用的network-scriptsRPM。

答案2

当我们在执行 RHEL 7 的 PXE 安装时使用 NetworkManager 使用 kickstart 配置网络时,我们在我们的环境中发现了一些不稳定的情况,这就是我们必须手动配置网络接口的原因;我们还决定在配置中禁用 NetworkManager,但现在有了这个消息,我们正在转向 NetworkManager。

截至目前,RHEL 仍然支持使用网络脚本 rpm 而不是 initscripts 来使用传统行为。

https://access.redhat.com/solutions/3777201

如果您仍然希望在配置文件中使用 NM_CONTROLLED=no 并禁用 NM,下面的文章将更详细地介绍该主题。

https://www.golinuxcloud.com/unit-network-service-not-found-rhel-8-linux/

但看起来明智的选择是慢慢适应 NetworkManager,并跟进红帽对任何 NM 问题的支持,因为我们不知道红帽何时开始完全将 NM 强加给用户。

答案3

RHEL 8 仍然支持网络脚本,并且默认情况下在最小配置中可用。

查看配置和管理网络章节在 RHEL 文档中。

另请参阅这些教程:如何在 RHEL 8 上配置静态 IP 地址如何在 RHEL 8 和 Centos 8 上配置静态 IP 地址

答案4

仍然有非常充分的理由继续支持已弃用的网络脚本(例如,RHEL8 不支持环回接口上的别名任播 IP),但有些事情超出了我们的控制范围。

对于大多数情况,这是一种前进的方法:

  1. 配置 NetworkManager 以读取“密钥文件”
  2. 以密钥文件格式创建/编辑 NetworkManagers 版本的网络脚本
  3. 确保 NM 密钥文件由 root 拥有,且权限为 600
  4. 重新启动或nmcli con reloadsystemctl restart NetworkManager有效,但据说不能保证)。

  1. 配置 NetworkManager 以读取“密钥文件”

    /etc/NetworkManager/NetworkManager.conf
    

    或按任意顺序阅读

    /etc/NetworkManager/conf.d/50-whatevername.conf
    

    在“main”部分下设置/添加“keyfile”到插件:

    [main]
    plugins=keyfile
    

    请注意,如果您进行远程管理并且您的连接基于较旧的网络脚本,那么您可能希望确保两个都插件已加载:

    [main] 
    plugins=keyfile,ifcfg-rh
    
  2. 创建/编辑 NetworkManager 密钥文件(文件名似乎并不重要):

    现在,/etc/NetworkManager/system-connections您可以以新的(但类似于旧的 MS Windows)“密钥文件”格式编辑 NetworkManager 网络脚本文件。

    获取接口的实际 MAC 地址,并忽略 uuid(它将自动生成)或使用 cli 工具自行生成uuidgen

    密钥文件示例:

    # Translate REF - https://people.freedesktop.org/~lkundrak/nm-docs/nm-settings-ifcfg-rh.html
    [connection]
    type=ethernet
    uuid=969fc159-a48f-4930-8de1-e3e5b952769
    interface-name=ens34
    id=ens34
    autoconnect=true
    
    [ethernet]
    #cloned-mac-address=da:d0:ed:00:06:86
    mac-address=00:50:00:00:00:02
    
    [dummy]
    #cloned-mac-address=da:d0:ed:00:06:86
    #mac-address=da:d0:ed:00:06:86
    
    [ipv4]
    method=manual
    address=10.1.1.2/20
    gateway=10.1.0.1/20
    #never-default=true
    #dns=8.8.8.8;8.8.4.4
    
    #[ipv6]
    #method=manual
    #address=2001:db8::2/64
    #gateway=2001:db8::1
    
    [proxy]
    
  3. 确保 NM 密钥文件由 root 拥有,且权限为 600

    chown root.root ${nm-whatever.conf} && chmod 600 ${nm-whatever.conf}
    
  4. 只需重新启动即可。systemctl restart NetworkManager通常有效,但他们声明它并不意味着重新启动,而是使用nmcli如下工具:

    nmcli con reload
    

相关内容