百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

对Linux操作系统网络管理的认识与理解

sinye56 2024-11-27 20:29 1 浏览 0 评论

1、从Linux Kernel谈起

Linux分别为用户空间和内核空间两个部分。用户空间包括用户的应用程序、程序库等,内核空间包括系统调用接口、内核(狭义内核)、平台架构相关的代码。

Linux内核由七个部分构成,分别是:

系统调用接口(System Call interface,SCI):向用户空间提供访问文件系统和硬件设备的统一的接口,如open、read、write等系统调用。

进程管理(Process Scheduler,PM):创建进程、删除进程、调度进程等,也称作进程管理、进程调度。负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。

内存管理( Memory Manager,MM):内存分配、管理等,负责管理Memory(内存)资源,以便让各个进程可以安全地共享机器的内存资源。内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的时候,再取回到内存中。

虚拟文件系统(Virtual File System,VFS):为多种文件系统提供统一的操作接口。Linux内核将不同功能的外部设备,例如存储设备(硬盘、磁盘、NAND Flash等)、输入输出设备、显示设备等,抽象为可以通过统一的文件操作接口来访问。Linux操作系统一切皆是文件的缘由。

Network(网络子系统):提供各种网络协议,负责管理系统的网络设备,并实现多种多样的网络标准。

Arch:CPU架构相关代码,为的是提高Linux在不同CPU上的移植性。

DD(Device Drivers设备驱动程序):用来定义各种设备驱动,其代码量占Linux Kernel代码总量的70%以上。

IPC(Inter-Process Communication):进程间通信。IPC不管理任何硬件,主要负责Linux系统中进程之间的通信。

2、Linux Kernel Network Stack,网络子系统

网络子系统在Linux内核中主要负责管理各种网络设备,并实现各种网络协议栈,最终实现通过网络连接其它系统的功能。在Linux内核中,网络子系统几乎是自成体系,包括5个子模块。

Network Device Drivers:网络设备驱动,用于控制所有的网络接口卡及网络控制器。

Device Independent Interface:统一设备模型,定义描述网络硬件设备的统一方式,用一致的形式对驱动程序提供接口,实现所有的网络设备驱动都遵照统一定义,降低网络接口卡驱动程序的开发难度。

Network Protocols:实现网络传输协议,例如IP, TCP, UDP等。

Protocol Independent Interface:屏蔽下层的硬件设备和网络协议,实现用socket的标准接口支持网络通信。

System Call interface:系统调用接口,向用户空间提供访问网络设备的统一接口,各种网络管理工具通过调用该接口实现具体的功能。

3、systemd-networkd 与 Network Manager

systemd是freedesktop的项目,官网 https://www.freedesktop.org/wiki/Software/systemd。该项目源码在 github 上发布,可以在 https://github.com/systemd/systemd 查看所有版本更新、 Bug Fix 和版本对应的文档等。systemd-networkd 是 systemd 默认提供的网络管理服务,可以完全管理以太网,但是不能够实现对无线网卡、PPP的管理。

systemd-networkd是用于管理网络的系统服务。它能够检测并配置网络连接, 也能够创建虚拟网络设备。

systemd-networkd的配置包括三个方面。

systemd.link:配置独立于网络的低级别物理连接。

systemd.netdev:创建虚拟网络设备。

systemd.network:配置所有匹配的网络连接的地址与路由。 在启动匹配的网络连接时,会首先清空该连接原有的地址与路由。 所有未被.network文件匹配到的网络连接都将被忽略(不对其做任何操作)。 systemd-networkd会忽略在 systemd.network文件中明确设为 Unmanaged=yes的网络连接。

当 systemd-networkd 服务退出时, 通常不做任何操作,以保持当时已经存在的网络设备与网络配置不变。 一方面,这意味着,从 initramfs 切换到实际根文件系统以及重启该网络服务都不会导致网络连接中断。 另一方面,这也意味着,更新网络配置文件并重启 systemd-networkd 服务之后, 那些在更新后的网络配置文件中已经被删除的虚拟网络设备(netdev)仍将存在于系统中, 有可能需要手动删除。

服务的配置文件分别位于: 优先级最低的 /usr/lib/systemd/network 目录、 优先级居中的 /run/systemd/network 目录、 优先级最高的 /etc/systemd/network 目录。

文献来源:http://www.jinbuguo.com/systemd/systemd-networkd.service.html

The NetworkManager daemon attempts to make networking configuration and operation as painless and automatic as possible by managing the primary network connection and other network interfaces, like Ethernet, Wi-Fi, and Mobile Broadband devices.

NetworkManager will connect any network device when a connection for that device becomes available, unless that behavior is disabled.

Information about networking is exported via a D-Bus interface to any interested application, providing a rich API with which to inspect and control network settings and operation.

The point of NetworkManager is to make networking configuration and setup as painless and automatic as possible. If using DHCP, NetworkManager is intended to replace default routes, obtain IP addresses from a DHCP server and change nameservers whenever it sees fit. In effect, the goal of NetworkManager is to make networking Just Work.

Whilst it was originally targeted at desktops, it has more recently been chosen as the default network management software for some non-Debian server-oriented Linux distributions,but understand that NetworkManager is not intended to serve the needs of all users.

NetworkManager includes three commands nmcli, nmtui and nmcli-examples。

CentOS操作系统上有NetworkManager和systemd-networkd两种网络管理工具,如果两种都配置会引起冲突。

CentOS 7及之后版本主要使用NetworkManager服务来实现网络的配置和管理,CentOS 7以前的版本主要是通过systemd-networkd服务管理网络。

对两种网络管理工具的操作主要如下。

system-networkd和NetworkManager是网络管理工具,主要通过对Linux Kernel进行交互,实现网卡、网络连接的配置、管理等。可以不借助任何工具,通过修改配置文件实现对网络配置信息的修改,然后通过systemd-networkd和NetworkManager启用配置信息并管理网络设备和服务。

4、Linux操作系统的网络管理工具

根据用途的不同,笔者将Linux操作系统的网络配置和管理的工具分为四类:基于systemd-networkd或者NetworkManager的网络配置工具,网络管理工具,网络测试工具和网络监控工具。这种分类不是标准和规范,而是为了介绍工具软件方便而进行。

网络配置工具有渊源深厚的net-tools,目前得到广泛支持的iproute2的ip模块,ubuntu积极推进的netplan,以及NetworkManager内置的nmcli、nmtui。网络配置工具主要是为用户提供操作接口,用户操作通过网络配置工具传递给systemd-networkd和NetworkManager,再由其通知Linux Kernel执行。通俗的讲,如果能够熟练的通过vi工具直接修改网络配置文件,则可以不安装和使用任何网络配置工具。

nmcli和nmtui工具是NetworkManager内置的配置工具。nmtui实现shell下的图形化管理,具有连接配置、连接激活和主机名配置功能。nmcli通过选项可以实现强大的网络配置功能,包括对网络连接、网卡设备、组播多播等进行配置管理。

netplan是配置网络连接的命令行工具,使用YAML描述文件来配置网络接口,并通过这些描述为任何给定的呈现工具生成必要的配置选项。ubuntu 18.04版本后默认使用netplan管理网络,详细介绍参看ubuntu的官方网站:https://netplan.io。

net-tools包含一组命令,包括常用的hostname、ifconfig、netstat等。iproute2使用ip命令和选项实现几乎所有的网络管理功能,如link、address、route等。

网络管理工具有很多,例如强大的网卡及网卡驱动管理工具ethtool,用于进行Linux Kernel流量控制的流浪控制器iproute2的tc模块(Traffic、Control)。

网络测试工具有耳熟能详的ping,进行路由追踪的traceroute,也特别推荐Linux操作系统上非常好用的网络诊断工具mtr。

网络监控工具有监控arp的arpwatch,监控网络接口流量的iftop,查找网络通信报文的ngrep,以及嗅探获取网络通信报文的tcpdump。

相关推荐

Linux基础知识之修改root用户密码

现象:Linux修改密码出现:Authenticationtokenmanipulationerror。故障解决办法:进入单用户,执行pwconv,再执行passwdroot。...

Linux如何修改远程访问端口

对于Linux服务器而言,其默认的远程访问端口为22。但是,出于安全方面的考虑,一般都会修改该端口。下面我来简答介绍一下如何修改Linux服务器默认的远程访问端口。对于默认端口而言,其相关的配置位于/...

如何批量更改文件的权限

如果你发觉一个目录结构下的大量文件权限(读、写、可执行)很乱时,可以执行以下两个命令批量修正:批量修改文件夹的权限chmod755-Rdir_name批量修改文件的权限finddir_nam...

CentOS「linux」学习笔记10:修改文件和目录权限

?linux基础操作:主要介绍了修改文件和目录的权限及chown和chgrp高级用法6.chmod修改权限1:字母方式[修改文件或目录的权限]u代表所属者,g代表所属组,o代表其他组的用户,a代表所有...

Linux下更改串口的权限

问题描述我在Ubuntu中使用ArduinoIDE,并且遇到串口问题。它过去一直有效,但由于可能不必要的原因,我觉得有必要将一些文件的所有权从root所有权更改为我的用户所有权。...

Linux chown命令:修改文件和目录的所有者和所属组

chown命令,可以认为是"changeowner"的缩写,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。当只需要修改所有者时,可使用...

chmod修改文件夹及子目录权限的方法

chmod修改文件夹及子目录权限的方法打开终端进入你需要修改的目录然后执行下面这条命令chmod777*-R全部子目录及文件权限改为777查看linux文件的权限:ls-l文件名称查看li...

Android 修改隐藏设置项权限

在Android系统中,修改某些隐藏设置项或权限通常涉及到系统级别的操作,尤其是针对非标准的、未在常规用户界面显示的高级选项。这些隐藏设置往往与隐私保护、安全相关的特殊功能有关,或者涉及开发者选项、权...

完蛋了!我不小心把Linux所有的文件权限修改了!在线等修复!

最近一个客户在群里说他一不小心把某台业务服务器的根目录权限给改了,本来想修改当前目录,结果执行成了根目录。...

linux改变安全性设置-改变所属关系

CentOS7.3学习笔记总结(五十八)-改变安全性设置-改变所属关系在以前的文章里,我介绍过linux文件权限,感兴趣的朋友可以关注我,阅读一下这篇文章。这里我们不在做过的介绍,注重介绍改变文件或者...

Python基础到实战一飞冲天(一)--linux基础(七)修改权限chmod

#07_Python基础到实战一飞冲天(一)--linux基础(七)--修改权限chmod-root-groupadd-groupdel-chgrp-username-passwd...

linux更改用户权限为root权限方法大全

背景在使用linux系统时,经常会遇到需要修改用户权限为root权限。通过修改用户所属群组groupid为root,此操作只能使普通用户实现享有部分root权限,普通用户仍不能像root用户一样享有超...

怎么用ip命令在linux中添加路由表项?

在Linux中添加路由表项,可以使用ip命令的route子命令。添加路由表项的基本语法如下:sudoiprouteadd<network>via<gateway>这...

Linux配置网络

1、网卡名配置相关文件回到顶部网卡名命名规则文件:/etc/udev/rules.d/70-persistent-net.rules#PCIdevice0x8086:0x100f(e1000)...

Linux系列---网络配置文件

1.网卡配置文件在/etc/sysconfig/network-scripts/下:[root@oldboynetwork-scripts]#ls/etc/sysconfig/network-s...

取消回复欢迎 发表评论: