三种环境下,没有公网ip的虚拟机访问公网的方法

1. windows真机+vmware虚拟机

2. 云平台,虚拟机A(有公网ip,有内网ip)+虚拟机B(只有内网ip)

3. linux真机+kvm虚拟机

------------------------------------------------------------------------------

第一种:windows真机+vmware虚拟机

这个在前一篇文章已列出

VMware虚拟机连接公网,和WindTerm_单机版vm 上网-CSDN博客

补充两点:

a.  vmware的eth0可以不用dhcp自动分配的那个内网ip,只用手动设置的那个eth0的内网ip也行

b.  如果要多台虚拟机都连接公网,其实都配置的和第一台网络模式一样就可以。为什么说这个?因为管理员可能会考虑,其他的虚拟机,通过第一台虚拟机来访问公网。不用这样。其他虚拟机也是一张网卡和windows真机NAT,一张网卡用来连接windterm就行。相当于所有虚拟机网络模式都是差不多一样的,内网ip地址不一样就行了。

-----------------------------------------------------------------------------------

第二种: 云平台

云平台的虚拟机,也称为云主机

云主机是以kvm虚拟化技术为底层原理,利用openstack等平台性技术,动态给用户调度虚拟机资源。

实际操作:环境准备,两个内网主机不在同一个subnet

1. 给A主机所在子网,新建一个自定义路由表,创建后关联A主机所在子网

2. 配置B主机所在子网的路由表,公网目的:0.0.0.0/0,下一跳类型:云服务器,下一跳:A主机的内网ip

3. 配置A主机的NAT,rps

4. NAT脚本开机自启

为什么两个主机要在不同子网?

因为在相同子网的话,不会触发NAT规则。

这个A主机作为网关,其实可以理解为一个路由器,路由器本身连接的A主机的子网,比如192.168.1.0/24,这个网段的是可以访问公网的,所以如果B主机也是这个网段的IP,网关则默认为它也是可以访问公网的,就不会触发修改源IP的这个NAT规则。而云平台又默认为只有A主机才可以直接访问公网,因为公网IP绑定的是这个主机,不是这个网段。所以,B主机要用NAT模式,把A主机当做路由器的话,就不能和A主机在同一个subnet。如果B主机和A主机在同一个subnet了,就不会触发A主机的NAT规则。

从内核层面来讲,用iptables来调整四表五链的时候

也就是说,内核处理网络流量是有四张表五个链来处理的,其中一张表是NAT表,

NAT(network address translation)网络地址转换

在input链,B主机和A主机的内网ip属于同一个子网,那么B主机的数据包就不会进入NAT表,不会用net.ipv4.ip_forward这个参数,路由会像对待A主机的数据包一样,直接往公网发,所以就没有触发NAT规则。

如果B主机和A主机不在一个子网,那么B主机的流量到达路由,路由就会根据NAT规则,对这个非本机子网的数据包进行源地址转换。以NAT的方式访问公网

再往细了讲,我们需要对四表五链进行详细的分析

以及四表五链在内核的设计上是如何实现的,

需要对内核编译和内核代码的实现逻辑进行分析

再往细了讲,内核的代码编译之后和cpu指令集的交互逻辑

就可以说明四表五链的底层工作原理

通过四表五链再往应用层,就能清晰理解数据包的转发逻辑

由于内容较多,本篇文章暂不往代码层分析。

以应用的实现逻辑为主。

掌握这些,可以实现功能,对于用户来讲可以专注于服务的实现。

对于底层代码,可以看Linux内核源码

配置方法可以参考:

【云服务器 配置公网网关-操作指南-文档中心-腾讯云】 https://cloud.tencent.com/document/product/213/38839?from=copy

---------------------------------------------------------------------------------------------------

第三种:linux真机+kvm虚拟机

因为kvm虚拟机是搭建的虚拟网桥,网桥模式可以设置为nat,连接这个网桥的kvm虚拟机就可以连接公网。

自己手动做一个虚拟机,需要一个虚拟配置文件.xml,声明虚拟机需要的cpu内存网卡等信息

还需要一个存储文件.img,这个文件相当于一个硬盘,这个文件里面需要有一个可以启动的操作系统。

虚拟机做好之后,连接nat的网桥,就可以通过linux真机访问公网。

linux真机如果安装了图形界面,也可以通过kvm虚拟机管理器,来图形化操作创建虚拟机。

总的来说,在Linux真机上创建kvm虚拟机,虚拟机连接公网是比较方便的。

48c5ecea8eff4b5cba89528e2a038647.png

参考:

libvirt: Network XML formatlibvirt, virtualization, virtualization APIicon-default.png?t=O83Ahttps://libvirt.org/formatnetwork.html#nat-based-network

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440292.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 springboot vue中学生日常行为评分管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析

目录 前言HttpServlet &FrameworkServletHttpServlet #serviceFrameworkServlet#processRequest DispatcherServlet#doServicedoDispatchcheckMultipartgetHandlerAbstractHandlerMapping#getHandlerRequestMappingInfoHandlerMapping#getHandlerInternalAbstractHandlerMe…

Dit架构 diffusion范式分类+应用

1.ping 网址 2.ssh nscc/l20 3.crtl,打开vscode的setting 4.win 10修改ssh配置文件及其密钥权限为600 - 晴云孤魂 - 博客园 整体来看: 使用transformer作为其主干网络,代替了原先的UNet 在latent space进行训练,通过transformer处理潜…

Spring MVC__@RequestMapping注解、获取请求参数、域对象共享数据、视图、Restful

目录 一、RequestMapping注解1、RequestMapping注解的功能2、RequestMapping注解的位置3、RequestMapping注解的value属性4、RequestMapping注解的method属性5、RequestMapping注解的params属性(了解)6、RequestMapping注解的headers属性(了解…

动手学大模型应用开发之大模型简介

动手学大模型应用开发之大模型简介 主要学习目标什么是大语言模型大模型的能力和特点涌现能力作为基座模型支持多元应用的能力支持对话作为统一入口的能力大模型特点 常见大模型ChatGpt通义千问 LangChainLangChain的核心模块 总结相关学习链接 主要学习目标 学习如何进行大模…

【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

大家好,我是冰河~~ 自己搭建的网站刚上线,短信接口就被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,加上最近工作比较忙,就直接在OpenResty上对短信接口做了一些限制&am…

GeoCue与Xer Technologies合作推动无人机测绘技术革新

GeoCue与Xer Technologies合作推动无人机测绘技术革新 近期,LiDAR测绘硬件和软件开发商GeoCue与瑞士长航时混合动力无人机制造商Xer Technologies AG携手合作,成功将GeoCue的TrueView 720 LiDAR和图像传感器集成至Xer X8无人机平台。这一里程碑式的合作不仅标志着无人机测绘技…

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框(选项菜单)是十分常见的功能。Excel支持下拉框制作,通过预设选项进行菜单选择,可以避免手动输入错误和重复工作,提升数据输入的准确性和效率 1、下拉菜单制作 步…

【简码短链】使用Selenium实现UI自动化测试

1.环境准备 Chrome浏览器 版本为版本 129.0.6668.90(正式版本) (64 位) 129版本的Chrome浏览器的驱动,将webdriver放到jdk所在的bin目录下 在命令行中输入:chromedriver验证是否成功 打开IDEA,创建Maven项目,在pom.xml导入所需…

idea 同一个项目不同模块如何设置不同的jdk版本

在IntelliJ IDEA中,可以为同一个项目中的不同模块设置不同的JDK版本。这样做可以让你在同一个项目中同时使用多个Java版本,这对于需要兼容多个Java版本的开发非常有用。以下是设置步骤: 打开项目设置: 在IDEA中,打开你…

自建RustDesk服务器:详细步骤与操作指南

在远程办公和协作日益普及的今天,远程桌面软件成为了不可或缺的工具。然而,许多知名的远程桌面软件,在免费使用一段时间后,会通过限制连接数量、时长或在特定网络环境下的可用性来促使用户付费升级,而且其会员非常昂贵…

【stm32】ADC的介绍与使用

ADC的介绍与使用 1、ADC介绍2、逐次逼近型ADC3、ADC电路4、ADC基本结构程序代码编写:ADC 通道和引脚复用的关系 5、转换模式(1)单次转换,非扫描模式转换流程:程序编写: (2)连续转换&…

详细分析Spring Security OAuth2中的JwtAccessTokenConverter基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 JwtAccessTokenConverter 是 Spring Security OAuth2 中的一…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言,具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言,运行代码必须依赖安装好的解释器。Python目前存在两个版本:Python2、Python3(主流使用) 二、环境搭建 1.安装P…

<<迷雾>> 第8章 学生时代的走马灯(3)--走马灯 示例电路

几个首尾相连的触发器使用同一个控制端,能同时触发 info::操作说明 鼠标单击开关切换开合状态 注: 其中 CP 为按钮开关, 每点击一次, Q 的输出前进一级 注: 第一个触发器的输出端 Q 需要先置入高电平. 如果重置了电路, 可外接电源先使第一个 Q 置入高电平. 另: 因为…

深度学习:5种经典神经网络模型介绍

目录 1. LeNet:CNN的鼻祖 2. AlexNet:深度学习的开山之作 3. VGGNet:深度与简洁的结合 4. GoogLeNet:Inception模块的创新 5. ResNet:残差学习的革命 卷积神经网络(CNN)已经发展为图像识别…

棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程

一、前言 【试用版软件下载,可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验,顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…

梯度下降学习

前言:初步学习梯度下降, 不断根据梯度修改我们的参数,经过多次轮次得到使得我们损失函数最小的时候参数,后续我们可以通过类似的道理,更新我们的参数 假设我们的损失函数是 y x 1 2 x 2 2 y x1^2 x2^2 yx12x22,我…

用Python实现运筹学——Day 14: 线性规划总结与案例复习

一、学习内容 在本节中,我们将复习之前所学的线性规划模型与求解方法,并通过一个综合案例将这些知识应用于求解一个多阶段的生产计划问题。 主要复习内容包括: 线性规划的基础概念:目标函数、约束条件、决策变量。求解方法&…

什么是 HTTP 请求中的 preflight 类型请求

在浏览器的 HTTP 请求中,当我们使用 fetch API 或者 XMLHttpRequest 来进行跨域请求时,浏览器有时会发送一种称为 Preflight 的请求。这种请求是浏览器在实际发送跨域请求前,先与目标服务器进行的一次 “探测” 请求,以确认服务器…