我正在阅读有关 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
那么,是不是只有ifup
和ifdown
被弃用,而配置文件仍然保留?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-scripts
RPM 文件中包含的任何内容或依赖于该 RPM 功能的内容现已被弃用。特别是,如果您以前使用脚本来/sbin/ifup-local
设置一些高级路由或其他专门的网络配置,那么现在是时候找到一种新的方法来做到这一点了。
请注意,当 NetworkManager 被引入 RHEL 时,它包含并且仍然包含一个使用旧配置文件位置的配置后端,但具有新的 NetworkManager 基础架构和旧配置脚本语法的扩展版本。所以/etc/sysconfig/network-scripts/ifcfg-*
文件仍然会在那里并使用相同的语法,尽管它们现在将由 NetworkManager 解析并且不作为源脚本执行。
已弃用的network-scripts
包主要包含:
- SysVinit 风格的服务脚本
/etc/init.d/network
- 您曾经在目录中看到的
ifup*
、ifdown*
和脚本init.ipv6-global
network-functions*
/etc/sysconfig/network-scripts/
/usr/sbin/ifup
和的经典版本(这将覆盖默认情况下存在的/usr/sbin/ifdown
兼容性包装器)nmcli
- 命令
/usr/sbin/usernetctl
- 以及相关的文档和示例文件
因此,当您不使用已弃用的network-scripts
RPM 时,您现在期望该/etc/sysconfig/network-scripts/
目录仅有的包含ifcfg-*
网络接口的文件,可能还route-*
包含自定义路由的文件,但根本不包含其他文件。如果您需要该usernetctl
命令,它属于已弃用的功能,您应该开始使用适当的nmcli
子命令作为其替代。
ifup
并且ifdown
仍然可用,但现在通过 完成它们的工作NetworkManager
,除非您安装已弃用的network-scripts
RPM。
答案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),但有些事情超出了我们的控制范围。
对于大多数情况,这是一种前进的方法:
- 配置 NetworkManager 以读取“密钥文件”
- 以密钥文件格式创建/编辑 NetworkManagers 版本的网络脚本
- 确保 NM 密钥文件由 root 拥有,且权限为 600
- 重新启动或
nmcli con reload
(systemctl restart NetworkManager
有效,但据说不能保证)。
配置 NetworkManager 以读取“密钥文件”
/etc/NetworkManager/NetworkManager.conf
或按任意顺序阅读
/etc/NetworkManager/conf.d/50-whatevername.conf
在“main”部分下设置/添加“keyfile”到插件:
[main] plugins=keyfile
请注意,如果您进行远程管理并且您的连接基于较旧的网络脚本,那么您可能希望确保两个都插件已加载:
[main] plugins=keyfile,ifcfg-rh
创建/编辑 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]
确保 NM 密钥文件由 root 拥有,且权限为 600
chown root.root ${nm-whatever.conf} && chmod 600 ${nm-whatever.conf}
只需重新启动即可。
systemctl restart NetworkManager
通常有效,但他们声明它并不意味着重新启动,而是使用nmcli
如下工具:nmcli con reload