#!/bin/bash # ================================================================= # 🚀 WireGuard 一键添加新设备脚本 (自动递增 IP + 扫码版) # ================================================================= G='' Y='' C='' R='' N='' WG_CONF="/etc/wireguard/wg0.conf" echo -e "${Y}>>> [1/4] 正在检查环境与依赖...${N}" if [ ! -f "$WG_CONF" ]; then echo -e "${R}❌ 错误:未找到 WireGuard 配置文件!请确认是否已安装服务端。${N}" exit 1 fi # 检查并安装 qrencode if ! command -v qrencode &> /dev/null; then echo -e "${Y}>>> 检测到未安装 qrencode,正在为您自动安装以支持二维码生成...${N}" sudo apt-get update > /dev/null 2>&1 sudo apt-get install qrencode -y > /dev/null 2>&1 fi echo -e "${Y}>>> [2/4] 正在计算下一个可用的 IP 地址...${N}" PEER_COUNT=$(grep -c "^\[Peer\]" $WG_CONF) NEXT_IP_OCTET=$((PEER_COUNT + 2)) if [ $NEXT_IP_OCTET -gt 254 ]; then echo -e "${R}❌ 错误:IP 地址已分配完毕 (最大支持253个设备)。${N}" exit 1 fi CLIENT_IP_V4="10.66.66.${NEXT_IP_OCTET}" CLIENT_IP_V6="fd66:66:66::${NEXT_IP_OCTET}" echo -e "${G}✅ 分配成功!新设备 IP 将为: ${CLIENT_IP_V4}${N}" echo -e "${Y}>>> [3/4] 正在生成新设备密钥并追加到服务器...${N}" C_PRI=$(wg genkey) C_PUB=$(echo "$C_PRI" | wg pubkey) S_PRI=$(grep "^PrivateKey" $WG_CONF | head -n 1 | awk '{print $3}') S_PUB=$(echo "$S_PRI" | wg pubkey) ENDPOINT_IP=$(curl -s4 -m 5 ipv4.icanhazip.com || curl -s4 -m 5 api.ipify.org) cat >> $WG_CONF < /dev/null 2>&1 echo -e "${G}✅ 服务器端配置已更新并重启!${N}" echo -e "${Y}>>> [4/4] 为您生成新设备的专属配置:${N}" CONF_TXT="[Interface] PrivateKey = $C_PRI Address = $CLIENT_IP_V4/32, $CLIENT_IP_V6/128 DNS = 1.1.1.1, 8.8.8.8 [Peer] PublicKey = $S_PUB Endpoint = ${ENDPOINT_IP}:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25" echo "------------------------------------------------------" echo -e "${C}【 📱 手机扫码直连 】(请打开 WireGuard App 扫描下方二维码)${N}" echo "------------------------------------------------------" echo "$CONF_TXT" | qrencode -t ansiutf8 echo "------------------------------------------------------" echo -e "${C}【 💻 文本配置单备用 】(复制到电脑端)${N}" echo "------------------------------------------------------" echo "$CONF_TXT" echo "------------------------------------------------------" echo -e "${G}🎉 新设备添加成功!扫码或复制均可秒连。${N}"