如何从 Linux 完全、动态地禁用 IPv4 堆栈?

Ald*_*ran 18 networking linux ipv6 linux-networking ipv4

如何从 Linux禁用IPv4堆栈?我想动态地做到这一点,即有时我想要启用它,有时我只想要IPv6堆栈。有没有便携的方法来做到这一点?如果你知道如何在任何发行版中做到这一点,它也会对我有很大帮助。

cor*_*ump 21

在 IRC 上聊了几句之后,普遍的看法是 linux 内核在 ipv4 和 ipv6 之间共享一些代码,这可能使完全禁用 ipv4 完全不可能。您可以尝试在没有 ipv4 部分的情况下编译内核,但在这种情况下 ipv6 可能无法编译(但没有什么可以阻止您尝试!)。

您可以从接口中删除 ipv4 地址,AFAIK,但我认为目前不可能完全禁用 ipv4。

编辑:make menuconfig对内核 2.6.36进行快速检查后,我找不到禁用 ipv4 而不禁用整个 TCP/IP 堆栈(以及 ipv6)的方法。


ram*_*uma 5

如果这是针对开发人员的,那么可以使用“库插入”,使用 LD_PRELOAD 一些带有存根函数的篡改库,这些存根函数只返回错误(或者根据星期几或其他一些外部标准调用真实的错误)。