windows下使用虚拟机基本都会用到VMware workstation,三种网络连接方式(桥接、NAT、仅主机)的区别网上的文章也有很多的介绍。

一般我比较习惯使用NAT和DHCP,比较省时省力。需要使用在线的软件源什么的,包括hadoop集群的搭建的时候,或者是hadoop-2.X的X64编译都需要连接网络。

一、问题

NAT+DHCP有一个致命的问题就是ip可能发生变化,比如我喜欢使用ssh操作虚拟机或者是其他的如FTP等操作,虽然这个变化不是很频繁或者说基本不怎么会发生,但是如果变化了IP,很多配置的东西都需要改动。

对我而言最严重的问题就是,我在配置Hadoop-2.7.1高可用(HA)集群的时候,四台虚拟机需要配置很多东西,这时候DHCP已经不能满足我的需求了。

我根据正常的linux(centos)下配置静态ip一直有问题,无法连接网络,因此特意搜了一下如何在VMWARE的NAT下为centos设置静态ip

二、步骤

除了在linux上进行操作外,vmware本身需要进行一些操作。

1、确保vmware开了NAT server

我因为嫌弃vmwar开机的时候自启动很多服务,我就都改成了手动启动,所以需要确保nat服务是开启的。

【右击此电脑】->【管理】->【服务和应用程序】->【服务】如下:

postbird

2、设置Vmare workstation

打开Vmare,选中虚拟机,并点击菜单【编辑】->【虚拟网络编辑器】,选中NAT模式(VMnet 8)。

之后将使用本地DHCP服务将IP地址分配给虚拟机这个选项给取消掉,如下所示:

postbird

然后点击上图中的【NAT设置】,记住下面的内容如:子网掩码、网关(GATEWAY),其中GATEWAY是最重要的。

postbird

3、在centos上编辑网络配置信息

经过上面的操作,VMware的设置就结束了,然后就可以在Centos上继续配置,这个配置就是正常的linux下(centos下)配置静态ip的步骤了。

需要配置的文件有三个(也可以说是两个),分别是:

  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0
  • /etc/resolv.conf(这一步是为了验证)

1)vim etc/sysconfig/network

GATEWAY上图中的网关IP,HOSTNAME是主机名

NETWORKING=yes
HOSTNAME=node1
GATEWAY=192.168.124.2

2)vim /etc/sysconfig/network-scripts/ifcfg-eth0

将BOOTPROTO改为static,至于HWADDR MAC就无所谓,主要是 BOOTPROTO/NETMASK/DNS1 这三个的配置

DEVICE="eth0"
#BOOTPROTO="dhcp"
BOOTPROTO="static"
IPADDR=192.168.124.131
NETMASK=255.255.255.0
HWADDR="00:0C:29:64:AB:E2"
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9204abd0-ad90-40b4-9bef-58ed919b9e98"
DNS1=192.168.124.2

3)vim /etc/resolv.conf

这个文件可以先配置,也可以等待网络服务重新启动后自动生成。

nameserver就是GATEWAY

# Generated by NetworkManager
nameserver 192.168.124.2

4、重启网络

上面配置完成后,重新启动网络服务即可。

 $ service network restart
如果没问题,则静态ip就配置好了。 三、补充 ==== 在配置集群的时候,发现一个问题,就是我只创建了一台linux,然后其他的centos都是通过复制得到的,除了更改hostname等等之外我在没改过其他的东西。 在配置网络ip的时候,结果发现没有system eth0的网卡的选项. postbird 经过查找发现是因为复制得到的centos的HWADDR没有改变,因此需要将HWADDR(上面第二个文件)注释掉就可以了。