tunnel: фикс файрвола Keenetic + раздельные uninstall + README под ключ

- tunnel/tunnel-install.sh: в init-скрипте добавлен `iptables -I INPUT -i wg0
  -j ACCEPT`, OUTPUT-аналог и `rp_filter=2`. Без этого Keenetic режет ответы
  VPS→роутер: handshake проходит, но ping/HTTP внутри туннеля молча дропаются.
  В down() — снимаем эти же правила.

- tunnel/tunnel-uninstall.sh (новый): сносит ТОЛЬКО клиентскую часть туннеля
  (wg0.conf, init, rc.d, наши iptables-правила). Не трогает wireguard-tools,
  чужие WG-конфиги, keenetic_ssh-web, HydraRoute Neo.

- tunnel/server-uninstall.sh (новый): сносит ТОЛЬКО серверную часть туннеля
  (wg-quick@wg0, /etc/wireguard/{wg0.conf,server_*.key,peers/}, kssh-tun,
  ufw-правила kssh-tunnel). Не делает apt remove для wireguard.

- README.md: переписан под ключ. Чётко разделены два пакета (A: панель,
  B: туннель), оба ставятся и удаляются отдельно. Явно перечислено, что
  скрипты НЕ трогают (HydraRoute Neo, кастомные репо, чужие правила).
This commit is contained in:
Андрей Бобырев
2026-04-26 14:22:33 +03:00
parent d90f7e9709
commit 3684c0dc0b
4 changed files with 426 additions and 166 deletions

57
tunnel/tunnel-uninstall.sh Executable file
View File

@@ -0,0 +1,57 @@
#!/bin/sh
# tunnel/tunnel-uninstall.sh — удаление WireGuard-клиента kssh-tunnel с роутера (Entware).
# Снимает ТОЛЬКО то, что поставил tunnel-install.sh:
# - интерфейс wg0 (или WG_IF)
# - /opt/etc/wireguard/<WG_IF>.conf
# - init-скрипт /opt/etc/init.d/S50kssh-tunnel и rc.d-симлинк
# - правила iptables/sysctl, добавленные туннелем (ACCEPT на wg0)
#
# Что НЕ трогает: пакет wireguard-tools, общие правила iptables, конфиги других
# WireGuard-интерфейсов (Keenetic NDM, HydraRoute и пр.), keenetic_ssh-web.
set -e
WG_IF="${WG_IF:-wg0}"
WG_DIR="/opt/etc/wireguard"
INIT="/opt/etc/init.d/S50kssh-tunnel"
RCD="/opt/etc/rc.d/S50kssh-tunnel"
echo "==> kssh-tunnel: удаление клиента ($WG_IF)"
# 1. Остановить интерфейс
if [ -x "$INIT" ]; then
"$INIT" stop 2>/dev/null || true
fi
if ip link show "$WG_IF" >/dev/null 2>&1; then
ip link del "$WG_IF" 2>/dev/null || true
fi
# 2. Снять правила, которые добавляли при старте туннеля
if command -v iptables >/dev/null 2>&1; then
while iptables -C INPUT -i "$WG_IF" -j ACCEPT 2>/dev/null; do
iptables -D INPUT -i "$WG_IF" -j ACCEPT 2>/dev/null || break
done
while iptables -C OUTPUT -o "$WG_IF" -j ACCEPT 2>/dev/null; do
iptables -D OUTPUT -o "$WG_IF" -j ACCEPT 2>/dev/null || break
done
fi
# 3. Удалить файлы туннеля (НЕ трогаем чужие WG-конфиги в этой папке)
rm -f "$WG_DIR/$WG_IF.conf"
rm -f "$RCD" "$INIT"
# Папку wireguard сносим только если она пуста (там могут лежать чужие конфиги)
rmdir "$WG_DIR" 2>/dev/null || true
echo
echo "============================================================"
echo "Готово. Удалены:"
echo " $WG_DIR/$WG_IF.conf"
echo " $INIT"
echo " $RCD (если был)"
echo " iptables ACCEPT для $WG_IF"
echo
echo "НЕ удалены (используются другими, не наша зона ответственности):"
echo " пакет wireguard-tools (opkg)"
echo " общие правила iptables / sysctl"
echo " /opt/etc/wireguard/* кроме $WG_IF.conf"
echo " keenetic_ssh-web (см. uninstall.sh в основном репо)"
echo "============================================================"