netplan
、networkctl
、nmcli
以及 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
为后端的网络设置。networkctl
是systemd-networkd
的配套工具,用于查看由systemd-networkd
管理的网络接口的状态。nmcli
是NetworkManager
的命令行工具,用于配置和控制NetworkManager
。systemd-networkd
、networking
、和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>