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

Linux进阶教程丨第10章:管理网络

sinye56 2025-01-06 15:19 12 浏览 0 评论

本文是 i 春秋作家「xiehudie」表哥分享的技术文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。本套Linux进阶教程共分为14章,欢迎大家前来系统学习。

前期回顾>>

第1章:访问命令行

第2章:从命令行管理文件

第3章:编辑、查看和编辑文本文件

第4章:管理用户和组

第5章:控制对文件的访问

第6章:控制对文件的访问

第7章:控制服务和守护进程

第8章:配置和保护SSH

第9章:分析和储存日志

第10章:管理网络

一、TCP/IP网络模型

TCP/IP网络模型是一种简化的四层抽象集合,用于描述不同的协议如何互操作,以便计算机通过互联网将流量从一台计算机发送到另一台计算机。

这四层分别是:

应用层:每一应用程序用于通信的规范,以便客户端和服务器可以跨平台通信。常用的协议有SSH(远程登录)、HTTPS(安全web)、NFS和CIFS(文件共享),以及SMTP(电子邮件递送)等。

传输:传输协议有TCP和UDP。TCP是可靠连接导向型通信,而UDP属于无连接数据报协议。应用协议使用TCP或UDP端口。/etc/services文件中可以找到常用和已注册的端口列表。

网络层:网络层将数据从源主机传送到目标主机。IPv4和IPv6协议是网络层协议。每一主机具有IP地址和前缀,用于确定网络地址,路由器用于连接网络。

数据链路层:链路或介质存取层提供与物理介质的连接。最常见的网络类型是有线以太网和无线局域网。每一物理设备具有一个硬件地址(MAC),用于标识局域网络段中的数据包的目的地。

系统上的每个网络端口都有一个名称。网络接口名称以接口类型开头:

以太网接口以en开头

WLAN接口以wl开头

WWAN接口以ww开头

在类型之后,接口名称的其余部分将基于服务器固件所提供的信息,或由PCI拓扑中设备的位置确定。

-ON表示这是一个板载设备,且服务器的固件提供设备的索引编号No因此,enol代表板载以太网设备10许多服务器不提供此信息file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml\wpsF510.tmp.png

-SN表示该设备位于PCI热插拔插槽N中。因此,ens3代表PCI热插拔插槽3中的以太网卡。

-pMsN表示这是一个位于插槽N中总线M上的PCI设备。因此,wlp4s0代表位于插槽0中PCI总线4上的WLAN卡。如果该卡是一个多功能设(可能是有多个端囗的以太网卡,或是具有以太网外加其他一些功能的设备),设备名称中就可能会添加fN。因此,enp0s1f0代表插槽1中总线0上的以太网卡的功能0。可能还有一个名为enp0s1f1的接囗,它代表了同一设备的功能1。

持久性命名意味着一旦您知道系统上网络接囗的名称,也就知道它以后不会再发生改变。

二、IPv4

IPv4地址是一个32位数字,通常使用点号分隔的四个十进制八位字节(取值范围从0到255)表示。此类地址分为两个部分:网络部分和主枳部分。位于同一子网中的所有主枳可以在彼此之间直接通信,无需路由器,这些主机具有相同的网络部分。网络部分用于标识子网。同一子网中的任何两台主枧都不能具有相同的主机部分。主枳部分用于标识子网中的特定主机。

在现代互联网中, IPv4子网的大小是可变的。要分清IPv4地址中的网络部分和主机部分,我们必须知道分配给子网的子网掩码。子网掩码指明有多少位的IPv4地址属于子网。可供主枳部分使用的位数越多,子网中就能有越多的主机。

有时,将子网中可能达到的最低地址(主枧部分的二进制值全为零)称为网络地址。在IPv4中,子网中可能达到的最高地址(主枧部分的二进制值全为一)用于广播消息,该地址称为广播地址。

子网掩码可用两种格式表示。较早的子网掩码语法中将24位用于网络部分,即255.255.255.0 较新的语法称为CIDR表示法,它指定了一个网络前缀/ 24。两种格式都传达同样的信息,即IP地址中有多少前导位组成其网络地址。

以下是IP地址、前缀(子网掩码)、网络部分和主相部分之间的关系。

特殊地址127.0.0.1始终指向本地系统("localhost"),而网络127.0.0.1/8属于本地系统,所以它能够使用网络协议与自己通信。

不管使用IPv4还是IPv6,网络流量都需要以主枧到主枳和网络到网络的形式进行传输。每一主机具有一个路由表,该表告诉主枧如何路由特定网络的通信。路由表条目将列出目标网络、用于向其发送流量的接囗,以及任何中间路由器的IP地址(用于将消息中继到最终目的地)。与网络流量目的地相符的路由表条目用于路由该流量。如果两个条目匹配,则使用前缀最长的那一个。

如果网络流量不匹配更为具体的路由,路由表通常具有一个代表整个IPv4互联网的默认路由条目: 0 0.0.0/0。此默认路由指向可通达的子网上的路由器(也就是说,在主枧路由中具有更具体路由的子网上)。
如果路由器收到的流量并非将其作为寻址目标,则路由器不会像普通主枳那样忽略该流量,而是根据自己的路由表转发该流量。这种处理方式可能会将流量直接发送到目标主机(如果路由器恰巧与目标位于同一子网中),也可能转发到其他路由器。这种转发过程会一直进行,直到流量到达最终目标。

从此主机发往IP地址192.0.2.102的流量将通过wlo1无线接囗直接传输到该目的地,因为它与192.0.2.0/24路由的匹配度最高。发往IP地址192.168.5.3的流量将通过enp3s0以太网接囗直接传输到该目的地,因为它与192.168.5.0 / 24路由的匹配度最高。

发往IP地址10.2.24.1的流量将从enp3s0以太网接囗发送到192.168.5.254的路由器,该路由器将该通信转发到其最终目的地。该流量与0.0.0.0/0路由的匹配度最高,因为此主机的路由表中没有更加具体的路由。该路由器将使用自身的路由表来判断流量需要转发到的下一个位置。

服务器可以在引导时从DHCP服务器自动配置其IPv4网络设置。本地客户端守护进程查询链路以获取服务器和网络设置,并获得租约以便在特定时间内使用这些设置。如果客户端未定期请求续订租约,则可能会丢失其网络配首设置。

作为替代方案,我们可以将服务器配置为使用静态网络配置。在这种情况下,网络设置读取自本地配置文件。我们必须从网络管理员处获取正确的设置,并根据需要手动更新它们,以避免与其他服务器冲突。

三、IPv6

IPv6旨在最终取代IPv4网络协议。您将需要了解它的工作原理,因为越来越多的生产系统使用IPv6 寻址。例如,许多ISP已经将IPv6用于内部通信和设备管理网络,以便将稀缺的IPv4地址保留给客户使用。

IPv6也可以在双栈模型中与IPv4并行使用。在这种配首中,网络接口可以同时具有IPv6地址和 IPv4地址。

IPv6地址是一个128位数字,通常表示为八组以分号分隔的四个十六进制半字节。每个半字节均表示4位的甲v6地址,因此每个组表示16位的IPv6地址。

2001:db8:0000:0010:0000:0000:0000:0001

为了便于编写IPv6地址,不需要编写分号分隔的组中的前导零。但是,每个冒号分隔的组中必须至少写入一个十六进制数字。

2001:db8:0:10:0:0:0:1

由于带有很长的零字符串的地址很常见,一组或多组连续零可以通过正好一个::块来合并。

2001:db8:0:10::1

注意,根据这些规则,2 1:db8::0010:0:0:0:1将成为编写示例地址的另一种不太方便的方法。但它也是相同地址的有效表示法,而这可能让不熟悉IPv6的我们感到困惑。下面的

读地址可以给我们一些提示:

file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml\wpsC154.tmp.png抑制组中的前导零。

file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml\wpsC155.tmp.png使用::来尽可能地缩短

如果地址包含两个连续的零组且长度相同,则最好将每个组最左边的零组缩短为::,最右边的组缩短为:0:。

尽管运行这样做,但不要使用::来缩短一组零。应改为使用:0:,而将::留给连续的零组。

始终使用对十六进制的数字使用小写字母a到f。

普通的IPv6单播地址分为两部分:网络前缀和接口ID。网络前缀标识子网。同一子网上的任何两个子网接口都不能具有相同接口ID,接口ID可标识子网上的特定接囗。

与IPv4不同的是,IPv6具有一个标准的子网掩码/ 64,用于几乎所有的普通地址。在此情况下,地址的一半是网络前缀,另一半是接囗IDO这意味着单个子网可以根据需要容纳任意数量的主枧。

通常,网络提供商将为组织分配一个较短的前缀,如/48。这会保留其余网络部分以用于通过这一分配的前缀来指定子网(长度始终未/64,最多保留16位用于子网,最多65536个子网)。

IPv6中的本地链路地址是一个无法路由的地址,仅用于与特定网络链路上的主机进行通信。系统上的每个网络接凵都通过fe80::/ 64网络上的本地链路地址来自动配置。为确保其唯一性,本地链路地址的接囗ID是通过网络接囗的以太网硬件地址来构建的。将48位MAC地址转换为64位接口的的一般方法是反转7位的MAC地址冫然后在其两个中间字节之间插入ff:fe。

网络前缀:fe80::/ 64

MAC地址:00:11:22:aa:bb:cc

本地链路地址:fe80::211:22ff:feaa : bbcc/64

其他计算机的本地链路地址可以由相同链路上的其他主机像普通地址那样使用。由于每个链路具

有fe80::/ 64网络,不能使用路由表来正确地选择出站接囗。在地址的结尾必须使用作用域标识

符来指定与本地链路地址进行通信时使用的链路。作用域标识符由%以及后跟的网络接口名称组成。

多播允许一个系统将流量发送到多个系统接收的特殊IP地址。它与广播不同,因为只有网络上的特定系统才能接收流量。它也与IPv4中的广播不同,因为某些多播流量可能会路由到其他子网,具体取决于网络路由器和系统的配置。

多播在IPv6中比在IPv4中扮演着更重要的角色,因为IPv6中没有广播地址。IPv6中的一个重要多播地址是ff02::1,即一占本地链路址。对此地址进行Ping操作会将流量都发送到链路上的所有节点。与本地链路地土一一才需要使用作用域标识符来指定钅连路作用域多播地址(从ff02::/ 8 开始)。

四、网络端口

IP link命令将列出系统上可用的所有网络接口:

服务器有三个网络接口:lo(这是连接到服务器本身的环回设备)以及两个以太网接口(ens3和ens4) file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml\wpsA7C8.tmp.png

要正确配置每个网络接囗,您需要知道哪个接囗连接到哪个网络。在很多情况下,您会知道连接到每个网络的接囗的MAC地址,因为它就实际打印在卡或服务器上,或者因为这是一个虚拟枧,而您知道它是如何配置的。设备的MAC地址列在每个接囗的link/ether后面。因此,您知道MAC地址为52:54:00:00:00:0a的网卡就是网络接囗ens30。

使用ip命令来查看设备和地址信息。单个网络接囗可以具有多个IPv4或IPv6地址。

ip命令也可用于显示关于网络性能的统计信息。每个网络接囗的计数器可用于识别网络问题的存在。计时器记录的统计信息包括收到(RX)和传出(TX)的数据包数、数据包错误数,以及丢弃的数据包数。

ping命令可用于测试连接。该命令将持续运行,直到按下Ctrl+c组合键为止(除非已指定了限制发送数据包数量的选项)。

五、网络配置

默认情况下,通过nmcli con mod name进行的更改会自动保存到/etc/sysconfig/network-scripts/ifcfg -nameo还可以使用文本编辑器手动纟扁辑此文件。执行此操作后,运行nmcli con reload以便NetworkManager读取配置更改。

出于向后兼容性的原因,此文件中保存的指令具有不同于nm-settings(5)名称的名称和语法。下表将部分关键设置名称映射到ifcfg- *指令。

nm-settings与ifcfg-*指令的比较

也可以通过直接编辑连接配置文件来配置网络。连接配置文件控制单个网络设备的软件接囗。这些文件通常命名为/etc/sysconfig/network-scripts/ifcfg-name,其中name是指配置文件控制的设备或连接的名称。以下是在用于静态或动态IPv4配置的文件中找到的标准变量。

Ifcfg文件的IPv4配置文件

在静态设置中, IP地址、前缀和网关等变量的末尾都是数字。这允许将多组值指定到该接囗。DNS 变量也有一个数字,用于在指定了多个服务器时指定查询的顺序。

在修改了配置文件后,我们可以运行nmcli con reload使NetworkManager读取配置更改。接口依然需要重新启动,以便更改生效。

相关推荐

程序员: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像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: