systemd:谁在没有 ifupdown 的情况下设置了 lo 接口?

systemd:谁在没有 ifupdown 的情况下设置了 lo 接口?

哪个组件/包负责lo在没有包的情况下将 systemd 的网络接口设置为 PID1 ifupdown

在Debian中,我们有相当多的组件来管理网络ifupdown,,,,network-managersystemd-networkd现在,我们可以(我也这么做了)删除该ifupdown软件包,这意味着在启动过程中/etc/network/interface不会引用该软件包。ifup

我还删除了ifconfigNetworkManager 的配置文件 中的所有条目,/etc/NetworkManager/NetworkManager.confnmcli dev显示该lo文件未受管理。

$ nmcli dev
  :
lo               loopback  unmanaged    --                 

networkctl还显示lo不受管理:

$ networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     unmanaged 
  :

但仍然,lo似乎已经上升(LOWER_UP至少)

$ ip li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

并且 ssh 到 localhost 可以工作。

所以,我的问题是,谁提出这个lo界面?

请注意,我的意图不是禁用lo界面,而是知道谁负责以及何时以及如何负责。

答案1

环回接口在早期启动时设置(例如在任何网络服务器运行之前)。分布之间似乎没有显着差异。当前的 Debian如果向上向下lo即使没有在 /etc/network/interfaces 中进行配置也会启动。从技术上讲,可以更改lo- 并且仍然可以重新配置,例如使用 ifupdown (甚至可能是 systemd-networkd?)。

systemd 的早期设置部分可能更难理解。它是单个程序的代码(用 C 编写:),设置调用与更多特定于程序的初始化混合在一起,并且似乎没有专门记录。然而,systemd 二进制文件的手册页确实提到了环回接口作为内置设置任务的示例之一:

Systemd 包含需要作为引导过程的一部分执行的各种任务的本机实现。例如,它设置主机名或配置环回网络设备。它还设置并挂载各种 API 文件系统,例如 /sys 或 /proc。

有关systemd背后的概念和思想的更多信息,请参阅原始设计文档[2]。

谷歌知道

https://www.google.com/search?q=systemd%20loopback

其中代码是 - 结果 1:https://github.com/systemd/systemd/blob/master/src/core/loopback-setup.c

它还会向您显示提到这一点的开发人员博客文章。这篇博文除了确认 systemd 是否负责之外,并没有更具体地回答您的问题。例如,它还提到了 tmpfiles,但没有提到 systemd-tmpfiles 是与 PID 1 不同的二进制文件和服务单元。需要明确的是,环回接口是由 PID 1 设置的,这可以在代码中看到。

结果3:

面向管理员的 systemd,第八部分
0pointer.de/blog/projects/the-new-configuration-files- 已缓存 - 类似
2011 年 4 月 20 日...我正在为管理员进行的 systemd 系列的另一集:...设置主机名;配置环回网络设备

我们的小型零壳项目[1]取得了圆满成功。目前,我们涵盖了大多数桌面和嵌入式发行版所需的几乎所有内容,以及服务器所需的很大一部分:

  • 检查并挂载所有文件系统

  • 更新并启用所有文件系统上的配额
  • 设置主机名
  • 配置环回网络设备
  • 加载 SELinux 策略并在启动时根据需要重新标记 /run 和 /dev
  • 在内核中注册其他二进制格式,例如 Java、Mono 和 WINE 二进制文件
  • 设置系统区域设置
  • 设置控制台字体和键盘映射
  • 创建、删除和清理临时和易失性文件和目录
  • 将 /etc/fstab 中的挂载选项应用到预挂载的 API VFS
  • 应用 sysctl 内核设置
  • 收集和重播预读信息
  • 更新utmp启动和关闭记录
  • 加载和保存随机种子
  • 静态加载特定内核模块
  • 设置加密硬盘和分区
  • 在串行内核控制台上生成自动 getty
  • 普利茅斯的维护
  • 机器ID维护
  • 设置系统时钟的 UTC 距离

相关内容