netplannetworkctlnmcli 以及 systemd-networkd 是Linux系统中用于配置和管理网络的不同工具和服务,他们各自有不同的作用和使用情景。

netplan:

  • 目的:netplan是一个基于YAML的网络配置抽象层,用于统一不同的网络配置服务(如NetworkManager和systemd-networkd)的配置方式。
  • 配置文件:通常位于/etc/netplan/目录下,使用YAML格式。
  • 工作方式:用户编辑YAML文件,netplan将这些配置转换为底层网络管理器(如NetworkManager或systemd-networkd)可以理解的配置。
  • 适用环境:主要用于Ubuntu 17.10及以后版本。

networkctl:

  • 目的:是systemd-networkd的命令行前端,用于查询和控制systemd-networkd管理的网络状态。
  • 命令:可以查看网络接口的状态、配置等信息。
  • 工作方式:作为systemd-networkd的辅助工具,直接与systemd-networkd的状态和配置进行交互。
  • 适用环境:适合于使用systemd-networkd作为网络管理器的系统。

nmcli:

  • 目的:是NetworkManager的命令行界面,用于配置和管理NetworkManager服务。
  • 命令:可以进行网络连接的添加、修改、删除、激活和非激活等操作。
  • 工作方式:直接与NetworkManager的守护进程进行交互,不依赖于其他配置文件,虽然也可以管理和查看/etc/NetworkManager/目录下的配置。
  • 适用环境:广泛用于各种Linux发行版,尤其适合桌面环境和需要频繁更改网络设置的场景。

systemd-networkd:

  • 目的:是一个系统服务,用于配置网络设备和连接。
  • 配置文件:通常位于/etc/systemd/network/目录下。
  • 工作方式:在系统启动时(或服务启动时)应用配置,管理网络接口。
  • 适用环境:适合于服务器或容器环境,以及对于稳定性和轻量级配置有较高要求的场景。

systemctl 命令的区别

  • systemctl restart systemd-networkd:重启systemd-networkd服务,会重新应用/etc/systemd/network/目录下的配置。
  • systemctl restart networking:这通常是基于ifupdown的旧式网络管理脚本在Debian和Ubuntu上的服务名称,用于重启传统的网络服务。
  • systemctl restart network:在基于Red Hat的系统上,如CentOS和Fedora,这个命令会重启传统的网络服务(在这些系统中,System V之前的/etc/init.d/network脚本或与其相对应的systemd服务)。

他们之间的关系

  • netplan 可以配置以 systemd-networkd 或者 NetworkManager 为后端的网络设置。
  • networkctlsystemd-networkd 的配套工具,用于查看由 systemd-networkd 管理的网络接口的状态。
  • nmcliNetworkManager 的命令行工具,用于配置和控制 NetworkManager
  • systemd-networkdnetworking、和 network 是Linux系统中可能的不同网络服务,具体使用哪一个取决于系统配置和发行版。通过systemctl重启这些服务可以应用新的网络配置或者重置网络连接。

Red Hat Linux / CentOS 系列网络配置文件路径:

- /etc/sysconfig/network-scripts/ifcfg-ethX      # IP地址,子网掩码等配置文件<br>
- /etc/sysconfig/network-scripts/ifcfg-lo        # 回环网卡配置<br>
- /etc/sysconfig/network                         # 主机名和网关配置文件<br>
- /etc/resolv.conf                               # DNS配置文件<br>
- /etc/hosts                                     # 主机和IP绑定信息<br>

suse Linux 网络配置文件路径:

- /etc/sysconfig/network/ifcfg-eth-id-HWaddr     # IP地址,子网掩码等配置文件<br>
- /etc/HOSTNAME                                  # 全局主机名配置<br>
- /etc/resolv.conf                               # DNS配置文件<br>
- /etc/sysconfig/network/routes                  # 网关配置文件<br>
- /etc/hosts                                     # 主机和IP绑定信息<br>

Debian / Ubuntu Linux 网络配置文件路径:

ubuntu从17.10开始,已放弃在/etc/network/interfaces里固定IP的配置,即使配置也不会生效,而是改成netplan方式 ,配置写在/etc/netplan/的yaml文件里

- /etc/netplan/                                  # IP地址,子网掩码等配置文件<br>
- /etc/network/interfaces                        # IP地址,子网掩码等配置文件<br>
- /etc/resolv.conf                               # DNS<br>
- /etc/hostname                                  # 全局主机名配置<br>
- /etc/hosts                                     # 主机和IP绑定信息<br>

Slackware Linux 网络配置文件路径:

- /etc/rc.d/rc.inet1.conf                        # IP地址,子网掩码等配置文件<br>
- /etc/resolv.conf                               # DNS<br>
- /etc/hostname                                  # 全局主机名配置<br>
- /etc/networks                                  # 设置网络号等相关信息<br>
- /etc/hosts                                     # 设置主机和IP地址绑定<br>

参考链接