当前位置: 首页 > news >正文

Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人

本文讲解了Ubuntu下网络由什么管理,介绍了临时ip和路由的设置方法,介绍了静态持久化网络配置的方法以及各网络管理软件之间的关系。

来看看Ubuntu网络管理。

序言

原本学习ubuntu网络管理就是为了检查nginx安装过程中使用wget获取压缩包为什么解析不出ip的问题。现在越学越泛倒是忘记初心了。

网络接口

Linux中,网络通信需要通过网络接口。那么网络的接口既有软件抽象的也有硬件的,我们就需要来了解怎么管理和使用。

ifconfig

这个命令大家应该非常熟悉。,之前的学习中我一直给各种命令列出很多选项和参数,但是我觉得不如在用到的时候去查询手册或者搜索引擎。比起知道到底有什么参数,我更想知道和记住这个命令的作用和最常见的使用场景。

作用

查看网络接口。

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::87e5:906f:a18b:63e2  prefixlen 64  scopeid 0x20<link>ether 08:00:27:60:a1:de  txqueuelen 1000  (以太网)RX packets 2549  bytes 634859 (634.8 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 468  bytes 71960 (71.9 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (本地环回)RX packets 872  bytes 65297 (65.2 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 872  bytes 65297 (65.2 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 怎么理解上面的输出:

首先看enp0s3,en代表以太网,p0代表总线0,s3是指插槽3.

lo代表本地环回地址。

ifconfig
#如果显示未安装
sudo apt install net-tools

flags 字段表示接口的状态和特性,通过标记(flag)以十六进制或十进制数值来表示。常见的标志及其含义如下:

UP:接口已启用。表示网络接口已被激活并处于运行状态。
BROADCAST:支持广播。表示接口可以发送和接收广播消息。
RUNNING:接口正在运行。这通常意味着该接口已经被激活,且有可能处于正常工作状态。
MULTICAST:支持组播。接口支持组播功能,可以处理多个目标地址的消息。
LOOPBACK:回环。表示这是一个本地回环接口,用于自我通信(通常是 lo 接口,地址为 127.0.0.1)。
PROMISC:混杂模式。表示网络接口将接收所有传入的数据包,不论目的地址是否匹配。
POINTOPOINT:点对点。接口用于点对点链接,不进行广播和多播。
在示例中:

flags=4163 对应的是十进制值 4163,转换为十六进制值为 0x1043。其中包含以下标志:
UP (0x1)
BROADCAST (0x2)
RUNNING (0x40)
MULTICAST (0x100)

其余的解释: 

enp0s3 是有线以太网接口:

flags=4163<UP,BROADCAST,RUNNING,MULTICAST>:接口已启动,可以广播和组播。
mtu 1500:最大传输单元为 1500 字节。
inet 192.168.1.11:IPv4 地址为 192.168.1.11,子网掩码为 255.255.255.0,广播地址为 192.168.1.255。
inet6 fe80::87e5:906f:a18b:63e2:IPv6 链路本地地址。
ether 08:00:27:60:a1
:MAC 地址。
RX/TX packets 和 bytes:接口接收到(RX)和发送的(TX)数据包数和字节数。
RX errors 0, TX errors 0:没有接收或发送错误。
lo 是本地回环接口(loopback):

flags=73<UP,LOOPBACK,RUNNING>:回环接口已启动。
mtu 65536:最大传输单元为 65536 字节。
inet 127.0.0.1:本地回环的 IPv4 地址。
inet6 ::1:IPv6 回环地址。
RX/TX packets 和 bytes:回环接口接收和发送的数据包和字节数。
没有接收或发送错误。

还有选项允许你显示更多的或者其他信息,你可以使用man方法察看。 

man ifconfig

网络接口命名规则

enp0s3,en代表以太网,p0代表总线0,s3是指插槽3.

lo 是 Linux 系统中的本地回环接口(Loopback Interface)的名称。它是一个特殊的网络接口,主要用于在本地计算机内部进行网络通信,而无需通过实际的物理网络硬件。

fc表示光纤,ge表示千兆以太网,xe表示万兆以太网。

配置网络接口IP地址

临时IP地址配置和静态ip地址配置,前者通过ifconfig,后者修改配置文件。

临时配置ip和路由:

ifconfig interface ip netmask netmask

例子:

sudo ifconfig enp0s3 192.168.1.12 netmask 255.255.255.0

重启或者重启网络接口之后我们使用ifconfig修改的ip会消失,因为它并不保存在任何配置中,而是在内存中。

重启网络接口:

ifup
ifdown

这里我的ssh连接软件直接掉了,我刚刚还以为虚拟机又出现问题了,发现是ip改变了。ssh连接自然断了。

但是我换了ip之后还是不能连接,于是接着看,还要配置默认网关。

经过修改ip之后发现路由全部空了。

添加路由又提示:

SIOCADDRT:网络不可达。

经过查询呢,发现是因为添加ip的时候出错,重新修改一次临时ip即可。

查看路由:

route -n

使用命令添加网关:

route add gw 192.168.1.1 enp0s3

这里我报错的原因已经说过了,正常情况下:

至少有一条这样的:

 

Destination(目的地):表示目标网络或主机的地址范围。
0.0.0.0 通常表示默认路由,指向所有无法匹配的网络流量。
192.168.1.0 表示网络 192.168.1.0/24,即 IP 地址范围 192.168.1.0 到 192.168.1.255。
Gateway(网关):指定该路由条目通过哪个网关发送数据。如果为 0.0.0.0,表示直接路由,没有中间网关。
在上面的例子中,默认路由通过网关 192.168.1.1,它通常是路由器的 IP 地址。
Genmask(子网掩码):定义目的地的子网掩码,用于区分网络地址和主机地址。
例如,255.255.255.0 表示子网掩码 /24,也就是一个拥有 256 个 IP 地址的子网。
Flags(标志):用于显示路由条目的特性。常见的标志有:
U:接口已启用(Up)。
G:路由使用网关。
H:目标是单一主机(Host)。
D:该路由是由系统动态创建的。
M:该路由已被修改。
在示例中,UG 表示该路由通过一个网关,且该路由项对应的接口是启用状态。Metric(度量值):表示该路由的优先级。较低的值表示更优先的路由。
在示例中,默认路由的度量值是 100,而其他直接连接的网络的度量值为 0,意味着系统会优先选择直接连接的路由。
Ref(引用计数):这个字段现在通常没有实际意义,始终显示为 0。
Use(使用次数):表示路由条目被使用的次数,但在现代 Linux 系统中通常没有实际意义。
Iface(接口):指定该路由条目通过哪个网络接口发送数据。例如 enp0s3 是本地的以太网接口。

查看DNS服务:

cat /etc/resolv.conf

这个文件展示dns配置。 

每个人这里情况不一定一样,我这里就告诉我们两件事,第一就是这个文件最好不要修改,因为会被覆盖。

第二就是管理这个文件的服务为:system-resolved。

如果你想修改dns,应该去system-resolved那里修改。

如果你不想使用这个服务,你可以改变这个文件的链接方向,使其指向你自己创建的静态dns配置文件。 

下面是内容解释:

文件头部的一些注释表明,这个文件由 systemd-resolved 动态管理,并且这个 /etc/resolv.conf 可能是一个符号链接,指向 /run/systemd/resolve/stub-resolv.conf。
systemd-resolved 是一种服务,它管理本地和远程 DNS 解析,并在现代 Linux 系统中常用于自动化 DNS 配置。
nameserver 127.0.0.53:表示系统使用的是本地 DNS 解析器(127.0.0.53),它是 systemd-resolved 服务的内部 DNS 转发器。
实际的外部 DNS 服务器(如 ISP 提供的 DNS 或 Google DNS)由 systemd-resolved 管理,这里只是本地的一个 DNS 中继。
options edns0 trust-ad:edns0:启用扩展 DNS(EDNS),用于支持比传统 DNS 更大容量的数据包。
trust-ad:表示接受 DNS 服务器返回的认证数据(Authenticated Data, AD),这通常与 DNSSEC 相关。
search .:表示搜索域为空,也就是说,DNS 查找时不会自动在本地域名后附加其他域。

静态地址配置

neplan是什么?

Netplan 是一种用于配置网络的工具,主要用于现代 Linux 发行版(例如 Ubuntu)中管理和配置网络接口。它是 Ubuntu 17.10 及之后版本中的默认网络配置工具,旨在简化网络配置管理。

它的配置文件在哪?

Netplan 的配置文件通常存放在 /etc/netplan/ 目录中,文件名一般是 *.yaml 格式(如 00-installer-config.yaml 或 01-netcfg.yaml)。每个 YAML 文件定义了网络接口、路由、DNS 等网络配置。

 其中会指示具体用的是那种服务管理我们的网络配置。这里就是NetWorkManager。

netplan后端具体的服务

具体由NetworkManager还是

我们要添加静态网络地址,或者说永久的地址改变就需要改变这个配置文件。

# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManager

额外的:

使用 /etc/network/interfaces 修改(旧方法): 在一些老版本的 Linux 发行版中(如 Ubuntu 16.04 及更早版本),可以通过编辑 /etc/network/interfaces 文件来永久修改 IP 地址。

此方法不与NetPlan共存。

 配置文件的方法

network:version: 2renderer: networkdethernets:enp0s3:dhcp4: noaddresses:- 192.168.1.100/24gateway4: 192.168.1.1nameservers:addresses:- 8.8.8.8- 8.8.4.4

network:网络配置的根节点。
version: 2:Netplan 配置的版本,目前使用的是版本 2。
renderer:指定后端工具,networkd 使用 systemd-networkd,而 NetworkManager 是另一种选择,通常用于桌面环境。
ethernets:表示以太网接口的配置。
enp0s3:指定网络接口名称(类似 ifconfig 中的网络接口)。
dhcp4: true:启用 IPv4 的 DHCP 动态分配。
dhcp6: true:启用 IPv6 的 DHCP 动态分配。
Netplan 的常用命令:
netplan apply:应用网络配置文件的更改,立即生效。
netplan generate:生成配置,测试 YAML 文件是否有语法错误。
netplan try:应用更改但允许用户在配置有问题时回滚,适合测试新的配置。

配置静态ip

network:version: 2renderer: networkdethernets:enp0s3:addresses:- 192.168.1.100/24gateway4: 192.168.1.1nameservers:addresses:- 8.8.8.8- 8.8.4.4

我们这里就是在enp0s3下的addresses项中添加ip地址,之后使用netplan apply应用即可。(建议使用netplan try)

添加路由

network:version: 2renderer: networkdethernets:enp0s3:addresses:- 192.168.1.100/24gateway4: 192.168.1.1routes:- to: 192.168.2.0/24via: 192.168.1.1

 就是在网卡enp0s3下的routes选项中添加:

-to:ip
via gw

意思是:去哪要通过哪个网关。

然后:

sudo netplan apply

netplan的运行和刚刚说的system-resolved的关系 

Netplan 将配置应用到 systemd-networkd 后端。
systemd-networkd 配置网络接口 enp0s3 的 IP 地址、网关,并将 DNS 服务器(8.8.8.8 和 8.8.4.4)告知 systemd-resolved。
systemd-resolved 负责解析 DNS 查询,当系统中任何程序进行 DNS 查询时,它们会通过 127.0.0.53(/etc/resolv.conf 中配置的 DNS 服务器)向 systemd-resolved 发起查询。
systemd-resolved 将查询请求转发到实际配置的 DNS 服务器(如 8.8.8.8)并返回结果。
5. Netplan 与 systemd-resolved 的配置交互:
Netplan 提供 DNS 设置:Netplan 中的 nameservers 字段用于配置 DNS 服务器。这个配置通过 Netplan 传递到 systemd-networkd 或 NetworkManager,然后再传递到 systemd-resolved。

systemd-resolved 管理 DNS 请求:systemd-resolved 监听本地地址 127.0.0.53,处理所有传入的 DNS 请求,并将它们路由到合适的外部 DNS 服务器(如 Netplan 配置的 DNS 服务器)。

 

相关文章:

Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人

本文讲解了Ubuntu下网络由什么管理&#xff0c;介绍了临时ip和路由的设置方法&#xff0c;介绍了静态持久化网络配置的方法以及各网络管理软件之间的关系。 来看看Ubuntu网络管理。 序言 原本学习ubuntu网络管理就是为了检查nginx安装过程中使用wget获取压缩包为什么解析不出…...

理解线程的三大特性:原子性、可见性和有序性

在并发编程中&#xff0c;保护线程安全是一个重要课题。要实现线程安全&#xff0c;我们必须理解并掌握三个核心概念&#xff1a;原子性、可见性和有序性。下面将详细介绍这三个特性及其解决方案。 一、原子性 原子性是指一个操作要么全部完成&#xff0c;要么完全不执行。在多…...

英特尔®以太网网络适配器E810-CQDA1 / E810-CQDA2 网卡 规格书 e810 网卡 规格书 Intel100G E810 网卡 白皮书

英特尔以太网800系列网络适配器 英特尔以太网网络适配器E810-CQDA1 / CQDA2 在10到100Gbps的以太网速度下实现高效的工作负载优化性能 关键特性 •单、双端口QSFP28 •应用设备队列(ADQ) •PCI Express (PCIe) 4.0 x16 •动态设备个性化(DDP) •以太网端口配置工具(EPC…...

好用的idea方法分隔符插件

好用的idea方法分隔符插件...

通过 Xshell 无法连接到 Ubuntu

无法通过 Xshell 连接到 Ubuntu 服务器&#xff0c;通常与 SSH 服务、网络连接、主机防火墙设置问题有关。以下是排查并解决这个问题的步骤&#xff1a; 1. 确保 SSH 服务正在运行 在 Ubuntu 上&#xff0c;SSH 服务必须启动才能连接。如果你有虚拟机或物理机的访问权限&…...

Java面试篇基础部分-Synchronized关键字详解

Synchronized关键字用于对Java对象、方法、代码块等提供线程安全操作。Synchronized属于独占式的悲观锁机制,同时也是可重入锁。我们在使用Synchronized关键字的时候,可以保证同一时刻只有一个线程对该对象进行访问;也就是说它在同一个JVM中是线程安全的。   Java中的每个…...

数据结构之线性表——LeetCode:67. 二进制求和,27. 移除元素,26. 删除有序数组中的重复项

67. 二进制求和 题目描述 67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 运行代码&#xff08;javaC) class Solution {public String addBinary(String a, String b) {StringBuilder ansnew StringBuilder();int ca0;for(i…...

SQL_HAVING小例子

例一 求众数的sql语句1&#xff1a; select income,count(*) as cnt from graduates group by income having count(*) > all(select count(*) from graduates group by income);这段SQL语句的作用是从一个名为graduates的表中找出income&#xff08;收入&#xff09;字段…...

Avalonia第三方UI库Semi.Avalonia用法详解

文章目录 简介一、安装Semi Avalonia二、基本项目结构三、使用基本控件1 按钮控件2 输入框控件3 选择框控件四、自定义样式和主题五、使用布局控件六、数据绑定七、事件处理八、使用图标和其他资源九、响应式设计十、交互与导航总结简介 Semi是一个基于Avalonia的UI库,旨在提供…...

宠物智能化听诊器的健康管理!

智能听诊器在宠物健康领域的应用正逐渐普及&#xff0c;它通过创新技术为宠物医疗保健带来革新。以下是智能听诊器如何影响宠物健康管理的概述&#xff1a; 数据分析与机器学习 智能听诊器利用深度学习算法&#xff0c;识别宠物心脏和呼吸模式&#xff0c;提供健康分析和诊断建…...

MyBatis-Plus 实体类注解

MyBatis-Plus 实体类注解详解 MyBatis-Plus 是 MyBatis 的增强版&#xff0c;旨在简化开发者的 CRUD 操作。它通过丰富的特性和注解&#xff0c;简化了数据库与 Java 实体类之间的映射。MyBatis-Plus 提供了一系列的实体类注解&#xff0c;帮助开发者更轻松地映射数据库表、字…...

如何写一个自动化Linux脚本去进行等保测试--引言

#我的师兄喜欢给我的休闲实习生活加活&#xff0c;说是让我在实习期间写一个自动化脚本去进行等保测试。呵呵哒。 怎么办呢&#xff0c;师兄的指令得完成&#xff0c;师兄说让我使用Python完成任务。 设想如下&#xff1a; 1、将Linux指令嵌入到python脚本中 2、调试跑通 …...

美团测开OC!

大家好&#xff0c;我是洋子&#xff0c;最近测试社区里面的一个25届同学参加秋招&#xff0c;已经拿到美团测开offer&#xff0c;今天来分享一下他的求职经历&#xff0c;文末附面经 他求职目前的进展如下&#xff1a; 互联网大厂&#xff1a;字节&#xff0c;阿里&#xff…...

HyperWorks的实体几何创建与六面体网格剖分

创建和编辑实体几何 在 HyperMesh 有限元前处理环境中&#xff0c;有许多操作是针对“实体几何”的&#xff0c;例如创建六面体网格。在创建实体网格的工作中&#xff0c;我们既可以使用闭合曲面创建实体网格&#xff0c;也可以使用完整的实体几何创建实体网格。与闭合曲面相比…...

项目实战:Ingress搭建Nginx+WP论坛+MariaDB

1. 网站架构 本次部署形式完全舍弃 Docker&#xff0c;将所有应用都置于Kubernetes&#xff0c;采用 Deployment 而非单 Pod 部署&#xff0c;稳定性得到升级。 2. 部署 MariaDB [rootk8s-master ~]# mkdir tdr [rootk8s-master ~]# cd tdr/ &#xff08;1&#xff09;定义 …...

UWA支持鸿蒙HarmonyOS NEXT

华为在开发者大会上&#xff0c;宣布了鸿蒙HarmonyOS NEXT将仅支持鸿蒙内核和鸿蒙系统的应用&#xff0c;不再兼容安卓应用&#xff0c;这意味着它将构建一个全新且完全独立的生态系统。 为此&#xff0c;UWA也将在最新版的UWA SDK v2.5.0中支持鸿蒙HarmonyOS NEXT&#xff0c…...

【齐家网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

MyBatis 基本概念

MyBatis 基本概念详解 MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制 SQL、存储过程以及高级映射&#xff0c;用于将 Java 对象与数据库中的记录进行映射。作为 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;MyBatis 的主要优势在于灵活性高&#xff0c;…...

前端开发之装饰器模式

介绍 装饰器模式 是在不修改对象内部结构的情况下&#xff0c;动态地给对象添加功能的一种设计模式。在软件开发中&#xff0c;有时候我们需要为已有对象添加一些额外的行为&#xff0c;但不希望修改该对象的代码&#xff0c;装饰器模式可以很好的满足这一需求。 在TypeScrip…...

【STL】pair 与 map:基础、操作与应用

C 标准库中提供了许多用于处理数据结构的容器和工具。pair 和 map 是两个非常有用的工具&#xff0c;广泛应用于存储和处理关联数据。在本文中&#xff0c;我们将详细介绍 pair 与 map 的相关操作&#xff0c;并结合代码实例为读者提供清晰的理解。 pair&#xff1a;成对数据的…...

深度学习-图像处理篇4VGG网络

CNN感受野...

初级css+初级选择器

一、css基础样式 html: 标签 > 网页骨架 css: 美化这个网页的骨架 >样式去装饰网页 1. css 层叠样式表 (英文全称: Cascading Style Sheets) >修饰网页内容 比如: 文字大小 颜色 网页排版 高宽等等 2. css写在哪里?——行内样式 内部样式 外部样…...

gitlab 的CI/CD (二)

前言 上文完成了gitlab-runner的基础配置及将gitlab的制品上传至软件包库&#xff08;产品库&#xff09;的脚本编写&#xff1b; 本文实现gitlab的ci/cd对远程服务器的操作&#xff1b; 介绍 要让Gitlab Runner部署到远程机器&#xff0c;远程机器必须信任gitlab runner账…...

【html】基础(一)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;js专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &am…...

【网站架构部署与优化】Nginx优化

文章目录 Nginx服务优化一、隐藏Nginx版本号&#xff0c;避免安全漏洞泄漏方法一&#xff1a;通过修改配置文件方法二&#xff1a;通过修改源码并重新编译安装 修改Nginx的用户和组修改用户与组 配置Nginx网页缓存时间配置Nginx连接保持的超时时间KeepAlive模式简介Nginx中的超…...

gitlab修改访问端口

目录 1.找到gitlab.rb文件&#xff0c;一般在/etc/gitlab/路径下 2.打开配置文件&#xff0c;加上代码 3.重新配置 4.重启gitlab 1.找到gitlab.rb文件&#xff0c;一般在/etc/gitlab/路径下 2.打开配置文件&#xff0c;加上代码 打开文件 sudo vi gitlab.rb 加上默认端口配…...

分库分表-分页排序查询

优质博文&#xff1a;IT-BLOG-CN 背景&#xff1a;我们系统上云后&#xff0c;数据根据用户UDL部分数据在国内&#xff0c;部分数据存储在海外&#xff0c;因此需要考虑分库查询的分页排序问题 一、分库后带来的问题 需求根据订单创单时间进行排序分页查询&#xff0c;在单表…...

【openwrt-21.02】openwrt PPTP Passthrough 不生效问题解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …...

【编程基础知识】Mysql的各个索引数据结构及其适用场景

一、引言 在数据库的世界中&#xff0c;索引是提升查询速度的超级英雄。就像图书馔的目录帮助我们快速找到书籍一样&#xff0c;MySQL中的索引加速了数据检索的过程。本文将带你深入了解MySQL索引的多种数据结构、它们的适用场景以及如何巧妙地使用它们来优化性能。 二、索引…...

解决IDEA出现:java: 程序包javax.servlet不存在的问题

问题截图&#xff1a; 解决如下&#xff1a; 1. 点击文件——>项目结构 2. 点击库——>点击——>点击java 3. 找到Tomcat的文件夹&#xff0c;找到lib文件夹中的servlet-api.jar&#xff0c;点击确定 4. 选择要添加的模块 5. 点击应用——>确定...