由于需要让虚拟机容器等桥接到物理网络中来,所以就开始创建br0网桥并把当前的网卡作为接口绑定到这个网桥上。
系统版本是 ubuntu16.04
操作过程中发现改完配置文件 /etc/network/interfices 尝试重启服务 networking,发现会报错。
开始以为是配置文件哪里写错了,各种排查尝试后注意到服务报错的是不能up网卡之类的,此时用ip命令或许会发现 网桥出来了,网卡和网桥上都有ip地址,就是网络出不去断网了。
手动命令执行配置才知道,是网卡处于占用状态,接入网桥失败
同样,网桥恢复到网卡模式时 也会状态占用导致失败。测试明白后得出操作顺序和 重启服务前置工作
此时就要实现不断网完成整个流程,尝试写成脚本执行
#! /bin/bash
# 网卡连接变网桥时 脚本后跟上网卡名字即可
# 网桥变回网卡时 脚本后第一个参数是网桥 第二个是接口网卡
# 网桥上绑定多网卡接口的这里不支持
# 如果有两个传参,从网桥上分离接口网卡,并且down掉网卡
if [[ $2 ]];then
brctl delif $1 $2
ifconfig $2 down
fi
# 去掉ip并且down掉当前的设备(网桥或网卡)
ip addr flush dev $1
ifconfig $1 down
# 如果;两个传参,删掉网桥
if [[ $2 ]];then
brctl delbr $1
fi
systemctl restart networking.service
# 网卡配置文件需要自己手动更改
网卡改网桥时,编辑好interfaces配置文件后 执行者个脚本,跟上 网卡的名字。例:
sudo bash run.sh ens160
此时只有网卡在工作,所以只需要释放掉网卡上的ip 然后down掉网卡 就好了
取消网桥换回网卡模式时,恢复interfaces配置文件内容后执行脚本,跟上 网桥名字和网卡名字。例:
sudo bash run.sh br0 ens160
此时需要把网卡从网桥上剥离,然后释放掉网桥上的ip 然后down 掉网桥和网卡,删除网桥
总结就是 networking服务不会释放网络设备资源,所以当需要的网络设备资源被占用时重启过程就会报错。我们要做的就是帮它释放资源