ip-tools 与旧的 ifconfig

ip-tools 与旧的 ifconfig

当我在网络脚本中将 dhcp 更改为 static 然后重新启动服务时systemctl restart NetworkManager。静态 IP 设置应该更新,但没有更新。所以我尝试

ip link set dev enp0s3 down进而up

没有更新ip

然后我尝试用ifdown enp0s3thenifup enp0s3

有效

为什么它与 一起工作ifup

答案1

前言:ipifconfig是实用程序控制监控联网。它们通常不用于读取/写入持久配置文件 - 这就是为什么ip link不起作用。持久配置管理必须通过其他方式来完成,例如NetworkManager.

(这可能是不用说的,但是,作为旁注,iproute2,它提供了ip已经/正在被采用被许多发行版作为 的替代品net-tools,它提供了ifconfig.出于兼容性原因,它们通常都作为发行版中的默认包提供)。

为什么ifup有效和systemctl restart NetworkManager无效:

在 CentOS 上(我已检查过 CentOS 7),ifupifdown由 提供;它们对由同一包提供的initscripts中的脚本进行操作。因此,能够应用您在那里所做的更改并不奇怪。/etc/sysconfig/network-scripts/ifup

NetworkManager - CentOS 从上游继承的默认网络服务提供程序 - 在 Red Hat 和 Fedora 上配置为使用插件ifcfg-rh从 读取/写入网络配置/etc/sysconfig/network-scripts/ifcfg-*。但它不监控那些文件。

man nm-settings-ifcfg-rh警告说

用户可以手动创建或修改 ifcfg-rh 连接文件,即使这不是管理配置文件的推荐方法。但是,如果他们选择这样做,则必须将其更改通知 NetworkManager(请参阅 nm-settings(5) 中的 Monitor-connection-file 和 nmcli con(重新)加载)。

因此,systemctl reload NetworkManager不应从 CentOS 上的文件重新加载网络连接的配置。为此,您可以调用nmcli connection reload或更改NetworkManager配置,如下所示man NetworkManager.conf

Monitor-connection-files
配置的设置插件是否应设置文件监视器并在 NetworkManager 运行时立即获取对连接文件所做的更改。默认情况下禁用此功能; NetworkManager 仅在启动时以及通过 ReloadConnections D-Bus 调用显式请求时读取连接文件。 [...]

答案2

ip直接改变硬件的状态,就像ifconfig.ifconfig和之间的唯一区别ipip具有不同的语法,并且ifconfig不支持某些功能。

ifup另一方面ifdown,运行大量脚本,读取/etc/network/interfaces文件和其他配置文件,然后执行操作。这包括添加您可能放入的静态 IP 设置/etc/network/interfaces

原则上,网络管理器也应该选择这些,但我不运行网络管理器(大多数时候它妨碍我),所以我不能告诉你为什么它不起作用。

因此:如果您希望考虑网络配置文件,请使用ifup/ifdown和网络管理器。如果您想直接更改界面设置,请使用ipifconfig

相关内容