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

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

sinye56 2024-11-27 20:29 9 浏览 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。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: