#!/bin/bash G='\033[0;32m' Y='\033[1;33m' R='\033[0;31m' N='\033[0m' echo -e "${Y}>>> [1/4] 正在检查环境与依赖...${N}" WG_CONF="/etc/wireguard/wg0.conf" if [ ! -f "$WG_CONF" ]; then echo -e "${R}❌ 错误: 未找到 wg0.conf${N}"; exit 1; fi if ! command -v qrencode &> /dev/null; then echo -e "${Y}>>> 正在为您安装 qrencode...${N}" apt-get update > /dev/null 2>&1 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)) CLIENT_IP_V4="10.66.66.${NEXT_IP_OCTET}" CLIENT_IP_V6="fd66:66:66::${NEXT_IP_OCTET}" 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_IPV4=$(curl -s4 -m 5 ipv4.icanhazip.com || curl -s4 -m 5 api.ipify.org) ENDPOINT_IPV6=$(curl -s6 -m 5 ipv6.icanhazip.com || curl -s6 -m 5 api6.ipify.org) echo "" >> $WG_CONF echo "[Peer]" >> $WG_CONF echo "PublicKey = $C_PUB" >> $WG_CONF echo "AllowedIPs = ${CLIENT_IP_V4}/32, ${CLIENT_IP_V6}/128" >> $WG_CONF echo -e "${Y}>>> [4/4] 正在重启 WireGuard...${N}" systemctl restart wg-quick@wg0 >/dev/null 2>&1 || (wg-quick down wg0 && wg-quick up wg0 >/dev/null 2>&1) CONF_V4="[Interface] PrivateKey = $C_PRI Address = ${CLIENT_IP_V4}/32, ${CLIENT_IP_V6}/128 DNS = 1.1.1.1, 8.8.8.8, 2606:4700:4700::1111, 2001:4860:4860::8888 [Peer] PublicKey = $S_PUB AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = ${ENDPOINT_IPV4}:51820" CONF_V6="[Interface] PrivateKey = $C_PRI Address = ${CLIENT_IP_V4}/32, ${CLIENT_IP_V6}/128 DNS = 1.1.1.1, 8.8.8.8, 2606:4700:4700::1111, 2001:4860:4860::8888 [Peer] PublicKey = $S_PUB AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = [${ENDPOINT_IPV6}]:51820" echo -e "\n${G}=========================================================================${N}" echo -e "${Y} 🟢 [IPv4 节点] 配置与二维码 ${N}" echo -e "${G}=========================================================================${N}" echo "$CONF_V4" echo "" echo "$CONF_V4" | qrencode -t ANSIUTF8 echo -e "\n\n${G}=========================================================================${N}" echo -e "${Y} 🟣 [IPv6 极速节点] 配置与二维码 (带中括号) ${N}" echo -e "${G}=========================================================================${N}" echo "$CONF_V6" echo "" echo "$CONF_V6" | qrencode -t ANSIUTF8