vlambda博客
学习文章列表

centos虚拟机之间通信以及与宿主机通信的设置并且固定ip的两种方法

在开发中,集群是必不可少的,有时候为了本地为了验证一些技术点,可是只有一台电脑,这个时候虚拟机是个好东西,本博客主要讲述多虚拟机之间的通信以及与宿主机双向通信的配置,尤其是保证虚拟机的ip不能变动。

本博客主要讲述两种方法,废话不多说,上干货

第一种方法:虚拟机网络设置选择  NAT + host only

centos虚拟机之间通信以及与宿主机通信的设置并且固定ip的两种方法

此处需要注意,host only 的界面名称如果没有,则需要创建

在虚拟机管理界面点击   管理 --主机网络管理器

centos虚拟机之间通信以及与宿主机通信的设置并且固定ip的两种方法


如果没有,则创建一个


进入虚拟机

执行  ifconfig ,查看网卡的名称 ,比如 我的是 enp0s8

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.56.15 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::b8c4:3ff8:d170:17a6 prefixlen 64 scopeid 0x20<link> ether 08:00:27:83:50:f2 txqueuelen 1000 (Ethernet) RX packets 561 bytes 45105 (44.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 846 bytes 105460 (102.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

执行

 vim /etc/sysconfig/network-scripts/ifcfg-enp0s8

如果这个网卡是中途在虚拟机管理器中添加的,是没有这个文件的,默认是有一个enp0s3,那么

执行

cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8

然后

vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="eth0"UUID="8b991604-d892-426b-8af0-65f6e525e2ac"DEVICE="enp0s8"ONBOOT="yes"IPV6_PRIVACY="no"ZONE=publicIPADDR=192.168.56.15

需要注意的是几个配置

BOOTPROTO="static"DEVICE="enp0s8"ONBOOT="yes"# 这个是自己定义的ip地址,# 注意跟虚拟机管理器上生成的host only的界面名称中的ip在一个局域网IPADDR=192.168.56.15   

剩下一个就是UUID,如果是建立虚拟机的时候就配置了 host only,则这个enp0s8会自动生成,则这个UUID也是生成好的,只需要按照上面的修改就行;如果 host only 是后面加的,enp0s8是新建的文件,那么UUID需要查询出来,

nmcli con |sed -n '1,2p'
名称 UUID 类型 设备eth0        8b991604-d892-426b-8af0-65f6e525e2ac  802-3-ethernet  enp0s8

讲这里得到的UUID复制到enp0s8文件中的UUID中,配置完成

reboot , enjoy yourself



第二种方法:采用 桥接 方式

首先登陆进虚拟机,查看网卡信息

[root@node3 ~]# ifconfigenp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.101.20 netmask 255.255.255.0 broadcast 192.168.101.255 inet6 fe80::3c9f:ca2f:9383:e712 prefixlen 64 scopeid 0x20<link> ether 08:00:27:b7:bb:7b txqueuelen 1000 (Ethernet) RX packets 16861 bytes 1132640 (1.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 31277 bytes 3545718 (3.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

我的是 enp0s9,大家对应自己的网卡名称就好

vi /etc/sysconfig/network-scripts/ifcfg-enp0s9
TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="eth0"UUID="097ca6bc-5bd5-3a41-9e1b-8679a029a131"DEVICE="enp0s9"ONBOOT="yes"IPV6_PRIVACY="no"ZONE=publicIPADDR=192.168.101.20NETMASK=255.255.255.0GATEWAY=192.168.101.1DNS1=8.8.8.8

这里虚拟注意的是

BOOTPROTO="static"DEVICE="enp0s9"ONBOOT="yes"IPADDR=192.168.101.20NETMASK=255.255.255.0GATEWAY=192.168.101.1DNS1=8.8.8.8

关于UUID的问题,和第一种方式一样处理就好

这里有一点需要注意,这里的 DNS1 一定要配置,否则会无法解析域名

reboot and enjoyyourself