Linux三种网络方式

news2025/5/12 20:21:39

前言

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

参考文献

你管这破玩意叫网络?

桥接模式、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虚拟网卡主机也不能访问虚拟机。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2308632.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内部样式表 …

计算机毕业设计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…

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

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

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…

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

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

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

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

2025春新生培训数据结构(树,图)

教学目标&#xff1a; 1&#xff0c;清楚什么是树和图&#xff0c;了解基本概念&#xff0c;并且理解其应用场景 2&#xff0c;掌握一种建图&#xff08;树&#xff09;方法 3&#xff0c;掌握图的dfs和树的前中后序遍历 例题与习题 2025NENU新生培训&#xff08;树&#…

keil主题(vscode风格)

#修改global.prop文件&#xff0c;重新打开keil即可 # Keil uVision Global Properties File # This file is used to customize the appearance of the editor# Editor Font editor.font.nameConsolas editor.font.size10 editor.font.style0# Editor Colors editor.backgro…

使用Hydra进行AI项目的动态配置管理

引言:机器学习中的超参数调优挑战 在机器学习领域,超参数调优是决定模型性能的关键环节。不同的模型架构,如神经网络中的层数、节点数,决策树中的最大深度、最小样本分割数等;以及各种训练相关的超参数,像学习率、优化器类型、批量大小等,其取值的选择对最终模型的效果…