Alp*_*uri -1 networking debian ipv6
第一的,
如果我sysctl net.ipv6.conf.all.disable_ipv6=1在系统启动后从命令行发出,我会得到我想要的结果——IPv6 确实被禁用。
现在解决重新启动后使此行为持续存在的问题。
很容易找到如何执行此操作的建议,通常它们围绕将net.ipv6.conf.all.disable_ipv6=1文件放入/etc/sysctl.d/目录中或 sysctl 本身的配置文件中,即/etc/sysctl.conf. 提到的其他方法包括添加
GRUB_CMDLINE_LINUX="ipv6.disable=1"
Run Code Online (Sandbox Code Playgroud)
到/etc/default/grub
例如,这里提到了这一点:
https://serverfault.com/questions/660979/how-to-disable-ipv6-support-in-linux-entirely
我已经尝试了所有这些,但它们不起作用。ifconfig清楚地表明该接口已启用 IPv6。同样,如果我只是在启动后执行手册sysctl,它会按预期禁用它。
sysctl -p对我没有任何作用,只需按上述方式逐字编写命令即可。
我还尝试将sysctl命令放入 中/etc/rc.local,通过观察我可以放在那里的其他命令,我知道该命令可以正确运行。然而,尽管执行了,但似乎并没有生效。
我还尝试了其他命令,而不仅仅是all.disable_ipv6,例如default.disable_ipv6and enp0s3.disable_ipv6(我已经验证 enp0s3 确实是我的以太网接口)。
对我来说,这似乎有点类似于https://bugs.launchpad.net/ubuntu/+source/linux/+bug/997605,但我不知道为什么会发生这种情况。我确信我在不同的系统上所要做的只是将其放入 /etc/sysctl.d/ 中的文件中。
除了我尝试过的之外,我已经知道禁用此功能的一种方法是在不支持 IPv6 的情况下手动重新编译内核。然而,这实在是太拼凑了,它不可靠,而且需要做和维护太多的工作。
作为 Debian 系统管理员,管理着数百个 Debian 虚拟机已经很长时间了,我可以向您保证发出 sysctl+kernel 设置来禁用 IPv6,这足以彻底消灭它。
在您的场景中,您的问题是编辑 不足以/etc/default/grub将参数应用于内核。
你还必须做:
sudo update-grub2
Run Code Online (Sandbox Code Playgroud)
然后重启,让内核参数禁用IPv6生效。
顺便说一句,您可以在运行时检查哪些参数传递给了内核:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.10.5-antix.3-amd64-smp root=UUID=00c17984-859f-4197-8bd8-b346ddd092bd ro iommu=1 intel_iommu=on iommu=pt ipv6.disable=1 intremap=no_x2apic_optout radeon.modeset=0
Run Code Online (Sandbox Code Playgroud)
此外,正如 @schweik 正确指出的那样,在成功杀死 IPv6 后,您可能需要重新访问几个守护程序的配置,这些守护程序已编译/具有 IPv6 的特定配置。启动系统时,请注意与 IPv6 相关的错误消息和/或错误日志。
PS 另请注意,在 Arm 或 MIPS 架构中,您通常没有 grub,并且必须编辑不同的文件/etc/default/grub。不过,我假设如果您正在编辑它,那么您已经安装了 grub。
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |