如果沒有 /proc/sys/net/ipv6 文件夾,請在 Debian 10 上啟用 ipv6
如果我執行 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>
可能是單詞all
ordefault
或特定網路介面的名稱。要重新啟用,請註釋掉這些disable_ipv6
行並sysctl -p
以 root 身份執行,然後重新啟動(或者只是重新配置您的網路介面)。