15 network-manager networking netplan systemd-networkd
我正在学习使用 netplan。在编写 YAML 配置文件时,我需要知道要使用哪个渲染器,NetworkManager 或 networkd。
我怎么知道我是在运行 NetworkManager 还是 networkd?
Ell*_*iew 15
据我所知,在 Linux 中有 3 种网络方法:
1)最老的使用/etc/network/interfaces文件和ifup/ifdown脚本来管理这些接口。
2)之后出现了具有可用 GUI 界面的network-manager守护程序(通常是编写的Network-Manager)。
3)最近的systemd-networkd守护进程(有时简称为“networkd”)基于systemd单元文件。
要查看您的网络是如何管理的,首先您必须知道您的系统是在初始化时使用systemd还是较旧的,init因为它是第一个进程。 (例如,Debian 和 Ubuntu 现在使用systemd代替init)。
pidof systemd && echo "systemd" || echo "other"
Run Code Online (Sandbox Code Playgroud)
所以如果你没有跑步systemd,那么显然你可以排除systemd-networkd。
如果您正在运行systemd,则使用以下两个命令检查哪些网络服务守护进程正在运行:
sudo service systemd-networkd status
sudo service network-manager status
Run Code Online (Sandbox Code Playgroud)
您将看到Active: active (running)或Active: inactive (dead)报告每个。
请注意,您也可以运行这些较新的命令,但显然如果您没有 systemd,它们将不适合您:
systemctl status systemd-networkd
systemctl status network-manager
Run Code Online (Sandbox Code Playgroud)
但你还没有完成......
最后,即使这两个守护进程之一正在运行,也不意味着您的网络硬件接口正在由它们管理,因为有例外。
首先/etc/network/interfaces,网络管理器会忽略 中定义的任何接口。 ( man 5 NetworkManager)
接下来,systemd-networkd将只管理任何链接的网络地址和路由,只要它找到具有适当 [Match] 部分的 .network 文件。 ( man 8 systemd-networkd)。
chi*_*555 12
默认情况下,Ubuntu 桌面版附带网络管理器。在大多数桌面环境中,它做得很好。在这种情况下,netplan 文件应将网络移交给网络管理器。通常,相关文件是/etc/netplan/01-network-manager-all.yaml 它读取:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
Run Code Online (Sandbox Code Playgroud)
在Ubuntu服务器版中,由于默认没有安装桌面环境;即 Gnome、Unity、Wayland、KDE 等,网络管理器是不可能的,因此没有安装。在 17.10 及更高版本中,网络仅由 netplan 处理。典型的相关文件是/etc/netplan/01-netcfg.yaml它通常是这样写的:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
Run Code Online (Sandbox Code Playgroud)
...其中 enp0s3 是您的相关界面。这将允许通过 DHCP 连接互联网,直到可以通过编辑 yaml 文件并执行以下操作来实现完整和进一步的配置:
sudo netplan apply
Run Code Online (Sandbox Code Playgroud)