This commit is contained in:
spiritlhl 2024-04-25 06:06:47 +00:00
parent 29e287c2a0
commit 4b56574b6a
2 changed files with 14 additions and 7 deletions

View file

@ -18,6 +18,7 @@
- 修复面板地址可能绑定到IPV6上的问题强制监听IPV4的端口
- 修复KVM开设独立IPV4的虚拟机时可能遇到的查询宿主机IP区间和网关地址失败的问题
- 优化独立IPV4地址的虚拟机开设的脚本强制要求手动附加地址的时候附加IP非同子网而自动附加时需要附加IP同子网
- 优化手动附加地址的时候附加IPV4可指定MAC地址
- 上述脚本错选时增加更换脚本的提示
[更新日志](CHANGELOG.md)

View file

@ -5,10 +5,11 @@
# 手动指定要绑定的IPV4地址 额外的IPV4地址需要与本机的IPV4地址在不在同一个子网内即前缀不一致
# 此时开设出的虚拟机的网关为宿主机的IPV4地址它充当透明网桥并且不是路由路径的一部分。
# 这意味着到达路由器的数据包将具有开设出的虚拟机的源 MAC 地址。
# 如果路由器无法识别源 MAC 地址,流量将被标记为“滥用”,并可能导致服务器被阻止。
# 如果路由器无法识别源 MAC 地址,流量将被标记为“滥用”,并可能导致服务器被阻止。(如果使用Hetzner务必提供防止被报告滥用)
# ./buildvm_manual_ip.sh VMID 用户名 密码 CPU核数 内存 硬盘 系统 存储盘 IPV4地址 是否附加IPV6(默认为N)
# ./buildvm_manual_ip.sh 152 test1 1234567 1 512 5 debian11 local a.b.c.d/24 N
# ./buildvm_manual_ip.sh VMID 用户名 密码 CPU核数 内存 硬盘 系统 存储盘 IPV4地址 是否附加IPV6(默认为N) MAC地址(不提供时将不指定虚拟机的MAC地址)
# 示例:
# ./buildvm_manual_ip.sh 152 test1 oneclick123 1 512 5 debian11 local a.b.c.d/24 N 4c:52:62:0e:04:c6
cd /root >/dev/null 2>&1
# 创建独立IPV4地址的虚拟机
@ -23,6 +24,7 @@ storage="${8:-local}"
extra_ip="${9}"
independent_ipv6="${10:-N}"
independent_ipv6=$(echo "$independent_ipv6" | tr '[:upper:]' '[:lower:]')
mac_address="${11}"
rm -rf "vm$name"
user_ip=""
user_ip_range=""
@ -411,10 +413,14 @@ else
ipv6_gateway=$(cat /usr/local/bin/pve_ipv6_gateway)
fi
fi
if [ "$independent_ipv6" == "n" ]; then
qm create $vm_num --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores $core --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0
else
qm create $vm_num --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores $core --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0 --net1 virtio,bridge=vmbr2,firewall=0
if [ "$independent_ipv6" = "n" ] && [ -n "$mac_address" ]; then
qm create "$vm_num" --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores "$core" --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0,macaddr="$mac_address"
elif [ "$independent_ipv6" = "n" ]; then
qm create "$vm_num" --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores "$core" --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0
elif [ "$independent_ipv6" = "y" ] && [ -n "$mac_address" ]; then
qm create "$vm_num" --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores "$core" --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0,macaddr="$mac_address" --net1 virtio,bridge=vmbr2,firewall=0
elif [ "$independent_ipv6" = "y" ]; then
qm create "$vm_num" --agent 1 --scsihw virtio-scsi-single --serial0 socket --cores "$core" --sockets 1 --cpu host --net0 virtio,bridge=vmbr0,firewall=0 --net1 virtio,bridge=vmbr2,firewall=0
fi
if [ "$system_arch" = "x86" ]; then
qm importdisk $vm_num /root/qcow/${system}.qcow2 ${storage}