从0开始学习Linux——网络配置

往期目录:

从0开始学习Linux------简介&安装

从0开始学习Linux------搭建属于自己的Linux虚拟机

从0开始学习Linux------文本编辑器

从0开始学习Linux------Yum工具

从0开始学习Linux------远程连接工具

从0开始学习Linux------文件目录

上一个教程中,我们了解了Linux系统的文件目录架构,本次教程我们将学习Linux系统基础设置中的网络设置。

一、 网络查看

对于网络查看我们可以使用ip命令。

ip addr

或者

ip addr show

现在我们来解析一下上图中的网络信息。

1、lo(Loopback)接口:lo是一个网络接口,它属于回环接口即用于本机与自己通信。

1)"lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000":<LOOPBACK,UP,LOWER_UP>:表示的是接口的状态标志;LOOPBACK:表示这是回环接口,通常用于内部网络通信;UP表示该接口已经被启用;LOWER_UP:表示物理层状态处于"UP"状态,表明接口工作正常;"mtu 65536: MTU(Maximum Transmission Unit,最大传输单元)"表示最大允许的网络数据包大小,这里是 65536 字节(64KB),通常回环接口的MTU较大;qdisc noqueue是队列调度器(queuing discipline)的设置,表示没有配置排队队列,这通常意味着数据包直接传输,不进行排队;state UNKNOWN:指的是接口的状态,回环接口通常不需要太多的网络状态变化,因此标记为 "UNKNOWN";group default:表示该接口属于默认的接口组;qlen 1000表示接口的队列长度为1000个数据包。

2)"link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00":link/loopback表示这是一个回环接口,没有硬件物理地址;00:00:00:00:00:00:表示这是回环接口的MAC地址,通常为全0;brd 00:00:00:00:00:00表示这是回环接口的广播地址,也为全0。

3)"inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever":inet 127.0.0.1/8是IPv4地址和子网掩码,表示该接口的IP地址是 127.0.0.1(通常被称为"localhost"),它的子网掩码是 /8,意味着子网掩码为 255.0.0.0scope host表示该地址仅在本机范围内有效,不可路由到其他主机;valid_lft forever preferred_lft forever表示该IP地址的有效期永远不会过期。

4)"inet6 ::1/128 scope host valid_lft forever preferred_lft forever":inet6 ::1/128是IPv6回环地址,它与IPv4的 127.0.0.1 类似,表示本机的IPv6地址;scope host表示该地址仅在本机范围内有效,不可路由到其他主机。

2、ens33接口:en表示它是以太网接口,s33 可能表示网卡的某个硬件标识符,或基于设备的插槽编号等信息。

1)"inet 192.168.33.136/24 brd 192.168.33.255 scope global noprefixroute dynamic ens33
valid_lft 1631sec preferred_lft 1631sec":inet 192.168.33.136/24是该接口的IPv4地址即192.168.33.136,它的子网掩码是/24,意味着子网掩码为255.255.255.0;brd 192.168.33.255是该接口的广播地址,通常是该子网的最后一个地址;scope global表示该IP地址是一个全局可路由的地址,可以在网络中访问;noprefixroute表示没有为该地址指定路由前缀;dynamic表示这个IP地址是动态分配的,可能通过DHCP获取;valid_lft 1631sec preferred_lft 1631sec表示该IP地址的有效期和首选期剩余时间分别是1631秒,过期后该地址将不再有效。

上述的ip addr命令查询出两个接口即lo网络接口和ens33网络接口,其中lo是本机自身通信的回环网络接口,而ens33是一个实际的以太网网络接口,它可以和外部计算机进行相互通信。

在 Linux 操作系统中,网络接口是计算机与网络之间进行通信的媒介。网络接口不仅限于物理网络适配器,还可以包括虚拟接口、回环接口等。每个接口都有一个名称,例如 ens33lo 等,表示不同类型的网络接口。

对于网络信息的查看我们也可以使用ifconfig命令。

ifconfig

从上图中的执行结果可以看出系统中没有ifconfig命令,因此我们需要先去安装net-tools(net-tools是网络配置管理工具,该工具提供了多个管理网络的命令,例如ifconfig,Centos7默认不安装该工具,在Centos7中使用的是iproute2工具,该工具提供了ip命令)。

yum install net-tools

安装好net-tools以后我们就可以使用ifconfig命令。

二、nmtui命令

CentOS 7 默认启用NetWorkManager,它有一个命令行的文本界面工具nmtui,可以用来方便地配置网络接口。

我们可以使用nmtui命令去开启它。

nmtui

执行完这条命令后就会弹出NetWorkManager界面。

在该界面中我们可以去编辑接口(删除、添加、修改等操作)、启用接口、修改主机名等操作。

三、nmcli命令

nmcli是一个命令行工具,用于管理和配置网络。它提供了更多的控制功能,适合自动化脚本等。

3.1 查看当前网络连接

nmcli connection show

3.2 启用/禁用网络接口

启用接口

nmcli connection up 接口名

停止接口

nmcli connection down 接口名

3.3 配置静态ip地址

上述我们使用ip addr命令查看网络信息的时候可以看到ens33接口的ip地址是DHCP动态分布的,那么ip地址是随时可以变化的,假设我们要搭建Linux集群,ip地址就必须要是固定的,因此我们可以动态ip地址给修改为静态ip地址。

nmcli connection modify 网络接口名 
ipv4.method manual ipv4.addresses ip静态地址 
ipv4.gateway ip网关 
ipv4.dns dns解析地址1、dns解析地址2...

假设现在我们想要去将ens33接口的ip地址由DHCP动态分配修改为静态地址进行一个固定。

在此之前我们需要先简单了解一下IPV4地址。

IPv4(Internet Protocol Version 4)是互联网协议中的一种,用于标识网络中的设备。它使用32位二进制地址,通常表示为4个十进制数(每个0-255范围内)之间用点分隔。

IPV4地址分为公网IP和私有IP,顾名思义私有IP只能在内网中使用。

这里我们就以私有IP地址192.168.33.131为例。

1、地址拆分

192.168.33.131这个地址中的每个数字(192、168、33、131)都对应8位二进制数。我们可以将每个十进制数转换成二进制:

  • 192 → 11000000
  • 168 → 10101000
  • 33 → 00100001
  • 131 → 10000011

因此,192.168.33.131 的32位二进制表示是:11000000.10101000.00100001.10000011
2、地址各个数字含义

第一部分:192

  • 所属类别: 192 处于 Class C 地址范围(192.0.0.0 到 223.255.255.255),该类别通常用于小型网络,最多可以支持254个主机。
  • 网络部分: 在Class C地址中,前24位表示网络部分。192 是网络地址的一部分,标识了该IP属于哪个特定的网络。举例来说,所有IP地址为 192.168.33.x 的设备都在同一个子网内。

第二部分:168

  • 网络地址的扩展: 168 是网络部分的一部分,继续区分子网中的不同网络。结合 192168,我们知道这属于 192.168.x.x 网络范围,通常是局域网(LAN)内部使用的私有地址。

第三部分:33

  • 子网中的特定网络: 33 是子网内的更细分部分。在子网掩码为 255.255.255.0(也就是 /24)的情况下,33 是网络的第三个字节,进一步确定了该IP属于 192.168.33.x 的子网。
  • 子网范围: 如果考虑子网掩码为 255.255.255.0,那么 192.168.33.0192.168.33.255 是这个子网的地址范围,33 代表这是 192.168.33.x 子网中的一个具体地址。

第四部分:131

  • 主机地址: 131 是网络中某台设备的地址,标识该地址是 192.168.33.131 子网中的具体主机。对于这个IP地址,131 表示该地址在这个网络中的唯一标识符。
  • 主机可用地址: 在一个子网中,0 通常作为网络地址,255 用作广播地址,其他的数字(1到254)可以分配给具体的设备。131 就是该子网中的一个有效主机地址,可能对应着局域网中的某台计算机、打印机、路由器等设备。

我们在修改ip地址之前需要先明确我们的Linux的网络模式是NAT模式还是桥接模式。

当然我们在安装Linux系统教程中选择的网络模式是NAT模式,可能我们在公司开发的时候公司会选择桥接模式,不过不影响,因为配置流程大差不差,这里我们以NAT模式为例。

在 NAT模式 下,虚拟机的 IP 地址通常来自 VMware 提供的虚拟子网(通常是vmnet8),宿主机会充当虚拟机与外部网络之间的网关。因此,当你在虚拟机(Linux)中配置网卡的 IP 地址时,需要确保该地址与宿主机的 虚拟网络 子网地址和网关保持一致。

那么我们怎么去查看虚拟子网呢?

首先打开我们的VM虚拟机,然后在头部导航栏中有个编辑下拉菜单,点击该按钮,然后点击下拉菜单里面的"虚拟网络编辑器",点击后就会有一个模态框弹出用于配置虚拟网络。

当然打开后可能是下面这个页面。

如果打开是这个页面,我们只需要点击更改设置按钮就可以了,点击后便可以进入到上述的页面。

从上图中我们可以看到有三张虚拟网卡,其中vmnet0用于桥接模式、vmnet1用于仅主机模式、vmnet8用于nat模式,由于我们Linxu系统是NAT模式,因此我们选择vmnat8网卡。

进来之后我们就可以去更改信息或者查看信息,在这里我们可以看到这里分配得到的子网值是33,我们也可以去修改成其它值,这里我们就先不去修改。

我们打开该页面的NAT设置选项。

我们记住里面的子网IP地址、子网掩码、网关信息,待会我们要用到,记住这些信息以后就可以关闭VM的虚拟网络编辑器。

当然对于vmnet1、vmnet8、vmnet0信息也可以直接在我们的windows系统中查看。

现在我们就开始将ens33接口的ip地址进行固定,并且固定为192.168.33.131。

nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.33.131/24 ipv4.gateway 192.168.33.2 ipv4.dns 8.8.8.8,8.8.4.4

配置完成以后我们可以重新启用ens33接口以使该配置生效。

nmcli connection down ens33

nmcli connection down ens33

重启ens33接口以后我们可以使用ip命令查看一下ip是否被修改成功。

ip addr show

这里我们看一下修改以后是否能成功连接到外网。

ping www.baidu.com

我们可以看到虚拟机能够正常访问外网,那么说明我们刚才的配置是成功的。

3.4 配置DHCP动态获取ip

上述我们讲解了如何固定ens33接口的IP地址,那么假设现在我们还是想让VM给ens33动态分配的话,可以执行下述命令。

nmcli connection modify eth0 ipv4.method ens33

执行完上述命令以后,为了让设置生效,我们可以重启ens33这个接口。

nmcli connection down ens33 && nmcli connection up ens33

四、network配置文件、

上述我们使用nmcli完成了对网络信息的修改,当然我们也可以使用最传统的方式即修改network服务的配置文件也是可以的。

在上一个教程中,我们讲过/etc/sysconfig/network-scripts/目录下就存放在网络接口配置文件。在 CentOS 7 中,每个网络接口都会有一个配置文件,文件命名格式为:ifcfg-接口名,例如我们要配置ens33接口,那么文件名就是ifcfg-ens33。

我们要去修改ens33接口的话就可以使用文本编辑器去编辑ens33接口配置文件。

vim  /etc/sysconfig/network-scripts/ifcfg-ens33

由于上述我们使用nmcli命令已经修改ens33接口,因此配置文件中的值已经被修改了。该配置文件中主要属性的含义如下所示:

  • BOOTPROTO=none:表示没有使用 DHCP,当然将该值设置为static也是一样的,如果我们要dhcp动态分配,那么就将该选项的值设置为dhcp就可以了。
  • IPADDR:设置静态 IP 地址。
  • NETMASK:设置子网掩码。
  • GATEWAY:设置默认网关。
  • DNS1, DNS2:配置 DNS 服务器。

我们把配置文件修改好以后需要对network服务进行重启。

systemctl restart network

补充:systemctl stop 服务名:表示停止服务;systemctl start 服务名:表示启动服务;systemctl restart 服务名:表示重启服务。

1、ls命令

ls(list)是 Linux 系统中最常用的命令之一,用于列出指定目录中的文件和子目录。

ls [选项] [路径]

具体选项如下所示:

  • -l:长格式(long listing format),显示更多的信息,包括文件的权限、所有者、大小和修改时间等。
  • -a:显示所有文件,包括以点(.)开头的隐藏文件。
  • -h:以人类可读的格式显示文件大小(例如,KB、MB、GB)。
  • -R:递归列出目录及其子目录中的文件。
  • -t:按修改时间排序,最近的文件排在前面。
  • -S:按文件大小排序。

2、ll命令

ll命令其实是ls -l命令的别名。

ll [文件路径]

五 、ip命令查看&管理网络接口

在这里我们学习使用ip命令去管理网络接口。

查看所有网络接口状态

ip link show

启用网络接口

ip link set 接口名 up

禁用网络接口

ip link set 接口名 down

查看网络接口路由表

ip route show

六、主机名

主机名(hostname)是系统的网络标识符之一,通常用于在网络中识别和与其他计算机进行通信。主机名不仅对本地机器有意义,还能影响系统的网络配置、服务标识等多个方面。

主机名(Hostname)是计算机在网络中用来标识自己的名字,通常与域名系统(DNS)或本地网络环境中的其他设备相关联。常见形式如下所示:

  • 静态主机名:系统启动时固定的主机名。
  • 动态主机名:在某些情况下可以改变的主机名,通常由 DHCP 或其他网络配置管理工具来动态分配。
  • FQDN(Fully Qualified Domain Name):完全合格的域名,通常包含主机名和域名。

现在我们知道了什么是主机名,那么我们可以想一下主机名的作用到底是啥?

主机民的作用如下所示:

  • 网络通信:主机名是网络中各计算机通信的标识之一。例如,在通过 SSH 连接远程主机时,通常是通过主机名或 IP 地址来访问。
  • 系统服务标识:许多服务和应用程序(如数据库、Web 服务器等)可能会根据主机名来配置和标识机器。
  • 日志管理:日志文件通常会记录主机名,帮助管理员识别不同主机上的活动。
  • DNS解析:当计算机连接到互联网时,DNS服务器会将主机名解析为 IP 地址。主机名是一个 DNS 解析过程中的关键部分。

6.1 主机名配置文件

/etc/hostname是存储主机名的核心文件。它包含了一个单一的主机名字段,通常就是计算机的静态主机名。

我们可以使用文本编辑器去修改我们的主机名。

/etc/hosts文件用于将主机名映射到 IP 地址,类似于 DNS 的作用。

我们可以在/etc/hosts文件里面去映射ip地址和主机名。该文件相当于一个通讯录,前面的教程我们学习ssh的时候是通过ip地址进行访问,假设我们在hosts文件里面配置了映射的话,那么我们可以直接使用主机名就可以了,好比与李四给张三打电话,那么李四可以选择直接拨打张三的电话号码,久而久之,李四发现这样很麻烦,于是就将张三的电话号码保存在通讯录里面,那么下次李四给张三打电话就可以直接在通讯录里面找到张三的名字拨出去就可以了,就不用像以前一样要去记住张三的电话号码。

hosts中的ip地址和主机名映射也是很重要的,假如后面我们学习了虚拟机集群搭建,那么不同的虚拟机之间互相通信一方面可以直接使用ip地址,当然也可以根据hosts中的映射关系使用主机名完成通信。

6.2 更改主机名

6.2.1 查看主机名

方式一

方式二

方式三

6.2.2 修改主机名

方式一

sudo hostnamectl set-hostname 主机名

上述命令执行后会更新主机名并修改/etc/hostname文件。

方式二

使用文本编辑工具直接去修改/etc/hostname文件。

注意:上述两种方式修改的都是静态主机名。

6.2.3 修改临时主机名

sudo hostname 主机名

注意:该命令执行完成以后修改的主机名只是临时的即会话结束以后主机名还是会使用/etc/hostname文件里面的主机名。

这节教程的内容就到此结束,更多内容将在后续教程中讲解。

相关推荐
码到成龚22 分钟前
SQL server学习10-数据库编程(中)
数据库·学习
群联云防护小杜29 分钟前
服务器压力测试怎么做
运维·服务器·网络协议·tcp/ip·阿里云·压力测试
等一场春雨34 分钟前
403 Forbidden HTTP 响应状态码
网络·网络协议·http
虾球xz1 小时前
游戏引擎学习第57天
学习·游戏引擎
火龙kess1 小时前
使用FreeNAS软件部署ISCSI的SAN架构存储(IP-SAN)练习题
linux·运维·服务器·网络·windows·tcp/ip·架构
huapiaoy1 小时前
JavaSE---String(含一些源码)
java·linux·前端
云计算DevOps-韩老师2 小时前
【网络云计算】2024第52周-每日【2024/12/23】小测-理论&实操-解析
linux·运维·服务器·开发语言·网络·云计算·perl
6.942 小时前
Scala学习记录 如何打印输出
开发语言·学习·scala
6.942 小时前
Scala-异常
学习·scala
囚生CY2 小时前
【学习笔记】蒙特卡洛与强化学习
笔记·python·学习