1.桥接

桥接方便做实验,配置ip方便。可以和局域网中的其他机器进行通信,也可以和公网进行通信。缺点是会占用主机所在局域网的一个ip。

2. NAT

NAT模式下虚拟机可以和主机进行通信,可以上网,而且不占用局域网的IP,但是不能和其他机器进行通信。(使用虚拟网卡8)

配置虚拟机NAT模式上网

2.1 虚拟机NAT模式上网的原理

当我们安装了VMware Workstation软件后就会为主机提供一块虚拟网卡VMware Network Adapter VMnet8,这块虚拟网卡是为了在NAT模式下主机连通虚拟机使用的。同时Vmware为主机提供DHCP服务和NAT服务,即虚拟的DHCP服务器和NAT服务器各一台,DHCP服务器为各虚拟机分配ip地址,NAT服务器将虚拟机对外网的访问转换成主机对外网的访问。

【注意】

⑴宿主主机的虚拟网卡VMnet8与其物理网卡是相互独立的,通过IP可以看出二者并不在同一网段, VMnet8仅用作主机连通虚拟机,虚拟机连接主机依然是通过虚拟NAT服务器完成的,而非Vmnet8。将虚拟网卡VMnet8禁用后不影响虚拟机访问外网和宿主主机,但是主机却不能连通虚拟机。

⑵虚拟NAT服务器相当于一个路由器的作用,将各虚拟机对外网的请求转换为主机对外网的请求,NAT服务器的ip地址就是各虚拟机的网关。一般来讲网关就是一台机器所连路由器的ip地址。

2.2 虚拟机配置NAT模式上网的步骤

step1  打开vmware,点击“编辑”下的“虚拟网络编辑器”,进行NAT和DHCP设置。由于主机和虚拟机是靠VMnet8通信的,因此虚拟机和VMnet8应该属于同一个子网,即子网ip相同。由主机下的ipconfig命令可得知VMnet8的子网ip

以上图为例,可得知VMnet8的子网ip为192.168.128.0。据此进行NAT设置

最后点击确定即完成了NAT设置。

step2  在虚拟机的设置里面为虚拟机添加“网络适配器”,并选择NAT模式上网

step3  修改网卡配置文件,命令为:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

以下是虚拟网卡VMnet8的子网IP为192.168.128.0时的一个配置示例:

DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.128.10
NETMASK=255.255.255.0
GATEWAY=192.168.128.2
DNS1=114.114.114.114

【注意】

⑴BOOTPROTO可设置为static或dhcp,当为static时表明该虚拟机采用IPADDR所指定的静态IP,永远不会改变(推荐)。若BOOTPROTO设置为dhcp即动态获取IP, 此时IPADDR也是可以设置的,只不过仅能设置为DHCP所规定的的地址段。

⑵设置IP地址时需注意,IP地址都是有网络地址(网段)和主机号两部分共同组成的,任意一网段下的主机号不能全为0或全为1,主机号全0表示网络地址,全1是广播地址。由NETMASK可知该网络为C类IP段,即IP最后一段表示主机号,所以最后一段不能为0或255。

编辑完成后:wq命令保存退出,如下命令重启网络服务:service network restart

用ping命令检查主机是否可以连通虚拟机,以及虚拟机是否可以ping通外网。

3.Host-only

当设置为Host-only上网时,虚拟机只能和主机进行通信,不可以上网。也不可以和其他机器进行通信。(即主机使用VMnet1与虚拟机通信)

【OS_Linux】Linux中虚拟机的三种上网方式——桥接、NAT、Host-only的更多相关文章

  1. Linux 双线策略路由的三种实现方式总结+端口映射

    Linux 双线策略路由的三种实现方式总结+端口映射 Linux 双线策略路由的三种实现方式总结+端口映射 网络环境 服务器(网关): eth0 为LAN口,IP为 LAN_IP = 192.168. ...

  2. linux中vim编辑器三种模式及常用命令的使用

    Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+sh ...

  3. Linux下SVN的三种备份方式

    原文链接:http://blog.csdn.net/windone0109/article/details/4040772 (本文例子基于FreeBSD/Linux实现,windows环境请自己做出相 ...

  4. iOS中正则表达式的三种使用方式

    1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”: NSString *regex = @"[ ...

  5. java中线程的三种实现方式

    一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...

  6. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  7. VMware三种连接方式bridge, nat, host-only

    大家在安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和 VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host网卡,用于host方式连接网络的.VMnet8是NAT网 ...

  8. linux中文件的三种time(atime,mtime,ctime)

    linux下文件有3个时间的,分别是atime,mtime,ctime.有些博友对这3个时间还是比较迷茫和困惑的,我整理了下,写下来希望对博友们有所帮助. 1 这三个time的含义 简名 全名 中文名 ...

  9. SpringMVC中HandlerMapping的三种配置方式

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-/ ...

随机推荐

  1. java算法之冒泡排序

    所有的冒泡排序算法都是一样的: 冒泡排序可以分为两种情况: 一种是将无序序列排序为由小到大的升序方式: 另一种情况是将无序序列转化成一种由大到小的降序排列:

  2. github添加版本号

    1.将官方的库clone下来 http://github.com/xxx.xxx.git 2.修改要修改的地方 3.git add src 4.commit -m 'xxx'   5.git push ...

  3. 自己写的Grid组件,第二版

    大体没什么变化,主要是添加了一个方法,getSelectedItems(),返回当前选中的数据项. (function ($) { $.fn.GridView = function (setting) ...

  4. Problem D. What a Beautiful Lake dp

    Problem D. What a Beautiful Lake Description Weiming Lake, also named "Un-named Lake", is ...

  5. Hibernate、Spring和Struts工作原理及使用理由

    1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭Sesst ...

  6. 对shell的简单认识

    shell是一个命令解释器: shell分为交互式shell和非交互式shell: 交互式shell就是命令行一问一答:非交互式shell是像shell文本那样,一次解析文本, 并未在命令行给我们作出 ...

  7. vagrant教程

    http://blog.smdcn.net/article/1308.html http://ninghao.net/blog/1566 如何定制一个自己的 vagrant box: https:// ...

  8. SpringBoot 2.x (10):整合Redis

    Redis部署到阿里云: 下载redis源码,编译,允许远程访问的配置 阿里云安全组设置: SSH连过去: wget http://download.redis.io/releases/redis-4 ...

  9. linux winqq 不能输入中文的解决办法

    wineqq的运行脚本是/usr/share/deepinwine/qqintl/wine-qqintl编辑此脚本,在最开始加入: export XMODIFIERS="@im=fcitx& ...

  10. MySQL分表操作的例子

    USE project;DROP PROCEDURE IF EXISTS project.delete_test_user;delimiter $$CREATE PROCEDURE project.d ...