Linux

如果沒有 /proc/sys/net/ipv6 文件夾,請在 Debian 10 上啟用 ipv6

  • August 31, 2019

如果我執行 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 中禁用 IPv6 的方法有很多,因此您必須全部檢查。

首先,您的核心版本看起來不像 Debian 10 標準 AMD64 核心。如果您使用的是自定義核心,IPv6 可能在核心編譯時被禁用,在這種情況下,您需要重新編譯核心(或切換到另一個核心)才能啟用它。

請執行grep CONFIG_IPV6 /boot/config-$(uname -r),看看它說什麼。如果響應包含一行:

# CONFIG_IPV6 is not set

那麼你目前的核心在編譯時禁用了它的 IPv6 支持。

如果響應包含一行:

CONFIG_IPV6=m

然後將 IPv6 支持編譯為核心模組。

如果有一行:

CONFIG_IPV6=y

然後將 IPv6 支持編譯到主核心中。在這種情況下,禁用 IPv6 的一種方法是將引導選項添加ipv6.disable=1到核心命令行(在 中/etc/default/grub),但您說您已經檢查過了。

IPv6 編譯為模組

modprobe -c |grep "options ipv6"以root身份執行。如果響應包含一行:

options ipv6 disable=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 身份執行,然後重新啟動(或者只是重新配置您的網路介面)。

引用自:https://unix.stackexchange.com/questions/538478