mirror of
https://github.com/andrey271192/keenetic_ssh-web.git
synced 2026-09-20 14:42:01 +00:00
tunnel: kssh-tun применяет конфиг через systemctl restart, а не wg syncconf
`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).
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user