VBox组件内部局域网
创始人
2024-02-24 10:56:28

我使用VirtualBox并不是很专业,只是拿它来组件服务器。后来这个虚拟机对我越来越重要,我的各种测试服务器和学习服务器越来越多,于是我就给他们规划了IP地址,像这样:

 我用的网络一直都是桥接,每个虚拟机都可以上网,也都可以和本地电脑通信,用起来得心应手。

有一天我忽然需要要把一个使用了虚拟机服务器的项目拿到别的地方展示。脱离了我家里的路由器,网络通信出了问题。我才意识到我的本地电脑和虚拟机之间需要组件一个内部网络,没有物理路由器的支持也能正常工作。当然,我希望能切换自如,毕竟虚拟机也需要上网。

经过研究,我采用了双网卡机制,网卡1还是原来的,采用桥接方式上网,可以访问互联网。开启网卡2,用host-only方式上网。

首先需要建立一个新的网络,vbox本身是有一个192.168.56.x网段的网络,如果有必要可以另外创建一个。

在网络设置里面对相应的适配器做点设置。

 

 开启网卡2,选择host-only模式,选择自己创建的一个网络。

 启动虚拟机。由于此时的网卡2使用的是动态分配的ip,所以没法用网卡2的ip去ssh,可以使用网卡1的ip登录,或者在虚拟机显示界面直接登录,查看和修改网卡2的配置。

centos7默认网卡1的配置文件在/etc/sysconfig/network-scripts/下面,文件名为ifcfg-enp0s3,网卡2的名称为ifcfg-enp0s8,网卡3为ifcfg-enp0s9,网卡4为ifcfg-enp0s10,但是后面三张网卡实际上没有配置文件,需要手动去创建。我们可以把网卡1的配置文件复制一份,改文件名,再打开,修改内容。

 红框部分都是需要修改的,UUID可以重新生成一个,也可以做一点稍微的修改,不要与复制的源文件相同就好了。

重启网络,就可以用网卡2的ip登录了。

 为了不混乱,我把网卡1确定为桥接网络,网卡2,确定为192.168.2.x网段,网卡3确定为192.168.10.x网段,网卡4使用vbox默认的192.168.56.x网段,一般使用前两个就行,四个网卡全开会出问题。可以根据网络环境的不同开启合适的网络。

手动复制和修改网络配置文件比较麻烦。我一般会把配置文件做好,放置在一个基础镜像vdi中,需要新增服务器就复制镜像修改。后来我查找资料,学习研究,设计了一个将就够用的脚本,用脚本来修改网卡配置。

脚本源码如下: 

#!/bin/bash
#auto alter ip
#auth by chris chan
#2020年10月30日 10:50:00
#######################
DATE=`date +%Y%m%d%H%M`#定义函数 - 选择要修改IP的网卡
INTERFACE_CHOOSE () {echo -e "\033[32m---------------------------------------------------------\033[0m"PS3="请按提示,选择要修改的网卡:"select INTERFACE in `ls /sys/class/net/|grep -v 'lo'`dobreakdone
}#定义函数 - 输入IP地址,如果IP地址不正确,循环输入,直到正确为止
DEFINE_IPADDR_NEW () {echo -e "\033[32m----------------------------------------------------------\033[0m"echo ""read -p "请正确输入IP地址: " NEW_IPADDRecho ${NEW_IPADDR}|grep -iwE '^[1-2][0-9]{0,2}\.([0-9]{1,3}\.){2}[0-9]{1,3}$' >/dev/null 2>&1while [ $? -ne 0 ]doread -p "IP定义不正确,请重新输入 :    " NEW_IPADDRecho ${NEW_IPADDR}|grep -iwE '^[1-2][0-9]{0,2}\.([0-9]{1,3}\.){2}[0-9]{0,3}$' >/dev/null 2>&1done}#定义函数 - 检测IP输入后,是否会IP冲突,如果冲突,则重新调用函数DEFINE_IPADDR_NEW,重新输入IP
CHECK_IP_conflict () {echo  "检测IP中,请稍等2秒..."ping -c 2 "${NEW_IPADDR}" |grep "ttl" >/dev/null 2>&1while [ $? -eq 0 ]doecho -e "\033[33mIP冲突,请重新输入: \033[0m" DEFINE_IPADDR_NEWecho  "检测IP中,请稍等2秒..."ping -c 2 "${NEW_IPADDR}" |grep "ttl" >/dev/null 2>&1doneecho -e "\033[32m------IP定义成功!------\033[0m"
}#定义函数 - 输入子网掩码,如果子网掩码不正确,循环输入,直到正确为止
DEFINE_NETMASK_NEW () {echo -e "\033[32m----------------------------------------------------------\033[0m"echo ""read -p "请输入子网掩码(255.255.255.0):" NEW_NETMASKecho ${NEW_NETMASK}|grep -iwE '^255\.([0-9]{1,3}\.){2}[0-9]{1,3}$' >/dev/null 2>&1if [ !$NEW_NETMASK ]; thenNEW_NETMASK="255.255.255.0"echo "已设定默认子网掩码:" ${NEW_NETMASK}returnfiwhile [ $? -ne 0 ]doread -p "子网掩码定义不正确,请重新输入: " NEW_NETMASKecho ""echo ${NEW_NETMASK}|grep -iwE '^255\.([0-9]{1,3}\.){2}[0-9]{1,3}$' >/dev/null 2>&1done
}#定义函数 - 输入网关,如果网关不通,循环输入,直到输入后能ping通为止
DEFINE_GATEWAY () {echo -e "\033[32m----------------------------------------------------------\033[0m"read -p "请输入网关(192.168.0.1): " NEW_GATEWAYecho  "检测网关中,请稍等2秒..."ping -c 2 "${NEW_GATEWAY}"|grep -iE "ttl" >/dev/null 2>&1if [ !$NEW_GATEWAY ]; then#     NEW_GATEWAY="192.168.0.1"echo "已设定默认网关:" ${NEW_GATEWAY}returnfiwhile [ $? -ne 0 ]doread -p "网关不通,请重新输入正确网关: " NEW_GATEWAYecho  "检测网关中,请稍等2秒..."ping -c 2 "${NEW_GATEWAY}"|grep -iE "ttl" >/dev/null 2>&1doneecho -e "\033[32m------网关定义成功!------\033[0m"
}ping -c 2 ${NEW_GATEWAY}|grep -iE "ttl" >/dev/null 2>&1INTERFACE_CHOOSE
DEFINE_IPADDR_NEW
CHECK_IP_conflict
DEFINE_NETMASK_NEW
DEFINE_GATEWAY
echo $INTERFACE
echo ${NEW_IPADDR}
echo ${NEW_NETMASK}
echo ${NEW_GATEWAY}INTERFACE_DIR="/etc/sysconfig/network-scripts"
# 判断网卡配置文件是否存在
NET_CONFIG_FILE=${INTERFACE_DIR}/ifcfg-${INTERFACE}
# 不存在就把ifcfg-enp0s3网卡配置文件复制一份
if [ !$NET_CONFIG_FILE ]; then\cp ${INTERFACE_DIR}/ifcfg-{enp0s3,${INTERFACE}}# 写入新的网卡信息sed -i "/^NAME/cNAME=${INTERFACE}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^DEVICE/cDEVICE=${INTERFACE}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^UUID/cUUID=$(cat /proc/sys/kernel/random/uuid)" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^DNS1/cDNS1=${NEW_GATEWAY}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}
fi
DHCP_OR_STATIC=`cat ${INTERFACE_DIR}/ifcfg-${INTERFACE} |sed '/^BOOTPROTO/p' -n|awk -F"=" '{print $2}'`
echo $DHCP_OR_STATIC#备份网卡文件
\cp ${INTERFACE_DIR}/ifcfg-${INTERFACE}{,${DATE}.bak}
#备份DNS配置文件
\cp /etc/resolv.conf{,.bak}if [[ ${DHCP_OR_STATIC} == "dhcp" ]];thensed -i '/^BOOTPROTO/cBOOTPROTO=static' ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^BOOTPROTO/aGATEWAY=${NEW_GATEWAY}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^BOOTPROTO/aNETMASK=${NEW_NETMASK}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^BOOTPROTO/aIPADDR=${NEW_IPADDR}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}echo -e "\033[32m已生成网卡${INTERFACE}配置文件,见下: \033[0m"echo -e "\033[32m#################################################################\033[0m"cat ${INTERFACE_DIR}/ifcfg-${INTERFACE}elif [[ ${DHCP_OR_STATIC} == "static" ]];thensed -i "/^GATEWAY/cGATEWAY=${NEW_GATEWAY}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^NETMASK/cNETMASK=${NEW_NETMASK}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}sed -i "/^IPADDR/cIPADDR=${NEW_IPADDR}" ${INTERFACE_DIR}/ifcfg-${INTERFACE}echo -e "\033[32m已生成网卡${INTERFACE}配置文件,见下\033[0m"echo -e "\033[32m#################################################################\033[0m"cat ${INTERFACE_DIR}/ifcfg-${INTERFACE}
fiecho -e "\033[32m#################################################################\033[0m"
echo ""
while true
doread -p "请检查网卡${INTERFACE}配置文件,确认是否执行修改IP操作,YES or NO :  " ALTER_Y_Nif [ ! $ALTER_Y_N ]; thenALTER_Y_N="YES"ficase $ALTER_Y_N inYES|Y|yes|y)echo -e "\033[32m 网卡${INTERFACE}IP修改成功,网络重启中,请使用新IP链接服务器................the end !\033[0m"#重启网卡systemctl restart network.service#恢复dns配置文件\cp /etc/resolv.conf.bak /etc/resolv.confifconfig ${INTERFACE}ping -c 5 www.baidu.comif [ $? -ne 0 ];thenecho -e "\033[33m-----------------------\033[0m"echo -e "\033[33m    无法上网,IP回滚!!\033[0m"echo -e "\033[33m-----------------------\033[0m"\mv ${INTERFACE_DIR}/ifcfg-${INTERFACE}${DATE}.bak ${INTERFACE_DIR}/ifcfg-${INTERFACE}systemctl restart network.service\cp /etc/resolv.conf.bak /etc/resolv.confping -c 2 www.baidu.comif [ $? -eq 0 ];thenecho -e "\033[32m-----------------------!\033[0m"echo -e "\033[32m    回滚成功!!\033[0m"echo -e "\033[32m-----------------------!\033[0m"ifconfig ${INTERFACE}elseecho -e "\033[33m回滚失败,请检查!!\033[0m"fifiexit 0;;NO|no|N|n)\mv ${INTERFACE_DIR}/ifcfg-${INTERFACE}${DATE}.bak ${INTERFACE_DIR}/ifcfg-${INTERFACE}echo -e "\033[33m网卡${INTERFACE}IP未修改,退出操作!!\033[0m"exit 1;;esacdone

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...