码迷,mamicode.com
首页 > 系统相关 > 详细

基于macOS+VMware的GNS3内VM上公网

时间:2019-03-18 23:48:00      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:配置   数据   实现原理   生效   macos   选择   就是   vmnet   cos   

技术图片

笔者经常需要做网络实验,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

技术图片

基于macOS+VMware的GNS3内VM上公网

标签:配置   数据   实现原理   生效   macos   选择   就是   vmnet   cos   

原文地址:https://blog.51cto.com/cyent/2364964

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!