JenyaKh Asked: 2019-09-01 08:59:07 +0800 CST2019-09-01 08:59:07 +0800 CST 2019-09-01 08:59:07 +0800 CST 如果没有 /proc/sys/net/ipv6 文件夹,请在 Debian 10 上启用 ipv6 772 如果我运行 ifconfig 我可以看到没有分配给任何接口的 ipv6 地址。如果我尝试创建 AF_INET6 套接字,则会收到一条错误消息,指出不支持地址系列。我没有/proc/sys/net/inet6文件夹。该机器运行 Debian 10 (buster)。在/etc/default/grub中没有关于禁用 ipv6 的行。 $ uname -r 4.19.52.1.amd64-smp 请你告诉我如何启用ipv6?我找到了很多关于如何禁用它而不是如何启用它的文章。 linux debian 1 个回答 Voted Best Answer telcoM 2019-09-01T11:14:32+08:002019-09-01T11:14:32+08:00 在 Linux 中禁用 IPv6 的方法有很多,因此您必须全部检查。 首先,您的内核版本看起来不像 Debian 10 标准 AMD64 内核。如果您使用的是自定义内核,IPv6 可能在内核编译时被禁用,在这种情况下,您需要重新编译内核(或切换到另一个内核)才能启用它。 请运行 grep CONFIG_IPV6= /boot/config-$(uname -r) 看看它说了什么。或者,如果该/boot/config-<kernel version>文件不存在,请改为运行以下命令: modprobe configs; zcat /proc/config.gz | grep CONFIG_IPV6= 如果响应什么都没有,或者包含一行: # CONFIG_IPV6 is not set 那么你当前的内核在编译时禁用了它的 IPv6 支持。在这种情况下,您必须安装新的内核包(或构建并安装自定义内核)才能启用 IPv6。 如果响应包含一行: CONFIG_IPV6=m 然后将 IPv6 支持编译为内核模块。 如果有一行: CONFIG_IPV6=y 然后将 IPv6 支持编译到主内核中。在这种情况下,禁用 IPv6 的一种方法是将引导选项添加ipv6.disable=1到内核命令行(/etc/default/grub如果使用 GRUB 引导加载程序,或者在/boot/cmdline.txtRaspberry Pi 引导加载程序中),但您说您已经检查过了。 IPv6 编译为模块 请modprobe -c |grep "options ipv6"以root身份运行。如果响应包含一行: options ipv6 disable=1 或者 options ipv6 disable_ipv6=1 然后 IPv6 被内核模块配置禁用,您应该在/etc/modprobe.d. 要在这种情况下重新启用 IPv6,请找到该行,将其注释掉,然后update-initramfs -u以 root 身份运行,以确保 IPv6 在早期启动时不会被禁用,因为这种禁用策略可能需要重新启动才能重新启用。 ipv6(理论上,在注释掉 disable 选项后卸载和重新加载就足够了,但是由于模块之间的依赖关系,如果不重新启动,实际上可能很难做到。) 适用于模块化和编译 IPv6 的方法 您还应该检查 sysctl 设置: grep "disable_ipv6" /etc/sysctl.conf /etc/sysctl.d/*.conf 如果输出包括这样的行,则 IPv6 已通过 sysctl 设置禁用: net.ipv6.conf.<something>.disable_ipv6 = 1 在这里,<something>可能是单词allordefault或特定网络接口的名称。要重新启用,请注释掉这些disable_ipv6行并sysctl -p以 root 身份运行,然后重新启动(或者只是重新配置您的网络接口)。
在 Linux 中禁用 IPv6 的方法有很多,因此您必须全部检查。
首先,您的内核版本看起来不像 Debian 10 标准 AMD64 内核。如果您使用的是自定义内核,IPv6 可能在内核编译时被禁用,在这种情况下,您需要重新编译内核(或切换到另一个内核)才能启用它。
请运行
看看它说了什么。或者,如果该
/boot/config-<kernel version>
文件不存在,请改为运行以下命令:如果响应什么都没有,或者包含一行:
那么你当前的内核在编译时禁用了它的 IPv6 支持。在这种情况下,您必须安装新的内核包(或构建并安装自定义内核)才能启用 IPv6。
如果响应包含一行:
然后将 IPv6 支持编译为内核模块。
如果有一行:
然后将 IPv6 支持编译到主内核中。在这种情况下,禁用 IPv6 的一种方法是将引导选项添加
ipv6.disable=1
到内核命令行(/etc/default/grub
如果使用 GRUB 引导加载程序,或者在/boot/cmdline.txt
Raspberry Pi 引导加载程序中),但您说您已经检查过了。IPv6 编译为模块
请
modprobe -c |grep "options ipv6"
以root身份运行。如果响应包含一行:或者
然后 IPv6 被内核模块配置禁用,您应该在
/etc/modprobe.d
.要在这种情况下重新启用 IPv6,请找到该行,将其注释掉,然后
update-initramfs -u
以 root 身份运行,以确保 IPv6 在早期启动时不会被禁用,因为这种禁用策略可能需要重新启动才能重新启用。ipv6
(理论上,在注释掉 disable 选项后卸载和重新加载就足够了,但是由于模块之间的依赖关系,如果不重新启动,实际上可能很难做到。)适用于模块化和编译 IPv6 的方法
您还应该检查 sysctl 设置:
如果输出包括这样的行,则 IPv6 已通过 sysctl 设置禁用:
在这里,
<something>
可能是单词all
ordefault
或特定网络接口的名称。要重新启用,请注释掉这些disable_ipv6
行并sysctl -p
以 root 身份运行,然后重新启动(或者只是重新配置您的网络接口)。