From f9407fdae41e1e87a68606f56ecb30c487e94953 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:15:34 +0300 Subject: [PATCH] =?UTF-8?q?tunnel:=20kssh-tun=20=D0=BF=D1=80=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8F=D0=B5=D1=82=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20systemctl=20restart,?= =?UTF-8?q?=20=D0=B0=20=D0=BD=D0=B5=20wg=20syncconf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `wg syncconf "$IF" <(wg-quick strip "$IF")` падал тихо в окружении, где process substitution не сработал, и файл /etc/wireguard/wg0.conf обновлялся, а ядерное состояние wg-интерфейса оставалось старым. В итоге peer добавлен в .conf, но `wg show` его не видит и трафика нет. Теперь после регенерации конфига делаем `systemctl restart wg-quick@$IF`. Это пересоздаёт интерфейс целиком — дороже, чем syncconf, но гарантирует применение. Если systemd-юнит не enabled, остаётся fallback на syncconf через временный файл (без process substitution). --- tunnel/kssh-tun | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tunnel/kssh-tun b/tunnel/kssh-tun index 2679383..b5e9c22 100755 --- a/tunnel/kssh-tun +++ b/tunnel/kssh-tun @@ -42,8 +42,19 @@ EOF fi install -m 600 "$TMP" "$CONF" rm -f "$TMP" - if ip link show "$WG_IF" >/dev/null 2>&1; then - wg syncconf "$WG_IF" <(wg-quick strip "$WG_IF") 2>/dev/null || true + # Самый надёжный способ применить новый конфиг: рестарт wg-quick@WG_IF. + # `wg syncconf` через process substitution падал молча на части систем. + if command -v systemctl >/dev/null 2>&1 && \ + systemctl is-enabled "wg-quick@$WG_IF" >/dev/null 2>&1; then + systemctl restart "wg-quick@$WG_IF" || \ + echo "warning: systemctl restart wg-quick@$WG_IF не удался" >&2 + elif ip link show "$WG_IF" >/dev/null 2>&1; then + TMP_STRIP="$(mktemp)" + if wg-quick strip "$WG_IF" > "$TMP_STRIP" 2>/dev/null; then + wg syncconf "$WG_IF" "$TMP_STRIP" || \ + echo "warning: wg syncconf не удался — перезапустите wg-quick@$WG_IF" >&2 + fi + rm -f "$TMP_STRIP" fi }