文章目录
在hyper-V虚拟机环境下的centos7.3的动态IP(DHCP)网络配置
Hyper-V
是微软的一款虚拟化产品,是微软第一个采用类似 Vmware
和 Citrix
开源Xen一样的基于hypervisor的技术。它因为在win8以后集成在windows系统中,可以方便的使用,而获得一定的流行。但是由于积累时间短于Vmware,而在技术上与Vmware有一定的差距。
笔者为在本地调试,在本机上使用了hyper-V和 centos_7_1611_AMD64.ios
进行最小化安装,安装时未进行网络配置。
下面正式开始:
第一步:事先准备
在hyper-V控制台操作虚拟机关机,以便于添加设备。
第二步:配置虚拟交换机
进入hyper-V控制台,找到 添加虚拟交换机
– 外部
,可以发现hyper-V自动为你选择好了你当前活动的网卡,你也可以在下拉菜单中选择你要选择的网卡。点击 确定
以完成安装。
第三步:配置旧版虚拟网络适配器
笔者在初次尝试安装的时候,本着“用新不用旧”的原则,自然而然的选择了安装新版虚拟网络设备,结果后来怎样折腾都无法解决。最后在万能的 Stackoverflow
找到了原因。原来是hyper-V虚拟机支持在新版下不兼容Linux网络设备。
因此,进入hyper-V控制台,对要操作的虚拟机选择配置
–添加新设备
–添加旧版网络适配器
,使用你刚才配置好的虚拟网络交换机,默认模式为NAT
,不需要改变。
第四步:安装专用版本设备驱动
笔者开始准备直接配置网络文件,结果反复重启都没有效果。(一路上真是大坑不断啊……)后来查阅资料才发现,RHEL
和Centos
对hyper-V其网络设备不兼容,需要安装微软的补丁。
(如果你未安装专用版本设备驱动并进行如下配置,那么可能在重启network.service
时反复遇到错误。)
点此进入下载页面 如果文件已移动或删除请在搜索框搜索Linux Integration Services Version for Hyper-V或LinuxIC。
在hyper-V控制台选择挂载下载的 .iso
文件(虚拟机需处于关机状态),开机后若未加载成功在上面菜单栏选择加载。
进入root账户,输入以下指令
1 2 |
mkdir /mnt/cdrom |
mkdir
以创建加载的虚拟光盘中的文件,路径可以自己选择,记住即可,安装完毕后也可用rmdir
或者 rm -rf
指令删除目录。
1 2 |
mount /dev/cdrom /mnt/cdrom |
挂载光盘,并将光盘中文件拷贝到你新建的目录中。
1 2 3 |
cd /mnt/cdrom/ ls |
切换到复制的目录,列出所有版本,你需要使用 cd <相对目录>
指令来选择版本进入。RHEL视标注而定,Centos在6.5以后选择RHEL63。
1 2 |
./install.sh |
安装此驱动。
第五步:配置文件
1 2 |
reboot |
重启。
重启完成后,查看关于网络的信息。
1 2 |
ip addr |
或者是其他系统的# ifconfig
,centos7.0以后已经移除该指令。
安装成功后的MAC信息一般在网卡 ifcfg-ethxxx/enpxxx/enoxxx
后的 link/ether
内,形式为 xx:xx:xx:xx:xx:xx
。读者需要记住此MAC信息。
ps:新版本Linux安装成功的网卡,一般不会为 ifcfg-eth0
以方便移植,如果是这种形式,很可能没有安装成功。
1 2 |
cd /etc/sysconfig/network-scripts/ # vi ifcfg-xxxxxx |
进入网络配置文件目录,使用vi/vim
编辑器编辑内容,没有此条目添加即可,使得自动动态IP(DHCP模式启动)。
ONBOOT=yes
BOOTPROTO=dhcp
第六步:最后
1 2 |
systemctl restart network |
重启网络服务。或者其他系统的 chkconfig network restart
,没有提示代表成功。
现在可以测试一下了。
1 2 |
# ping blog.evernightfireworks.com |
更多
本文介绍的是动态ip,静态ip类似,仍然修改此文件,参数解释如下:
- DEVICE=name,这里name是物理设备的名字(动态分配的PPP设备应当除外,它的名字是“逻辑名”。
- IPADDR=addr, 这里addr是IP地址。
- NETMASK=mask, 这里mask是网络掩码。
- NETWORK=addr, 这里addr是网络地址。
- BROADCAST=addr, 这里addr是广播地址。
- GATEWAY=addr, 这里addr是网关地址。
- ONBOOT=answer, 这里answer取下列值之一:
yes — 该设备将在boot时被激活。
no — 该设备不在boot时激活。- USERCTL=answer, 这里answer取下列值之一:
yes –非root用户可以控制该设备。
no — 非root用户不允许控制该设备。- BOOTPROTO=proto, 这里proto取下列值之一:
none — 不使用boot时协议。
bootp — 使用bootp协议。
dhcp –使用dhcp协议。