Systemd 中 network.target 的含义

官方文档 https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

在 systemd 中,network 相关的目标单元有3个:

  • network.target 在启动过程中几乎没有任何意义。它仅仅表示在被达到之后,网络管理堆栈已启动。它被达到时是否已经配置了任何网络接口是不确定的。它的主要目的是在关机时正确排序:因为 systemd 中单元的关机顺序是启动顺序的反向,任何在After=network.target之后的单元可以确保它在网络关闭之前停止,这样在系统关闭时,服务可以干净地终止连接,而不是突然失去连接,使得正在进行的连接处于未定义状态。请注意,这是一个被动单元:你不能直接启动它,它也不会被任何想使用网络的服务拉入。相反,它是被网络管理服务本身拉入的。使用网络的服务应简单地在它们的单元文件中放置After=network.target依赖项,而避免任何Wants=network.target或者 Requires=network.target
  • network-online.target 是一个目标,积极等待网络“上线”,这里“上线”的定义由网络管理软件决定。通常,它表示某种已配置的、可路由的 IP 地址。它的主要目的是积极延迟服务的激活,直到网络设置完毕。它是一个主动目标,意味着它可能被需要网络上线的服务拉入,但不会被网络管理服务本身拉入。默认情况下,所有在/etc/fstab中定义的远程挂载都会拉入这个服务,以确保在尝试连接网络共享之前网络已经上线。请注意,通常情况下,如果没有服务需要它,并且没有配置远程挂载点,这个目标不会被拉入启动,从而避免在网络不可用时引起的启动延迟。强烈建议不要过于随意地拉入这个目标:例如,网络服务器软件一般不应该拉入它(因为服务器软件通常在任何可路由的网络接口上线之前就能够接受本地连接),它的主要目的是网络客户端软件,这些软件在没有网络的情况下无法操作。
  • network-pre.target 是一个目标,可以用于在任何网络接口配置之前对服务进行排序。它的主要目的是供那些想在任何网络接口启动之前建立防火墙的防火墙服务使用。这是一个被动单元:你不能直接启动它,它也不会被网络管理服务拉入,而是被那些想在它之前运行的服务拉入。网络管理服务因此应该设置After=network-pre.target,但避免任何Wants=network-pre.targetRequires=network-pre.target。那些想在网络配置之前运行的服务应设置Before=network-pre.target并且也设置Wants=network-pre.target来拉入它。这样,除非确实有需要在网络启动之前排序的服务,否则这个目标不会被拉入,从而避免任何不必要的同步点。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部