From 6fafdce1f34c131a8136dc6e0f3b8b8de24f7eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Sun, 26 Apr 2026 12:05:45 +0300 Subject: [PATCH] =?UTF-8?q?tunnel:=20client=20conf=20=D0=B1=D0=B5=D0=B7=20?= =?UTF-8?q?Address=20=E2=80=94=20wg=20setconf=20=D0=BD=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=BB=D1=87=D0=B0=D0=BB=20=D0=BD=D0=B0=20=D1=8D=D1=82?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `wg setconf` принимает только базовый формат (PrivateKey/ListenPort + [Peer]), без wg-quick-полей (Address/DNS/Table/...). Раньше клиентский wg0.conf содержал `Address = ...`, на котором setconf падал и не дочитывал [Peer]. Интерфейс поднимался, но без peer-а — handshake не отправлялся, сервер не знал endpoint, пинги через туннель не шли. Исправление: - Убираем Address из тела conf, ставим как ip addr add (это уже было). - В init.up добавили проверку: если после wg setconf нет блока `peer:` в `wg show`, печатаем ВНИМАНИЕ — чтобы такая поломка не оставалась тихой. --- tunnel/tunnel-install.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tunnel/tunnel-install.sh b/tunnel/tunnel-install.sh index 2fe7715..3f9d0b2 100755 --- a/tunnel/tunnel-install.sh +++ b/tunnel/tunnel-install.sh @@ -41,10 +41,12 @@ chmod 700 "$WG_DIR" CONF="$WG_DIR/$WG_IF.conf" umask 077 +# Формат для `wg setconf` — без wg-quick полей (Address/DNS/Table/PostUp...). +# Address выставляем через `ip addr add` в init-скрипте. cat > "$CONF" </dev/null 2>&1 && ip link del "\$WG_IF" 2>/dev/null - ip link add "\$WG_IF" type wireguard - wg setconf "\$WG_IF" "\$CONF" + ip link add "\$WG_IF" type wireguard || { echo "ip link add не сработал — нет модуля wireguard в ядре?"; return 1; } + if ! wg setconf "\$WG_IF" "\$CONF"; then + echo "wg setconf вернул ошибку — проверьте \$CONF (формат: только PrivateKey + [Peer])" + return 1 + fi ip addr add "\$ADDR" dev "\$WG_IF" ip link set "\$WG_IF" up ip route add "\$SUBNET" dev "\$WG_IF" 2>/dev/null || true + if ! wg show "\$WG_IF" | grep -q '^peer:'; then + echo "ВНИМАНИЕ: peer не появился в \$WG_IF — handshake не состоится." + echo "Проверьте \$CONF и перезапустите." + fi echo "started \$WG_IF \$ADDR" } down() {