2023-02-23 21:42:24 +08:00
|
|
|
|
#!/bin/bash
|
2023-02-23 21:58:44 +08:00
|
|
|
|
# 该脚本将创建一个名为vmbr0的虚拟网桥,并将其记录到配置文件中。它会自动获取本地IPV4地址、子网掩码和网关,并将其添加到vmbr0配置中。
|
2023-02-23 21:42:24 +08:00
|
|
|
|
|
|
|
|
|
# 设置虚拟网桥名称
|
|
|
|
|
BRIDGE_NAME="vmbr0"
|
|
|
|
|
|
2023-02-23 22:25:13 +08:00
|
|
|
|
# 获取本地IPv4地址和子网掩码
|
2023-02-23 21:42:24 +08:00
|
|
|
|
IP_ADDR=$(ip route get 8.8.8.8 | head -1 | awk '{print $7}')
|
2023-02-23 22:25:13 +08:00
|
|
|
|
SUBNET_MASK=$(ip route get 8.8.8.8 | head -1 | awk '{print $1}' | awk -F"/" '{print $2}')
|
|
|
|
|
|
|
|
|
|
# 计算网络地址
|
|
|
|
|
IFS='.' read -ra IP_ARR <<< "$IP_ADDR"
|
|
|
|
|
IFS='.' read -ra MASK_ARR <<< "$SUBNET_MASK"
|
|
|
|
|
NET_ADDR=""
|
|
|
|
|
for ((i=0; i<4; i++)); do
|
|
|
|
|
NET_ADDR="${NET_ADDR}$((${IP_ARR[$i]} & ${MASK_ARR[$i]}))."
|
|
|
|
|
done
|
|
|
|
|
NET_ADDR=${NET_ADDR::-1}
|
|
|
|
|
|
|
|
|
|
# 获取网关地址
|
2023-02-23 21:42:24 +08:00
|
|
|
|
GATEWAY=$(ip route | awk '/default/ {print $3}')
|
|
|
|
|
|
2023-02-23 22:03:19 +08:00
|
|
|
|
# 创建虚拟网桥
|
|
|
|
|
cat << EOF > /etc/network/interfaces.d/$BRIDGE_NAME.conf
|
|
|
|
|
# This file is generated by create_vmbr0.sh script
|
|
|
|
|
auto $BRIDGE_NAME
|
|
|
|
|
iface $BRIDGE_NAME inet static
|
|
|
|
|
address $IP_ADDR
|
|
|
|
|
netmask $SUBNET_MASK
|
|
|
|
|
gateway $GATEWAY
|
2023-02-23 22:25:13 +08:00
|
|
|
|
bridge_ports ens18
|
2023-02-23 22:03:19 +08:00
|
|
|
|
bridge_vlan_aware 1
|
|
|
|
|
vlan_ids 100
|
|
|
|
|
EOF
|
2023-02-23 21:58:44 +08:00
|
|
|
|
|
2023-02-23 22:03:19 +08:00
|
|
|
|
# 重启网络服务以应用更改
|
|
|
|
|
systemctl restart networking.service
|