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

Linux三种网络方式

前言

发现运维啥都得会,这周就遇到了网络问题自己无法解决,因此痛定思痛学一下。

参考文献

你管这破玩意叫网络?

桥接模式、NAT模式、仅主机模式,原来是这样工作的

交换机

构成局域网,实现所有设备之间的通信。

在这里插入图片描述

因此通信就非常方便了,只需要写明目标物理地址,通过交换机进行转发,就可以达到想要通信的电脑。

路由器

作为一台独立的拥有Mac地址的设备,并且可以把数据包进行一次转发,路由器的每个端口都有独立的Mac地址。

在这里插入图片描述
此时192.168.0.10要和192.168.1.30通信,怎么知道是需要通过路由器进行转发呢?

  • 如果源IP目的IP在同一个子网,直接将包通过交换机发出去。
  • 如果源IP目的IP不在同一个子网,就交给路由器去处理。

192.168.0.x比如192.168.0.2就和192.168.0.10在同一个子网。
实际上是通过子网掩码进行与运算的结果对比是否在同一个子网。

还有一个问题就是如何知道哪个设备是路由器呢?
需要在192.168.0.10上面配置默认网关,一旦发现在不同子网,就将数据发给默认网关的设备。
在这里插入图片描述

NAT技术

NAT技术,可以帮助局域网设备通过私有IP地址访问局域网。

  1. 私有IP地址:在一个局域网中,通常使用私有IP来为设备分配网络标识。这些地址范围是在互联网上不是唯一的,因此不能直接通过互联网访问。
  2. 公共IP地址:公共IP地址是全球范围内唯一的。
  3. NAT转换:当局域网设备通过路由器的WAN口访问互联网时,NAT技术将私有IP地址转为公共IP地址。

​外网进WAN,内网接LAN

  1. 路由表:NAT(比如路由器)会维护一个NAT转换的路由表记录每个局域网设备的私有IP地址和对应的公共IP地址、端口号。这样,当互联网上的响应数据包返回时,路由器可以根据路由表中的信息将数据包正确转发到对应的局域网设备。
  2. 端口转发:NAT技术还支持端口转发(PortForwarding,允许外部网络访问局域网中特定设备的特定端口。通过在路由器上配置端口映射规则,路由器可以将外部网络的请求转发到局域网设备的私有IP地址和端口上

普通设备(电脑/手机)​一般只有私网IP,除非特殊网络环境(如直连光猫、双网卡)。
通过ipconfig查看
在这里插入图片描述
路由器/网关设备:通常同时拥有公网IP(对外)和私网IP(对内)。
路由表
在这里插入图片描述
端口转发
在这里插入图片描述

桥接模式

linux 如何查看网卡配置是桥接还是nat还是其他
请参考桥接模式的图

在这里插入图片描述

桥接模式下,虚拟机会直接“插”在你的物理网线上,就像你家里新买了一台电脑,直接用网线连到路由器上一样——它和物理机是完全平等的“邻居”,共用同一个物理网络。

为什么需要同一网段、相同网关/DNS

  • 同一网段:就像你家的所有设备(手机、电脑)必须连到同一个路由器(比如 192.168.1.x)。
  • 相同网关:网关就是路由器的IP(比如 192.168.1.1),所有设备都要通过它上网。
  • 相同DNSDNS是“地址簿”,虚拟机要和物理机用同一个地址簿(比如 8.8.8.8)才能找到网站。

关于DNS在这里可以多说一点关于我自己的理解:

一个域名,可以访问到成百上千台服务器。那么我们怎么知道到底要访问哪一台呢?

负载均衡,轮询的方式,一台一台的访问。

为什么没有 VMnet0 虚拟网卡?

桥接模式直接使用物理网卡,不需要虚拟网卡做中间人。

  • 对比NAT模式:NAT模式相当于虚拟机“躲在”物理机后面,通过物理机的虚拟网卡(如 VMnet8)上网,所以需要虚拟网卡。
  • 桥接模式:虚拟机自己“光明正大”用物理网卡,直接和路由器对话。

实操一下

在这里插入图片描述
vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static       # 更改为静态,为什么要调成静态呢?因为DHCP分配IP,比如这个时候你是9过一会又变成10,连接就会变得很麻烦
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.1.200    # 虚拟机的静态ip,一定要按 主机的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 主机 的子网掩码一致
GATEWAY=192.168.1.1   # 和 主机 的网关IP一致
DNS1=192.168.1.1      # 和 主机 的网关IP一致

重启一下网络service network restart
在这里插入图片描述
虚拟机
在这里插入图片描述
主机
在这里插入图片描述
那么为什么虚拟机ping不同主机呢?
在这里插入图片描述
我又有一个想法虚拟机是不是可以也可添加防火墙,额之前防火墙忘记开启了。现在开启了再试一下。

systemctl start firewalld
systemctl status firewalld

在这里插入图片描述
那么专门隔绝一下主机IP访问再看看。

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.165" reject'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

在这里插入图片描述
在这里插入图片描述

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.165" reject'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

说实话我现在不太会,等学会了补上。

NAT网络

linux 如何查看网卡配置是桥接还是nat还是其他
请参考NAT网络模式的图
在这里插入图片描述

NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。

相比桥接模式,多了虚拟NAT设备虚拟DHCP服务器虚拟网卡

虚拟交换机目的是为了搭建一个局域网,会把所有虚拟机和VMware Network Adapter VMnet8搭建在一个局域网内,虚拟机和VMware Network Adapter VMnet8可以互联互通的,主机可以通过虚拟网卡VMware Network Adapter VMnet8访问到虚拟机,但是虚拟机不能直接通过虚拟网卡VMware Network Adapter VMnet8访问到主机网卡的,因为不通也不在同一个网段,虚拟机想要访问主机网卡需要通过NAT设备。

所以主机和虚拟机是互通的,但是走的链路不同。

实操一下

在这里插入图片描述
在这里插入图片描述

BOOTPROTO=static       # 更改为静态
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.111.15    # 虚拟机的静态ip,一定要按 VMnet8 的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 VMnet8 的子网掩码一致
GATEWAY=192.168.111.2   # 和 VMnet8 的网关IP一致
DNS1=192.168.111.2      # 和 VMnet8 的网关IP一致

service network restart
经过测试,虚拟机和主机相互都能通信,并且都可以访问外网。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

端口转发

此路不通,可以走另一条路。

可以把外部的请求转发到局域网内,主机的网卡,相当于虚拟机的集群来说就是一个外部的设备,VMware Network Adapter VMnet8禁用以后不能通过虚拟网卡访问虚拟机。
如果想通过主机的网卡访问到虚拟机,需要在NAT设备配置端口转发
在这里插入图片描述
这个操作就是把主机的80端口,转发到虚拟机的192.168.111.15的22端口
在这里插入图片描述
在这里插入图片描述
路线就是这样的通过主机网卡->NAT设备(端口转发)->虚拟机。注意此时被VMware Network Adapter VMnet8禁用了

仅主机模式

仅主机模式可有看成是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
在这里插入图片描述
虚线代表着不能通信。
虚拟机不能访问主机的网卡,主机可以通过VMware Network Adapter VMnet1虚拟网卡访问到虚拟机,

在这里插入图片描述
vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static       # 更改为静态
ONBOOT=yes             # 设置开机⾃动启⽤⽹络连接
IPADDR=192.168.222.15    # 虚拟机的静态ip,一定要按 VMnet1 的实际网络情况进行配置,不和已有的冲突即可
NETMASK=255.255.255.0  # 和 VMnet1 的子网掩码一致

service network restart
在这里插入图片描述
当然关闭了VMware Network Adapter VMnet1虚拟网卡主机也不能访问虚拟机。

总结

所有结论都需要反复测试!如果有错误欢迎指正!一起努力!
如果喜欢的话,请点个赞吧就算鼓励我一下。

相关文章:

Linux三种网络方式

前言 发现运维啥都得会,这周就遇到了网络问题自己无法解决,因此痛定思痛学一下。 参考文献 你管这破玩意叫网络? 桥接模式、NAT模式、仅主机模式,原来是这样工作的 交换机 构成局域网,实现所有设备之间的通信。 …...

计算机网络之传输层(传输层提供的服务)

一、可靠的数据传输 传输层提供可靠的数据传输服务,确保数据在传输过程中不丢失、不重复、不乱序,并且能够被正确接收。这通常通过面向连接的协议(如TCP)来实现,TCP通过确认、重传、序号等机制来保证数据传输的可靠性…...

Ubuntu 防火墙iptables和 ufw

文章目录 iptables 和 ufw 的区别Ubuntu 上使用 ufw 配置 iptables 和 ufw 的区别 iptables 和 ufw 是 Linux 系统中用于管理防火墙的工具,但它们的设计目标和使用方式有所不同。 iptables:功能强大,适合高级用户和复杂场景,但配…...

11天 -- Redis 中跳表的实现原理是什么?Redis 的 hash 是什么?Redis Zset 的实现原理是什么?

Redis 中跳表的实现原理是什么? Redis 中的跳表(Skip List)是一种基于有序链表的高效数据结构,通过在链表上增加多级索引来提高数据的查找效率。以下是 Redis 中跳表的实现原理: 1. 基本概念 节点结构:跳…...

JavaWeb——HTML

一、什么是HTML HTML(HyperText Markup Language):超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息还可以定义图片,音频,视频等。标记语言:由标签构成的语言 HTML语言都是预定义好…...

Spring DIIoC

一.IoC 1.简介 什么是IoC?IoC,全称 Inversion of Control,控制反转。IoC是Spring的核心思想,Spring是⼀个“控制反转”的容器。 如果我们需要一个对象,正常来说我们是通过new一个对象,这个时候我们依赖的…...

【前端基础】Day 2 CSS层叠样式表

目录 1.CSS简历 2.CSS 基础选择器 2.1标签选择器 2.2类选择器 2.3 id选择器 2.4通配符选择器 2.5总结 3.CSS字体属性 字体属性总结 4.CSS文本属性 4.1颜色 4.2对齐文本 4.3装饰文本 4.4文本缩进 4.5行间距 4.6文本属性总结 5.CSS的引入方式 5.1内部样式表 …...

建易WordPress

建易WordPress是一家专业的WordPress建站服务提供商,专注于为企业和个人提供一站式的WordPress网站建设、维护、托管、运营推广以及搜索引擎优化(SEO)服务。 服务内容 1. 网站建设 提供模板建站和定制开发两种服务,满足不同客户的需求。模板建站价格为…...

计算机毕业设计SpringBoot+Vue.js汽车资讯网站(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

nuxt常用组件库html-validator、@nuxtjs/i18n、@nuxt/image、@unocss/nuxt使用解析

html-validator 主要用于自动验证nuxt服务器呈现的HTML(SSR和SSG),以检测可能导致水合错误的HTML常见问题,有助于减少水合错误,检测常见的可访问性错误。 安装 npx nuxilatest module add html-validator配置 若自动更新nuxt.config.ts配置文…...

Leetcode-最大矩形(单调栈)

一、题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 输入:matrix [["1","0","1","0","0"],["1","0&…...

Vue核心知识:动态路由实现完整方案

在Vue中实现动态路由,并结合后端接口和数据库表设计,是一个复杂的项目,需要多个技术栈和步骤的配合。以下将详细描述整个实现过程,包括数据库设计、后端接口设计、前端路由配置以及如何实现动态路由的功能。 目录 一、需求分析二…...

【Docker】使用Docker搭建-MySQL数据库服务

零、更换Docker镜像源 因为国内现在封锁了Docker默认拉取镜像的站点(DockerHub),而且国内大部分Docker镜像站已全部下线,导致现在很多朋友在拉取镜像的时候会出现无法拉取的现象,这时候就需要进行更换Docker镜像源。 可…...

DHCP配置和地址

DHCP:动态主机配置协议 DHCP系统组成 DHCP报文结构 DHCP报文类型 DHCP工作流程 DHCP租期更新 DHCP重绑定 自动保留IP 租期设置建议 IP地址释放 DHCP地址池 DHCP配置 DHCP接口地址池配置 DHCP全局地址池配置...

基于trl复现DeepSeek-R1的GRPO训练过程

1. 引入 huggingface开发了强化学习训练Transformer的库trl(参考3),借助这个trl,可以用来做GRPO的强化学习训练。魔搭ModelScope社区的文章(参考2)给出了基于Qwen基座模型Qwen2.5-0.5B-Instruct&#xff0…...

常用的 pip 命令

pip 是 Python 的包管理工具,可用于安装、卸载、更新和管理 Python 包。以下是一些常用的 pip 命令: 1. 安装包 安装最新版本的包 pip install package_namepackage_name 是你要安装的 Python 包的名称,例如 pip install requests 可以安装…...

基于C#的CANoe CLR Adapter开发指南

一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具,它支持多种编程接口,方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互,充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...

eMMC安全简介

1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言, 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性(Confidentiality)、完整性(Integr…...

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(六) 导航栏 和 个人信息设置

1.导航栏(navbar) 在components下面 创建NavBar.jsx import { MessageSquare,Settings,User,LogOut} from "lucide-react" import {Link} from "react-router-dom" import { useAuthStore } from "../store/useAuthStore&qu…...

c#实现modbus rtu定时采集数据

以下是使用C#实现Modbus RTU定时采集数据的完整代码示例,包含定时任务、数据采集和异常处理: csharp 复制 using System; using System.IO.Ports; using System.Timers;public class ModbusRtuCollector : IDisposable {private readonly SerialPort _serialPort;private …...

【Python 语法】Python 数据结构

线性结构(Linear Structures)1. 顺序存储列表(List)元组(Tuple)字符串(String) 2. 线性存储栈(Stack)队列(Queue)双端队列&#xff08…...

数据库MySQL,在终端输入后,提示不是内部命令等

【解决问题】mysql提示不是内部或外部命令,也不是可运行的程序 一般这种问题是因为没有在系统变量里面添加MySQL的可执行路径 以下是添加可执行路径的方法: 第一步:winR输入services.msc 然后找到MySQL,右击属性并复制MySQL的可执…...

docker和containerd从TLS harbor拉取镜像

私有镜像仓库配置了自签名证书,https访问,好处是不需要处理免费证书和付费证书带来的证书文件变更,证书文件变更后需要重启服务,自签名证书需要将一套客户端证书存放在/etc/docker/cert.d目录下,或者/etc/containerd/c…...

《从0到1:用Python在鸿蒙系统开发安防图像分类AI功能》

在人工智能与移动应用深度融合的当下,类目标签AI功能成为众多行业提升效率和用户体验的关键技术。本文聚焦于HarmonyOS NEXT API 12及以上版本,以图像分类在智能家居安防领域的应用为例,为开发者详细阐述如何利用Python开发类目标签AI功能,助力鸿蒙技术在该领域的创新应用。…...

C语言生成二维码

1. 效果 2. 需要的代码&#xff08;QRCode&#xff09; qrcode.cqrcode.h 代码 3. 代码 #include <stdio.h> #include "qrcode.h"int main() {//拓展编码SetConsoleOutputCP(437);QRCode qrcode;uint8_t qrcodeBytes[qrcode_getBufferSize(3)];qrcode_initT…...

Spring Boot 消息队列(以RabbitMQ为例)

文章目录 RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装 Spring Boot 集成 RabbitMQ1. 创建 Spring Boot 项目2. 配置 RabbitMQ3. 定义消息队列和交换机4. 发送消息5. 接收消息6. 测试消息发送和接收 RabbitMQ 简介与安装 1. RabbitMQ 简介 RabbitMQ 是一个开源的消息…...

[Web 安全] PHP 反序列化漏洞 —— POP 链构造思路

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 0x01&#xff1a;什么是 POP 链&#xff1f; POP 链&#xff08;Payload On Purpose Chain&#xff09;是一种利用 PHP 中的魔法方法进行多次跳转以获取敏感数据的技术。它通常出现在 CTF…...

商城源码的框架

商城源码的框架通常是基于某种Web开发框架或者电子商务平台来构建的。以下是一些常见的商城源码框架&#xff1a; WooCommerce&#xff1a;基于WordPress的电子商务插件&#xff0c;适用于小型到中型的在线商店。 Magento&#xff1a;一个功能强大和灵活的开源电子商务平台&am…...

记录深度学习中有用的终端命令

1 查看 CUDA 版本 如果你安装了 CUDA 开发工具包&#xff0c;你可以使用 nvcc 命令来查看 CUDA 的版本。 打开终端&#xff08;或命令提示符&#xff09;&#xff0c;运行&#xff1a; nvcc --version 2. 监控 GPU 状态 使用 nvidia-smi 命令&#xff0c;nvidia-smi 是一个…...

深度探索推理新境界:DeepSeek-R1如何用“自学”让AI更聪明?

今天我们要聊从1月初火到现在的AI模型——DeepSeek-R1。它就像一个“自学成材的学霸”&#xff0c;不用老师手把手教&#xff0c;就能在数学、编程、逻辑推理等领域大显身手&#xff01;仔细阅读了深度求索发表的R1论文&#xff0c;发现它不仅揭秘了它的成长秘籍&#xff0c;还…...