基于macOS+VMware的GNS3内VM上公网
笔者经常需要做网络实验,GNS3就是笔者最喜欢用的模拟器,为了便于实验,需要能从macos上直接ssh登陆模拟出来的vm,并且vm需要上公网。经过研究,已解决此问题,并以此分享出来
tag: macos, vmware, gns3, vm上公网
小慢哥的原创文章,欢迎转载
环境说明
本文基于以下环境:
▷ 宿主:macOS Mojave
▷ GNS3版本:2.1.14
▷ GNS3内部的VM运行在:GNS3 VM里
▷ GNS3 VM运行在:VMware Fusion 专业版 11.0.1
▷ centos7.3是运行在GNS3 VM里的Qemu虚拟机
可以理解为在macOS上运行了VMware,在VMware里运行了GNS3 VM,在GNS3 VM里运行了Qemu虚拟机。
对,就是"俄罗斯套娃"。
想让GNS3内的VM上Internet公网,有2种方法,接下来分别详细讲解
方法1(内置)
GNS3内置一个nat cloud,只要将vm连上这个nat cloud就可以上公网(上图中的Nat1就是nat cloud)
实现原理:nat cloud会对数据包进行SNAT,将源IP转换成macOS上出公网对应的本机ip。比如macOS是用wifi上网,wifi dhcp分配给macOS的ip是192.168.1.10,那么nat cloud就会将自己的ip出公网数据包的源IP转换为192.168.1.10
▪ 优点:无需任何额外配置,GNS3内置实现
▪ 缺点:无法从macOS上直接ssh连接到vm(即图上的centos7.3-1,本文接下去的部分若无特殊说明,均用vm表示),只能通过vnc连接
方法2(推荐)
采用vmnet + GNS3 VM加网卡 + 自定义cloud + pfctl + 开启ip_forward
▪ 优点:vm不仅可以上网,还可以从mac上连接到vm里做管理
▪ 缺点:配置相对复杂,需要对macos、vmware、gns3、网络原理有一定了解
1️⃣ vmware偏好设置里新增一张网卡,这里为vmnet2,然后按下图所示进行配置
▷ “允许该网络上的虚拟机连接到外部网络(使用NAT)”不要勾选,因为测试发现bug(比如虚拟机里访问Internet公网,响应时有时无,延时也很严重,怀疑是GNS3 VM的bug)
▷ “将Mac主机连接到该网络”要勾选,这样在macos上才能出现vmnet2网卡
▷ 子网IP是自动生成的,这里是172.16.71.0/24,对应macos上vmnet2的ip是172.16.71.1/24
2️⃣ GNS3 VM加网卡
在vmware里打开GNS3 VM的配置,添加一张网卡,如下图红框里的网络适配器3就是笔者添加的网卡
3️⃣ 自定义cloud
如下图,要选择“Run the cloud node on the GNS3 VM”
名字任意,这里叫做mgr-cloud
注意,只需要将eth2(即上一步新增的网络适配器3)Add进来
4️⃣ 在macos上通过pfctl配置nat,以及允许vmnet2流量进出
a. sudo vim /etc/pf.anchors/vmware-gns3,内容如下
图上的en7是笔者mac上的有线网卡,en0是我mac上的wifi网卡(因为在公司是用有线网卡,在家里是用wifi上网,所以按上面这样配置2条,就无需担心网络切换会导致nat失败)
b. sudo vim /etc/pf.conf,内容如下(红框内容是需要增加的)
c. 校验配置文件并生效:
# 校验 sudo pfctl -vnf /etc/pf.anchors/vmware-gns3 sudo pfctl -vnf /etc/pf.conf # 生效 sudo pfctl -ef /etc/pf.conf
pfctl会在mac开机时自动执行,无需每次都手工执行
5️⃣ 开启ip_forward
sudo sysctl -w net.inet.ip.forwarding=1
注意:该命令在mac重启后就会失效,因此在使用GNS3时候需要手工执行一次
测试
方法1不符合需求,就不再赘述
方法2的测试:此时,vm里应该已经通过dhcp获得ip地址,并且可以直接从mac上ssh登陆vm。然后在vm里只需要手工增加一条网关(网关指向mac上vmnet2的ip,笔者环境对应的是172.16.71.1),就可以通过mac上公网。另外,vm里的dns需要手工配置(比如指向8.8.8.8)
附:多台vm上公网
如果需要多台vm上公网,可以自行添加一个hub或switch
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何跳过es分页这个坑?
1、分页查询 1.1、 正常分页查询代码如下 假设现在你要查询第100页的10条数据,但是对于es来说,from=1000000,size=100,这时 es需要从各个分片上查询出来10000100条数据,然后汇总计算后从其中取出100条。如果有5个分片则需要查询出来5*10000100条数据,如果现在有一个100个查询请求呢,50亿左右的数据,一条数据2KB,就需要9000G左右的内存,什么样的机器能够支持这么庞大的查询,所以如果你在使用es的分页查询过程中,刚开始翻页可能速度比较快,可能到第一百页查询就需要4-5s,翻到1000页以后,直接报错了。 NativeSearchQueryBuilder query = new NativeSearchQueryBuilder(); if(!StringUtils.isEmpty(ulqBean.getStartTime()) && !StringUtils.isEmpty(ulqBean.getEndTime())) { query.withQuery(QueryBuilders.rangeQuery("logTime"...
- 下一篇
Choerodon猪齿鱼实践之应用生命周期管理
Choerodon平台中的开发和部署都是围绕应用来进行的,那Choerodon平台中的应用有什么样的特性?又是怎样来进行管理的呢?本文旨在深入地介绍Choerodon平台中应用的功能特性及其生命周期的管理。 微服务架构中应用的特征 在谈起Choerodon平台中的应用时,就不得不提微服务。正是因为微服务的出现,之前的单体应用架构带来的问题才得以解决,具体问题如下: (1)耦合程度随时间推移而逐渐提高。 (2)扩展性差,冗余能力差 (3)模块划分不清晰,无法细化对系统资源的需求 (4)维护成本随着系统的日益臃肿而不断增加 而下图也更为直观地指出了单体应用架构与微服务架构的区别。 由此可见,微服务架构中的应用会被分解为更小、完全独立的组件,这使得它们拥有更高的敏捷性、可伸缩性和可用性。换句话说,微服务架构的基本思想就是“围绕业务领域组件来创建应用,让应用可以独立地开发、管理和加速。 Choerodon平台中应用生命周期的管理 由于Choerodon平台采用的是微服务架构,因此系统内每个功能模块均被解耦为多个应用,其中每个应用都支持独立地开发和独立地部署。而Choerodon平台中一个应用的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7