如何在没有网络管理器的情况下禁用网络接口在启动时加载?

如何在没有网络管理器的情况下禁用网络接口在启动时加载?

我使用的机器有 4 个网络接口,当前仅使用其中一个(另外 3 个根本未插入)。目前,当机器重新启动时,尝试启动接口 2-4 会延迟几分钟。这是一个相当大的烦恼,因为这台机器经常重新启动。

运行 dmesg 我看到:

[15] IPv6 ADDRCONF(NETDEV_UP): eth1: link is not ready
[57] IPv6 ADDRCONF(NETDEV_UP): eth2: link is not ready
[98] IPv6 ADDRCONF(NETDEV_UP): eth3: link is not ready
[140] ...

鉴于这些接口没有被使用并且占用了很多时间,我想简单地禁用它们尝试启动,但我愿意接受其他选项,以减少在这些接口上浪费的时间。

我检查过/etc/sysctrl.conf,IPv6 已禁用,所以我不认为可以尝试 IPv6。

在网络脚本目录中,我为接口 2-4 创建了脚本,其中仅包含其接口名称和ONBOOT=no.

我还查看了/sys/class/net/ethX/device/power/control每个接口,它们都包含“on”,所以我尝试了:

echo off > /sys/class/net/ethX/device/power/control

但我明白了write error: Invalid argument,而回声on效果很好。我无法找到更改此文件的参考,但我觉得完全关闭接口有点极端。

我没有安装网络管理器,并且如果可能的话更愿意保持这种方式(更喜欢配置而不是在问题上抛出更多包)。


我已经不再讨论这个问题了,但是为了其他可能遇到这个问题的人,我会提到,事实dmesg是报告这些长时间的等待表明内核正在尝试启用这些接口。因此,内核参数可能是一个追求的途径,或者它可能只是一个内核错误。 Linux 本身的配置不太可能解决问题,grub配置或更改内核本身可能可以解决问题。


更新

我发布的自我答案实际上确实有机会进行测试,但没有成功。但是,发布我尝试过的内容。

注意到来自的消息dmesg表明内核正在执行我查看内核参数文档的操作:https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt

我发现有一个在接口上配置 IPv6 的选项:https://www.kernel.org/doc/Documentation/networking/ipv6.txt


该页面概述了以下内核选项:

disable=[01]0加载IPv6模块(默认),1不加载IPv6模块

autoconf=[01]0 在所有接口上禁用 IPv6 自动配置,1 在所有接口上启用自动配置(默认)

disable_ipv6=[01]0 在所有接口上启用 IPv6(默认),1 在所有接口上禁用 IPv6

然而,这些选项都没有解决这个问题。

答案1

您可以在 /etc/rc.local 中添加这些行:

ip link set dev "eth1" down
ip link set dev "eth2" down
ip link set dev "eth3" down

除非它是一个太基本或静态的解决方案......

答案2

我也遇到了同样烦人的问题,而且我不是专家,但在配置文件中搜索,在我的 Devuan 实际最新版本上找到了解决方案:

  • 编辑文件/etc/init.d/networking
  • 有一行:
    CONFIGURE_INTERFACES=
    
    将其设置为no

答案3

要在没有 NetworkManager 的情况下,在 RHEL 或相关发行版中选择性地禁用某些网络接口在启动时启动,请编辑/etc/sysconfig/network-scripts/ifcfg-<interface>与您要禁用的接口相对应的文件,并将行更改ONBOOT="yes"ONBOOT="no".

相关内容