Ole*_*leg 30 networking networkmanager linux-kernel systemd-networkd netplan
我正在学习关于Linux的Kubuntu我18.04工作站上的网络,我看到有两个NetworkManager
和networkd-dispatcher
正在运行:
oleg@eclectic:~$ sudo ps -ef | grep -i net
root 56 2 0 Oct11 ? 00:00:00 [netns]
root 1097 1 0 Oct11 ? 00:00:02 /usr/sbin/NetworkManager --no-daemon
root 1098 1 0 Oct11 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 1250 1 0 Oct11 ? 00:00:02 /usr/sbin/inetd
root 1593 1097 0 Oct11 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...
Run Code Online (Sandbox Code Playgroud)
NetworkManager
似乎被配置为通过netplan
以下方式处理“一切” :
oleg@eclectic:~$ cat /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)
我相信,如果没有安装,netplan
一切都会交给他们。networkd
NetworkManager
中还有一堆文件/etc/network/
,我不确定是什么处理这些文件。很多包似乎都在使用这个目录:
oleg@eclectic:~$ dpkg -S /etc/network
avahi-daemon, ifupdown2, wpasupplicant, openvpn, postfix, netbase, avahi-autoipd, wireless-tools, clamav-freshclam: /etc/network
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索后,我最初的想法是,NetworkManager
并且networkd
都在运行,但是netplan
生成的配置使得只有一个人在做某事。但我不知道我将如何验证这一点,找出操作链,或将其配置为适合我对 dummy0 的邪恶计划。
问题: NetworkManager、networkd 和 netplan 究竟是如何协同工作的?换句话说,当计算机启动时,哪些进程会处理哪些其他进程?诸如net-tools
、ifupdown2
和iproute2
等目录中的工具如何/etc/network/
适应所有这些?最后,我如何自己解决这个问题并使用命令行了解详细信息?
更新:我不是在寻找高级概述。相反,我想知道这些组件如何在内核级别或类似级别上进行交互、冲突或避免冲突。
jdw*_*olf 25
systemd-networkd
当它启用时尊重配置 /etc/systemd/network
而NetworkManager
将遵循一些自动规则,例如它会在找到有线连接时尝试连接到有线连接。
两者都作为systemd
服务启用和禁用,systemd 使用 udev 为网络适配器创建设备文件。通常,您可能不应该同时启用两者,但如果您这样做,您需要注意它们的配置不会发生冲突。
netplan
在任一网络管理器开始之前,根据其自己的配置为任一网络管理器创建配置。通过这种方式,netplan 实际上是一个配置抽象,它使用 systemd-networkd 还是 NetworkManager 是配置的一部分。
iproute2
是用于在命令行配置网络接口的工具包。它包括类似于网络管理器和旧的 ifconfig 的链接配置。While net-tools
,ipupdown
并ifupdown2
使用 /etc/network/interfaces 中的网络配置来配置和取消配置接口。
ifupdown
或者它的其他版本可用于管理网络,但它不是自动的,但可以使用 systemd 服务在启动时启动它。
ifupdown2
使用systemd
与网络接口类似的依赖图。此外,它充当其他工具的抽象,例如iproute2
Ell*_*iew 18
我不会试图回答你的整个问题,
但我发现了一些帮助我理解这些系统如何组合在一起的东西。
希望这对某人有所帮助,因为这让我感到非常困惑
interfaces
配置文件,它是ifup
&ifdown
命令:在/etc/network/interfaces
网络配置文件似乎是相当老,但仍然使用ifup
,ifdown
和ifquery
。
这些似乎是使网络“接口”(基于 MAC 的链接)和“连接”(基于 IP 的连接)上下的旧方法。
man 8 ifup
说:
说明
的的ifup和ifdown你命令可以被用于配置(或分别解除配置)的基础上在文件接口定义网络接口 的/ etc /网络/接口。
在重要的含义是这样的:
如果接口中未定义接口,则 ifup/ifdown 将不会管理该接口。
ifconfig
命令怎么样?Debian的,我有一个名为的传统网络包网的工具,其中包括折旧:arp
,ifconfig
,ipmaddr
,iptunnel
,iwconfig
,nameif
,netstat
,route
,和vconfig
命令。
你想现在可以使用iproute2
包和ip
,iw
,ss
,和ifrename
命令。
ip
命令可以打开或关闭接口,为什么不使用它而不是ifup
和ifdown
?什么ifup/down
(通过 ifupdown 包或假设还包括 ifupdown2 中的 Python 重写),ip
不做的是在网络更改之前和之后运行旧脚本。请注意 ifup 所说的:
笔记
程序不直接配置网络接口;它运行诸如ip 之类的低级实用程序来完成其肮脏的工作。
另请参见
接口(5)、ip(8)、ifconfig(8)。
所以看起来 ifup/ifdown 已经从使用折旧ifconfig
后端升级到现在使用ip
后端。
从man 5 NetworkManager
,
[IFUPDOWN]
此部分包含 ifupdown 特定选项,因此仅在使用 ifupdown 插件时有效。
管理
如果设置为 true,则 /etc/network/interfaces 中列出的接口由 NetworkManager 管理。如果设置为 false,则 NetworkManager 将忽略 /etc/network/interfaces 中列出的任何接口。请记住,NetworkManager 控制默认路由,因此因为该接口被忽略,NetworkManager 可能会将默认路由分配给其他某个接口。
所以不清楚 NetworkManager 是否也可以运行 ifup/ifdown 脚本,但很清楚的是,NetworkManager 可以清除 ifup/ifdown 正在使用的接口。
这比 NetworkManager 更新,用于有线服务器和 GUI 环境不可用时。
但似乎对于无线连接,NetworkManager 是一种可行的方法,因为手动配置 systemd-networkd 更加困难。
在man 8 systemd-networkd
它说,
systemd-networkd 将管理它找到具有适当 [Match] 部分的 .network 文件的任何链接的网络地址和路由,请参阅 systemd.network(5)(真实网络设备)。对于这些链接,它会在启动设备时刷新现有的网络地址和路由。任何与 .network 文件之一不匹配的链接都将被忽略。 也可以使用 Unmanaged=yes 选项明确告诉 systemd-networkd 忽略链接,请参阅 systemd.network(5)。
希望我一切都好,但如果没有,请告诉我。谢谢。