虚拟机同时连接内网 (通过网线连接到开发板) 和外网 (连接至Internet) 的一种解决办法
Posted 时栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机同时连接内网 (通过网线连接到开发板) 和外网 (连接至Internet) 的一种解决办法相关的知识,希望对你有一定的参考价值。
因为嵌入式实验需要搭建开发环境,因此需要将虚拟机通过网线连接到开发板,同时因为更新的需要,也要将虚拟机连接至Internet,所以写了一下自己的解决方法
注:我的虚拟机为VMware,装的是Linux系统(Ubuntu)
目录
虚拟机同时连接内网 (通过网线连接到开发板) 和外网 (连接至Internet) 的方法
背景知识:虚拟机的几种连接模式
( 此处引用了https://www.cnblogs.com/xuliangxing/p/7027124.html 的内容)
VMware 桥接模式
VMware桥接模式,是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。简而言之,这就好像在上图所示的局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问。桥接模式网络连接支持有线和无线主机网络适配器。如果你想把虚拟机当做一台完全独立的计算机看待,并且允许它和其他终端一样的进行网络通信,那么桥接模式通常是虚拟机访问网络的最简单途径。
VMware NAT模式
NAT,是Network Address Translation的缩写,意即网络地址转换。NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据"包裹",都会交由NAT网络适配器加上"特殊标记"并以主机的名义转发出去,外部网络返回的响应数据"包裹",也是先由主机接收,然后交由NAT网络适配器根据"特殊标记"进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。
此外,在一台主机上只允许有一个NAT模式的虚拟网络。因此,同一台主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的。
默认情况下,外部网络无法访问到虚拟机,不过我们也可以通过手动修改NAT设置实现端口转发功能,将外部网络发送到主机指定端口的数据转发到指定的虚拟机上。比如,我们在虚拟机的80端口上"建立"了一个站点,只要我们设置端口转发,将主机88端口上的数据转发给虚拟机的80端口,就可以让外部网络通过主机的88端口访问到虚拟机80端口上的站点。
VMware 仅主机模式
仅主机模式,是一种比NAT模式更加封闭的的网络连接模式,它将创建完全包含在主机中的专用网络。仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。相对于NAT模式而言,仅主机模式不具备NAT功能,因此在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet(在主机上安装合适的路由或代理软件,或者在Windows系统的主机上使用Internet连接共享功能,仍然可以让虚拟机连接到Internet或其他网络)。
在同一台主机上可以创建多个仅主机模式的虚拟网络,如果多个虚拟机处于同一个仅主机模式网络中,那么它们之间是可以相互通信的;如果它们处于不同的仅主机模式网络,则默认情况下无法进行相互通信(可通过在它们之间设置路由器来实现相互通信)。
1. 配置虚拟机的虚拟网络
虚拟机默认的VMnet0是桥接模式、VMnet8是NAT模式,下面对VMnet0(如果其他虚拟机有用到VMnet0,可以添加网络VMnet2、VMnet3、........只需把下面所有操作的VMnet0换成对应的网络即可)和VMnet8进行设置:
选择编辑->虚拟网络编辑器
点击更改设置,授予管理员权限:
将VMnet0设置为桥接模式,并且选择桥接到有线网卡(设备不一样,此处的有线网卡名称也不一样,只要确定是电脑上的有线网卡即可)
将VMnet8设为NAT模式
2.配置虚拟机设备:
在虚拟机->设置
首先将网络适配器设置为NAT模式
点击“添加”
选择“网络适配器”
将新添加的网络适配器的网络连接设置为 VMnet0
3.打开虚拟机,修改Linux的网络配置:
编辑网络设置文件,可以在Linux终端输入:
$ sudo gedit /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0 #我感觉eth0这么写不太严谨,但是不知道怎么修改,但是这个样子成功了
auto eth1 #根据具体要求设置
iface eth1 inet static
address 192.168.100.192
netmask 255.255.255.0
gateway 192.168.100.192
network 192.168.100.0
broadcast 192.168.100.255
dns-nameservers 192.168.100.192
重启网络服务,在终端输入:
sudo service network-manager restart
查看:(ifconfig)
附:在宿主机的cmd中查看,可以发现eth0连接到的是VMnet8:
4.检验
可以在虚拟机中ping一下两个网络,看是否连通。
以上是关于虚拟机同时连接内网 (通过网线连接到开发板) 和外网 (连接至Internet) 的一种解决办法的主要内容,如果未能解决你的问题,请参考以下文章