Linux:从内核禁用环回接口

Linux:从内核禁用环回接口

我知道可以通过以下方式关闭 lo 接口ifconfig lo down。但是是否可以配置内核,使 lo 接口不可用?请注意,我不想删除内核源代码或禁用整个 tcp/ip 堆栈。

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

答案1

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

  • 您重新编译了没有网络支持的Linux。(根本没有)
  • 您编辑内核源代码。

仅从配置中删除它似乎没有想象的那么简单。从/usr/src/linux/drivers/net/Makefile(3.2.29 内核中的第 68 行)中删除它是一个很好的开始,但还不足以成功编译。并且/usr/src/linux/net/core/dev.c(第 6606 行至第 6614 行)表示环回设备需要总是如果选择了网络部分,则存在。(如代码中的注释所示):

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

所以:是的,这是可能的。但并非完全不重要。

答案2

课程这是可能的。Linux 是开源的;只要对构建系统和/或源代码进行足够的修改,您就可以做任何事情。您绝对可以在没有 TCP/IP 堆栈的情况下编译 Linux;在这种情况下,您将无法拥有任何网络接口,因为内核没有“网络”的概念。

您通常无法从标准 Linux 发行版(例如 Ubuntu 或 Debian 或 Fedora)上的 GUI 或命令行禁用此功能,因为环回接口被硬连线到它们所发布的特定内核版本中;但这并不意味着您不能在删除它的情况下重新编译内核。

此外,如果您没有特别需要这样做,而只是“好奇”,我建议您不要问这种问题——原因是,我们试图阻止在 SU 上提出琐碎或“只是为了好玩”的问题。请仅在您遇到真正问题时才提问。

相关内容