需要桥接模块时如何禁用 ipv6?

需要桥接模块时如何禁用 ipv6?

在linux中,如果需要桥接网卡,桥接模块会自动加载。但bridge的依赖项之一是ipv6。由于我只需要 ipv4,有什么方法可以覆盖 ipv6 依赖项吗?我尝试将该模块列入黑名单,但它根本不起作用。

编辑:问题不是问如何禁用 ipv6,而是我想知道如何在没有 ipv6 模块的情况下加载桥接。问题不重复。

答案1

从其配置定义

depends on: CONFIG_IPV6 || CONFIG_IPV6 = CONFIG_n

看来桥接模块要么依赖于 ipv6 模块(如果它是在内核中编译的(内置或作为模块)),要么不会依赖它(如果它根本没有在内核中编译)。因此,如果您不想使用 IPv6,您可以简单地使用没有CONFIG_IPV6设置该选项的内核。

如果这不是一个选择,您可以执行以下操作之一:

  • 首先加载 ipv6 模块 ( modprobe ipv6),然后立即禁用该接口或任何其他或所有接口的 IPv6,方法是更改disable_ipv6切换到 1:

    echo 1 > /proc/sys/net/ipv6/conf/someinterface/disable_ipv6
    

    或使用等效的 sysctl (更多sudoip netns友好):

    sysctl -w net.ipv6.conf.someinterface.disable_ipv6=1
    

    必须首先加载 ipv6 模块才能禁用其功能!否则上面的切换将不可用。

    在桥接接口本身上禁用 IPv6 确实可能是个好主意。

    如果您想禁用 ipv6 的任何使用,包括稍后出现的较新接口:

    sysctl -w net.ipv6.conf.default.disable_ipv6=1
    sysctl -w net.ipv6.conf.all.disable_ipv6=1
    
  • 还有一个内核启动选项ipv6.disable=1,它可能更适合有限的环境(例如嵌入式),并且可能不会安装所有 ipv6 代码,但我没有测试它是否与您的桥接“激活”兼容。

    将“ipv6.disable=1”添加到引导选项,然后保存 grub 文件:

    GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"
    

    此引导选项的详细信息请参见 AskUbuntu 答案:如何永久禁用 IPv6?

  • 然后我想这应该也可以工作(但我也无法测试它,因为我有内置的 IPv6):而不是简单地使用modprobe ipv6第一种方法,而是尝试这个:

    modprobe ipv6 disable=1
    

    或者

    modprobe ipv6 disable_ipv6=1
    

    在它被加载之前。如果这有效,那么您可以将其添加为类似以下内容的选项:

    options ipv6 disable=1 disable_ipv6=1 #pick the right option
    

    例如在一个名为/etc/modprobe.d/disable-ipv6.conf.

相关内容