需求;两台宿主机;位于同一网段或不同网段;需要在两台宿主机上各创建5台虚拟机;并且虚拟机之间可以两两通信。
步骤一;首先;安装KVM虚拟机;教程很多;此处不再赘述
若创建的虚拟机不要求在同一网段或宿主机本身就不在同一网段;可以使用zerotier进行内网穿透;缺点就是不同宿主机上的虚拟机通信时会有较大的延迟;若宿主机在同一网段;建议使用桥接模式创建虚拟机;为每台虚拟机设置静态IP。
步骤二;确认是否存在virb0与virb0-nic网卡
输入命令ifconfig查看网卡是否存在;由于需要两台宿主机之间的虚拟机需要互相ping通;在不进行内网穿透的情况下;需要设置桥接模式。若存在NAT模式创建的网卡virb0可能会产生创建桥接网卡br0后无法联网的情况。可以先设置桥接网卡br0;看是否可以正常联网;若无法联网;先停止br0;再停止virb0和virb0-nic即可。
停止virb0命令;
ifconfig virbr0 down
brctl delbr virbr0
步骤三;宿主机添加网卡br0
输入命令ifconfig查看物理网卡;有IP地址的网卡;;在/etc/network/interfaces下;编辑如下内容;
auto enp4s0f0 #物理网卡
iface enp4s0f0 inet manual
auto br0
iface br0 inet static
address IP #IP地址
netmask 255.255.255.0 #子网掩码
gateway 192.... #网关
bridge_ports enp4s0f0 #物理网卡
bridge_stp off
bridge_fd 0
完成后;重启网络
sudo /etc/init.d/networking restart
可能ssh会断掉连接;等一段时间后再次连接即可。
此时输入ifconfig可以看到;物理网卡没有了IP地址;br0显示IP地址。
步骤四;创建桥接模式下的虚拟机并固定IP
KVM创建虚拟机时需要注意使用桥接模式创建;连接网卡br0;若br0为空;说明未完成桥接;检查上一步是否出错。
进入虚拟机之后;为虚拟机设置静态IP。首先查看虚拟机的网卡;我的是ens3;在/etc/network/interfaces下;编辑如下内容;
auto ens3
iface ens3 inet static
address IP #IP地址;防止IP冲突
netmask 255.255.255.0 #子网掩码
gateway 192.... #网关
完成后;重启网络
sudo /etc/init.d/networking restart
编辑/etc/resolve.conf;输入
nameserver 223.5.5.5
步骤五;检查是否设置成功
可以ping一下外网跟两台宿主机IP;安装ssh;测试是否可以ssh连接。
apt-get install openssh-server