diff --git a/README.md b/README.md index 5fac178..f74cde8 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ 4. получает параметры подключения, 5. пишет локальный `/etc/wireguard/wg0.conf`, 6. запускает и включает `wg-quick@wg0`. + Каждый запуск клиентского установщика сначала очищает старые клиентские ключи/конфиг выбранного интерфейса и поднимает клиента заново. ## Почему выбран GUI `wireguard-ui` @@ -141,6 +142,8 @@ sudo bash server/install_server.sh \ sudo bash client/install_client.sh ``` +Важно: клиентский установщик теперь всегда выполняет reset старой конфигурации для выбранного интерфейса (`wg0` по умолчанию): удаляет клиентские ключи/конфиг и создает их заново. + ### Запуск клиента одной командой (без `git clone`) ```bash diff --git a/client/install_client.sh b/client/install_client.sh index 5440478..52b9a15 100755 --- a/client/install_client.sh +++ b/client/install_client.sh @@ -26,6 +26,7 @@ KEEPALIVE="25" usage() { cat <<'USAGE' Установка WireGuard-клиента и автоматическая регистрация на сервере. +Каждый запуск выполняет полный reset предыдущей клиентской конфигурации для выбранного интерфейса. Использование: install_client.sh [опции] @@ -152,6 +153,22 @@ install_packages() { apt_install_if_missing wireguard wireguard-tools iproute2 openssh-client sshpass ca-certificates } +reset_existing_client_install() { + log_warn "Выполняю полный reset предыдущей конфигурации клиента (${WG_INTERFACE})" + + local unit="wg-quick@${WG_INTERFACE}.service" + systemctl disable --now "$unit" >/dev/null 2>&1 || true + wg-quick down "$WG_INTERFACE" >/dev/null 2>&1 || true + + rm -f \ + "/etc/wireguard/${WG_INTERFACE}.conf" \ + "/etc/wireguard/${WG_INTERFACE}_client_private.key" \ + "/etc/wireguard/${WG_INTERFACE}_client_public.key" \ + "/etc/wireguard/${WG_INTERFACE}_client_psk.key" + + log_info "Старые конфиг/ключи клиента удалены для интерфейса ${WG_INTERFACE}" +} + ssh_base_cmd() { echo "ssh -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10 -p ${SSH_PORT} ${SERVER_USER}@${SERVER_HOST}" } @@ -333,6 +350,7 @@ main() { collect_inputs + reset_existing_client_install print_routes_info install_packages generate_keys