前言
在嵌入式开发中,我们经常使用VMware Workstation提供的两种虚拟机的上网方式,一种是桥接模式,另外一种是NAT模式,桥接模式可以获得公网IP(即和主机、开发板处于同一网段),而NAT只能是获取内网地址,如果未做端口映射配置, 那么通过虚拟机(如Ubuntu)可以访问主机和开发板,但反过来就不行。但其实我们可以添加端口映射,使得外网可以轻松的访问NAT模式下的虚拟机。下面就来讲下如何通过配置NAT端口映射,从而实现与开发板或主机之间的SSH和FTP双向通信。
配置环境
配置流程
首选,保证虚拟机处于开机状态,右击当前处于开机状态的虚拟机,选择“设置…”,进入设置页面:
将网络适配器修改为 “NAT模式” ,如下:
点击"确定"即可,此时正常虚拟机里的网络会重新自动获取,可通过“ifconfig”或者“ip addr show”查看,如下:
wxc@ubuntu:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.52.128 netmask 255.255.255.0 broadcast 192.168.52.255
inet6 fe80::ffea:9b5:f719:e69c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:24:77:2b txqueuelen 1000 (Ethernet)
RX packets 1540 bytes 1545437 (1.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 691 bytes 78583 (78.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 470 bytes 35886 (35.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 470 bytes 35886 (35.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后选择“编辑->虚机网络编辑器”:
选择VMnet8,点击"NAT设置(S)….":
按“添加(A)”按钮, 添加需要提供给外网(如开发板使用)的端口,比如我这边开放SSH和FTP端口,配置如下:
点击“确定”后,在“虚机网络编辑器”,点击“应用”,然后关闭窗口即可完成配置。
同时,将电脑的防火墙关闭,或者编辑Windows 防火墙允许的程序列表,否则可能会导致端口无法正常映射问,这里直接选择关闭防火墙,如下:
使用方法
如我当前的ip为“192.168.1.105”,如下:
一、通过SSH登录ubuntu虚拟机
以MobaXterm软件为例,选择“SSH”协议, 输入主机IP (注意:这里是主机的IP,不是虚拟机的IP)
点击“确定”,输入密码,即可登录到虚拟机,如下:
二、通过开发板传输文件给虚拟机
首先利用MobaXterm软件登录开发板,如下:
利用scp命令,通过主机IP(如192.168.1.105,注意这里不是输入迅疾IP),传输文件给虚拟机(如询问是否认证,输入YES),命令如下:
pi@raspberrypi:~ $ scp abc.c linux@192.168.1.105:/home/linux/
linux@192.168.1.105's password:
abc.c 100% 10 0.4KB/s 00:00
pi@raspberrypi:~ $
END