我使用的机器有 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"
.