Linux:从内核禁用环回接口

lan*_*ng2 8 ip linux-kernel

我知道可以通过执行ifconfig lo down. 但是是否有可能将 lo 接口配置为根本不可用的内核?请注意,我不想删除内核源代码或禁用整个 tcp/ip 堆栈。

请注意,这完全是一个技术问题。我知道一个人需要接口,我的机器会发生很多不好的事情。但我仍然想知道这是否可能。

Hen*_*nes 6

是的,这是可能的,如果:

  • 你在没有网络支持的情况下重新编译 Linux。(一个都没有)
  • 您编辑内核源代码。

只是从配置中删除它似乎没有预期那么简单。从/usr/src/linux/drivers/net/Makefile(3.2.29 内核中的第 68 行)中删除它是一个好的开始,但对于成功编译来说还不够。并且/usr/src/linux/net/core/dev.c(第 6606 行到 6614 行)表明如果选择了网络部分,环回设备应该始终存在。(如代码中的此注释所示):

/* 如果有其他网络设备,环回设备是特殊的
 * 存在于环回设备必须的网络命名空间中
 * 出席。由于我们现在动态分配和释放
 * 环回设备确保这个不变量由
 * 保持环回设备作为第一个设备
 * 网络设备列表。确保环回设备
 * 是出现的第一个设备和最后一个网络设备
 * 消失了。
*/

所以:是的,这是可能的。但并非完全微不足道。


all*_*tic 5

作者当然这是可能的。Linux 是开源的;通过在构建系统和/或源代码中进行足够的黑客攻击,您可以做任何事情。你完全可以在没有 TCP/IP 堆栈的情况下编译 Linux;在这种情况下,您将无法拥有任何网络接口,因为内核将没有“网络”的概念。

这通常不是您可以从 GUI 或标准 Linux 发行版(例如 Ubuntu、Debian 或 Fedora)上的命令行禁用的,因为回送接口是硬连接到它们提供的特定内核构建中的;但这并不意味着您不能在删除内核的情况下重新编译内核。

此外,如果您没有任何特别需要这样做,并且“只是想知道”,我建议您不要问这种问题——原因是,我们尽量不鼓励琐碎或“只是为了好玩”关于 SU 的问题。如果您有真正的问题,请仅提出问题。

  • 您可以从 /usr/src/linux/drivers/net/loopback.c 中删除它 (3认同)