文章目录

  • 一、VMware克隆虚拟机后重启network失败
  • 二、虚拟机桥接模式连接宿主机器(我这里是在Centos7.2 64位和Debian8.2 64位中做的试验):
  • 三、虚拟机移动后没有IP并且重启网卡失败
  • 扩展1:虚拟机网络模式:`桥接`;`NAT`;`HostOnly`
  • 扩展2:从人人上看到的一篇找不到出处了,很不错的文章,形象地阐释了网络里的抽象概念。
  • 扩展3:上面的虽然生动形象,但好像对子网掩码解释的不是很详细,我还不是很理解,下面是对子网掩码的阐释


一、VMware克隆虚拟机后重启network失败

  首先将你想要克隆(在你需要多台虚拟机进行试验的时候,如果所有的虚拟机都进行新装的话太费时间了,还是克隆已有的虚拟机来的更方便些)的虚拟机关机后进行克隆(在开启状态下无法克隆),一直点击下一步即可,这里提醒的是到克隆方法这一步时我选择的是创建完整克隆

克隆虚拟机 ansible 卡住 虚拟机克隆失败_克隆虚拟机 ansible 卡住


  选择后再下一步后自定义你虚拟机的名称和安装路径后即可进行克隆了

 

  点开你克隆好的虚拟机(我克隆的虚拟机是刚新装好的 RedHat6.6,安装后基本没修改什么,保持的是初始状态)后想连接网络,于是我选择了桥接模式(当我Windows本机连 wifi 时虚拟机使用NAT模式后虽然能连上互联网我却用SecureCRT连不上虚拟机,改为桥接模式后就能连上了,如果你Windows连接的是宽带的话倒也没这个问题),并且将/etc/sysconfig/network-scripts/ifcfg-eth0中的ONBOOT改为yes,其他的默认即可,然后重启network却失败了

克隆虚拟机 ansible 卡住 虚拟机克隆失败_重启network失败_02

解决方法:

  查看你克隆后虚拟机的新MAC地址

克隆虚拟机 ansible 卡住 虚拟机克隆失败_vmware_03


  再将/etc/sysconfig/network-scripts/ifcfg-eth0改为eth1后,修改/etc/sysconfig/network-scripts/ifcfg-eth1如下:

克隆虚拟机 ansible 卡住 虚拟机克隆失败_vmware_04


  再重启network即可成功:

克隆虚拟机 ansible 卡住 虚拟机克隆失败_克隆虚拟机 ansible 卡住_05

如果你不想将eth0修改为eth1的话:

  在将/etc/sysconfig/network-scripts/ifcfg-eth0中的HWADDR修改为新的MAC地址后还要删除/etc/udev/rules.d/70-persistent-net.rules文件,然后最重要的一步便是要重启你的虚拟机

[root@localhost ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules
[root@localhost ~]# reboot

说明:我又将Centos6.5的虚拟机(刚安装完后只将ONBOOT改为了yes,并选择了NAT模式)克隆,克隆后的那个虚拟机eth0自动变成了eth1,也自动变为和被克隆虚拟机不同的IP,并且能上网
 
补充:很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而对于新的虚拟机,VMware会自动为虚拟机的网卡生成MAC地址,当你克隆或者重装虚拟机软件时,由于你使用的是以前系统虚拟硬盘的信息,而该系统中已经有eth0的信息。如果你把70-persistent-net.rules文件删了,那么下次系统重启后,会自动生成一个新的。

二、虚拟机桥接模式连接宿主机器(我这里是在Centos7.2 64位和Debian8.2 64位中做的试验):

  1. 将网络连接点为桥接模式
  2. 打开/etc/sysconfig/network-scripts/ifcfg-eno16777736添加如下内容:
IPADDR=192.168.102.22(IP地址要和宿主机器在同网段)
NETMASK=255.255.255.0
# 并将BOOTPROTO改为static

  Debian打开的文件为/etc/network/interfaces,添加:

auto eth0
iface eth0 inet static
address 192.168.102.32
netmask 255.255.255.0(子网掩码)
  1. 重启network
service network restart(Centos7.2)
/etc/init.d/networking restart(Debian8.2)
  1. 检测
ping 宿主机器ip

注意:这里虚拟机虽然用桥接模式能够ping通宿主机器,但是它还不能上外网,如果想上外网还需要执行如下步骤
 
Debian 8.6:

root@h36:~# vi /etc/network/interfaces(添加如下内容)
gateway 192.168.102.254(默认网关)

  配置DNS服务器

root@h36:~# vi /etc/resolv.conf
# 原内容为:
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.148.1
# 将nameserver修改为8.8.8.8

注意:如果禁止通过的dhcp获取到的dns配置覆盖手工配配置的dns服务器,则PEERDNS参数改为no

Centos 7.2:

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
# 添加:
GATEWAY=192.168.102.254
DNS1=8.8.8.8

  重启网卡

  添加DNS是根据/etc/resolv.conf的内容提示才知道的:

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

  验证能否上外网:

wget http://www.baidu.com

三、虚拟机移动后没有IP并且重启网卡失败

  并没有修改/etc/sysconfig/network-scripts/ifcfg-eno16777736 目录下网络配置文件,只是把虚拟机直接关机了或者将虚拟机目录移动到另一台机器上,执行 ifconfig 命令没有eno16777736网卡的信息。执行 /etc/init.d/network restart 命令报错 Job for network.service failed because the control process exited with error code

解决:再次点击【挂起客户机】,最后点击【继续运行此虚拟机】就可以正常访问了。感觉跟挂起机制有关。
 

扩展1:虚拟机网络模式:桥接NATHostOnly

  • Bridge(桥接):
      在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地位),它可以访问网内任何一台机器。在桥接模式下,我们往往需要为虚拟主机配置IP地址、子网掩码等(注意虚拟主机的ip地址要和主机ip地址在同一网段)。
      使用桥接模式的虚拟系统和主机的关系,就如同连接在一个集线器上的两台电脑;要让他们通讯就需要为虚拟系统配置ip地址和子网掩码。如果我们需要在局域网内建立一个虚拟服务器,并为局域网用户提供服务,那就要选择桥接模式。

举个例子:
  例如大学宿舍里有一个路由器,宿舍里四个人连接这个路由器,路由器默认IP192.168.1.1,子网掩码是255.255.255.0,而其他四个人是自动获取ip,假设四个人的ip是:
  A:192.168.1.100 C:192.168.1.102   B:192.168.1.101 D:192.168.1.103   那么虚拟机的ip可以设置的ip地址是192.168.1.2—192.168.1.99, 192.168.1.104—192.168.1.254(网络地址全0和全1的除外,再除去ABCD四个人的ip地址)
  假如虚拟机的ip地址设置为192.168.1.98,这个ip地址,ABCD这四个人就可以通过192.168.1.98访问虚拟机了,如果虚拟机需要上外网,那么还需要配置虚拟机的路由地址,就是192.168.1.1了,这样,虚拟机就可以上外网了,但是,上网我们一般是通过域名去访问外网的,所以我们还需要为虚拟机配置一个dns服务器,我们可以简单点,把dns服务器地址配置为googledns服务器:8.8.8.8,到此,虚拟机就可以上网了。

  • NAT
      NATNetwork address translate的简称。NAT技术应用在internet网关和路由器上,比如192.168.0.123这个地址要访问internet,它的数据包就要通过一个网关或者路由器,而网关或者路由器拥有一个能访问internetip地址,这样的网关和路由器就要在收发数据包时,对数据包的IP协议层数据进行更改(即NAT),以使私有网段的主机能够顺利访问internet。此技术解决了IP地址稀缺的问题。同样的私有IP可以网关NAT上网。
      VMWareNAT上网也是同样的道理,它在主机和虚拟机之间用软件伪造出一块网卡,这块网卡和虚拟机的ip处于一个地址段。同时,在这块网卡和主机的网络接口之间进行NAT。虚拟机发出的每一块数据包都会经过虚拟网卡,然后NAT,然后由主机的接口发出。
  • 克隆虚拟机 ansible 卡住 虚拟机克隆失败_重启network失败_06

  •   虚拟网卡和虚拟机处于一个地址段,虚拟机和主机不在同一个地址段,主机相当于虚拟机的网关,所以虚拟机ping不到主机的IP,但是主机能ping到虚拟机的IP
      一个最典型的例子,就要算大学宿舍了。宿舍内部网段192.168.1.× ,通过路由器进入校园局域10.10.110.×,然后通过学校网关,进入internet。这个过程中,宿舍的路由器做了一次NAT,而学校的网关又做了一次NAT
  • Host-Only
      提供的是主机和虚拟机之间的网络互访。只想让虚拟机和主机之间有数据交换,而不想让虚拟机访问Internet,就要采用这个设置了。
      Host-only的条件下,VMWare在真正的Windows系统中,建立一块软网卡。这块网卡可以在网络连接中看到,一般是VMNET1,这块网卡的作用就是使Windows看到虚拟机的IP
       由于,这种技术就是将主机和虚拟机通过一个ip段的网卡联系起来,所以双方都可以ping到对方。

扩展2:从人人上看到的一篇找不到出处了,很不错的文章,形象地阐释了网络里的抽象概念。

计算机主机网关的作用是什么?
  假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话: 小不点:李大爷,我想找班主任查一下小明的电话号码行吗? 李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚 了小明的电话)问到了,他家的号码是 211.99.99.99 小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。 李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请 求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家) 就这样你和小明取得了联系。

至于DHCP服务器嘛,可以这样比喻:
  你家院子里的居民越来越多了,传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了,所以只好采用了一种新技术叫做DHCP,居民们开机的时候随机得到一个电话号码,每一次得到的号码都可能会不同。
  你家门口的李大爷:就是你的网关
  你的班主任:就是你的DNS服务器
  传达室的电话交换机:就是你的DHCP服务器
  同上,李大爷和王大爷之间的对话就叫做路由。
  另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久,他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种情况:
  1、居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话(同时赵大妈也告诉了李、王关于孙的电话),这就叫静态设定路由
  2、赵大妈病了,孙大爷自己到处打电话,见人就说:“我是小暗他们院子管电话的”,结果被李、王二位听到了,就记在了他们的通讯录上,然后李、王就给孙大爷回了个电话说:“我是小明(小不点)他们院子管电话的”,这就叫动态设定路由,然后有一天小不点要找小暗,结果自然是小不点给李大爷打电话说:“大爷,我找小暗”(这里省略了李大爷去查小暗电话的过程,假设他知道小暗的电话),李大爷一找通讯录:“哦,小暗的院子的电话是孙大爷管着的,要找小暗自然先要通知孙大爷,我可以通知王大爷让他去找孙大爷,也可以自己直接找孙大爷,那当然是自己直接找孙方便了”,于是李大爷给孙大爷打了电话,然后孙大爷又把电话转到了小暗家。
  这里李大爷的通讯录叫做路由表。
  李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择。
  李大爷之所以选择直接找孙大爷是有依据的,因为他直接找孙大爷就能一步到位,如果要王大爷转接就需要两步才能完成,这里的 “步” 叫做 “跳数”,李大爷的选择遵循的是最少步骤(跳数)原则(如果他不遵守这个原则,小不点可能就会多等些时间才能找到小暗,最终结果可能导致李大爷因工作不力被炒鱿鱼,这叫做 “延时太长,选路原则不合理,换了一个路由器”)
  当然,事情总是变化的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:“操,他是不是在说我坏话啊?”于是小明决定偷听小不点和小暗的通话,但是他又不能出院子,怎么办呢?小明做了这样一个决定:
首先他告诉自己院里管电话的王大爷说:“你给李大爷打个电话说小暗搬到咱们院子了,以后凡是打给他的电话我来接”,王大爷没反映过来(毕竟年纪大了啊!)就给李大爷打了电话,说:“现在我来管理小暗的电话了,孙大爷已经不管了”,结果李大爷就把他的通讯录改了,这叫做路由欺骗。 以后小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前已经和小明说好了),小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚,害怕明天小不点和小暗见面后当面问他,于是通信断了之后,又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话,有这就叫数据窃听。
  再后来,小不点还是不断的和小暗联系,而冷落了小明,小明心里嘀咕啊:“我不能总是这样以小暗的身份和小不点通话啊,万一有一天露馅了怎么办!”于是他想了一个更阴险的招数:“干脆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!”,他怎么做的呢?我们来看: 他联系了一批狐朋狗友,和他们串通好,每天固定一个时间大家一起给小暗院子传达室打电话,内容什么都有,只要传达室的孙爷爷接电话,就会听到“打雷啦,下雨收衣服啊!”、“人是人他妈生的,妖是妖他妈生的”、“你妈贵姓”等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙爷爷忍不住了,大喊一声:“我受不了拉!!!!”,于是上吊自杀了!
  这就是最简单的DDOS攻击,孙爷爷心理承受能力弱的现象叫做 “数据报处理模块有BUG”,孙爷爷的自杀叫做 “路由器瘫痪”。
  如果是我,就微笑着和他们拉家常,例如告诉他们 “我早就听了天气预报,衣服10分钟前已经收好了” 或者 “那你妈是人还是妖” 或者 “和你奶奶一个姓” 等等,我这种健全的心理叫做 “健壮的数据报处理,能够抵御任何攻击”。 孙爷爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种现象叫做 “拒绝服务”,所以小明的做法还有一个名字叫做 “拒绝服务攻击”。 小明终于安静了几天,…
  几天后,小明的院子来了一个美丽的女孩,名字叫做小丽,小明很喜欢她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没办法。当然这里还是要遵循上面的原则:小丽是不能出院子的。那个男的想泡小丽自然只能打电话,于是小明又蠢蠢欲动了: 还记得王爷爷是院子的电话总管吗?他之所以能管理电话是因为他有一个通讯录,因为同一个院子可能有2个孩子都叫小明,靠名字无法区分,所以通讯录上每一行只有两项:
  门牌电话 一号门 1234567 (这个是小明的)
  二号门 7654321 (这个是小丽的)
  …
  王爷爷记性不好,但这总不会错了吧(同一个院子不会有2个 “二号门” 吧)?每次打电话人家都要说出要找的电话号码,然后通过通讯录去院子里面敲门,比如人家说我找“1234567”,于是王爷爷一比较,哦,是一号门的,他就去敲一号门 “听电话”,如果是找 “7654321”,那他就找二号门 “听电话”。
  这里的电话号码就是传说中的 “IP地址”,这里的门牌号就是传说中的网卡的 MAC 地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的)。小明心里想 “奶奶的,老子泡不到你也别想泡”,于是他打起了王爷爷通讯录的主意,经过细心的观察,周密的准备,他终于发现王爷爷有尿频的毛病(毕竟是老人啊…),终于在一个月黑风高的白天,王爷爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王爷爷的通讯录… 过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是 “7654321”,王爷爷一看通讯录,靠:
  门牌电话
一号门 1234567 (这个是小明的)
  一号门 7654321 (注意:这个原来是小丽的,但是被小明改了)
  …
  王爷爷不知道改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系,结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生… 这里小明的行为叫做 “ARP欺骗”(因为在实际的网络上是通过发送ARP数据包来实现的,所以叫做 “ARP欺骗”),王爷爷的通讯录叫做 “ARP表”,这里要注意:王爷爷现在有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做“路由表”,一个是现在说的记录院子里面详细信息的本本,叫做 “ARP表”。
  有句命言是 “人们总是在追求完美的,尽管永远也做不到”(请记住这句话,因为这是一个大名人–也就是我,说的)
  王爷爷的制度中有一条是这么写的“每个月要重新检查一下门牌号和电话的对应本(也就是ARP表)”,这个动作叫做 “刷新ARP表”,每个月的时间限制叫做 “刷新ARP表的周期”。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这样也是不得不做的事啊!
  补充一点,小明是很聪明的,如果通讯录(ARP表)被改成了这样:
  门牌(MAC)电话(IP)
  一号门 1234567 (这个是小明的)
  二号门 1234567 (注意:这个被小明改了,但是他一时头晕改错了)
  …
  就会是计算机就会弹出一个对话框提示 “出现重复的IP地址”,最终会导致王爷爷不知所措,于是通知一号门和二号门,你们的电话重复了。
  这样小丽就知道有人在破坏她的好事,这个现象叫做 “骗局被揭穿了”。
  小不点知道了小明偷听他和小暗的电话,于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。土豆-〉星期三,地瓜-〉请客,笨蛋-〉小不点家。于是小不点告诉小暗:土豆笨蛋地瓜。小明听了???不懂。。。。郁闷了。。。这是加密。
  除此之外,小丽也知道了小明改他家的电话号码了。于是王爷爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许外人修改,只能自己有钥匙(密码)。这是 ip 地址和 MAC 地址绑定。当有人改了电话号码的时候,就得找王爷爷改。麻烦是麻烦了,但是安全了。
  不过小明偷偷的把王爷爷的钥匙偷配了一把(盗窃密码成功),于是他还可以修改。这样么,就这样了。
 

扩展3:上面的虽然生动形象,但好像对子网掩码解释的不是很详细,我还不是很理解,下面是对子网掩码的阐释

(来自)

一、为什么要计算网络地址

  一句话就是让网络中的计算机能够相互通讯。先看看最简单的网络,图3中是用网线(交叉线)直接将两台计算机连起来,下面是几种IP地址设置,看看在不同设置下网络是通还是不通。

克隆虚拟机 ansible 卡住 虚拟机克隆失败_IP_07


  1. 设置1号机的IP地址为192.168.0.1子网掩码为255.255.255.0,2号机的IP地址为192.168.0.200子网掩码为255.255.255.0,这两台计算机就能正常通讯。

  2. 如果1号机地址不变,将2号机的IP地址改为192.168.1.200子网掩码还是为255.255.255.0,那这两台就无法通讯。

  3. 设置1号机的IP地址为192.168.0.1子网掩码为255.255.255.0,2号机的IP地址为192.168.0.200子网掩码为255.255.255.192,注意和第1种情况的区别在于子网掩码,1为255.255.255.0,2号机是255.255.255.192。这两台计算机就不能正常通讯.

  第1种情况能通是因为这两台计算机处在同一网络192.168.0.0,所以能通。而2,3种情况下两台计算机处在不同的网络,所以不通。

  这里先给个结论:用网线直接连接的计算机或是通过HUB(集线器)或普通交换机间接的计算机之间要能够相互通。计算机必须要在同一网络,也就是说它们的网络地址必须相同,而且主机地址必须不一样,如果不在一个网络就无法通,这就像我们上面举的例子,同是北大街的住户由于街道名称都是北大街,且各自的门牌号不同,所以能够相互找到对方,计算网络地址就是判断网络中的计算机在不在同一网络,在就能通,不在就不能通。注意,这里说的在不在同一网络指的是IP地址而不是物理连接。那么如何计算呢?

二、如何计算网络地址 (子网掩码)

  我们日常生活中的地址如:北大街1号,从字面上就能看出街道地址是北大街,而我们从IP地址中却难以看出网络地址,要计算网络地址,必须借助我们上边提到过的子网掩码。

  计算过程是这样的,将IP地址和子网掩码都换算成二进制,然后进行与运算,结果就是网络地址,与运算如下所示,上下对齐,1位1位的算,1与1=1,其余组合都为0。

克隆虚拟机 ansible 卡住 虚拟机克隆失败_重启network失败_08


  例如:计算IP地址为:202.99.160.50子网掩码是255.255.255.0的网络地址步骤如下:

  1) 将IP地址和子网掩码分别换算成二进制

  202.99.160.50 换算成二进制为 11001010·01100011·10100000·00110010   255.255.255.0 换算成二进制为 11111111·11111111·11111111·00000000

  2) 将二者进行与运算

克隆虚拟机 ansible 卡住 虚拟机克隆失败_克隆虚拟机 ansible 卡住_09


  3) 将运算结果换算成十进制,这就是网络地址。

  11001010·01100011·10100000·00000000换算成十进制就是202.99.160.0

  现在我们就可以解答上面三种情况的通与不通的问题了。

  1. 从下面运算结果可以看出二台计算机的网络地址都为192.168.0.0IP地址不同,所以可以通。

克隆虚拟机 ansible 卡住 虚拟机克隆失败_克隆虚拟机 ansible 卡住_10


  2. 从下面运算结果可以看出1号机的网络地址为192.168.0.0,2号机的网络地址为192.168.1.0,不在一个网络,所以不通。

克隆虚拟机 ansible 卡住 虚拟机克隆失败_IP_11


  3. 从下面运算结果可以看出1号机的网络地址为192.168.0.0,2号机的网络地址为192.168.0.192 不在一个网络,所以不通。

克隆虚拟机 ansible 卡住 虚拟机克隆失败_克隆虚拟机 ansible 卡住_12


  相信看到这应该明白了为何计算网络地址和如何计算了。

  子网掩码是用来判断任意两台计算机的ip地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的ip地址与子网掩码进行and运算后,得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。