Files
keenetic_ssh-web/tunnel/tunnel-uninstall.sh
Андрей Бобырев 10852b61b3 tunnel: DNAT_PORTS для разных портов (81/79/...)
Made-with: Cursor
2026-04-26 16:05:59 +03:00

64 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"
NAT_TAG_PREFIX="kssh-tunnel:dnat"
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
# удалить наши DNAT-правила (только наши теги)
while iptables -t nat -S PREROUTING 2>/dev/null | grep -q "$NAT_TAG_PREFIX:$WG_IF:"; do
RULE="$(iptables -t nat -S PREROUTING | grep "$NAT_TAG_PREFIX:$WG_IF:" | head -n 1 | sed 's/^-A /-D /')"
[ -n "$RULE" ] && iptables -t nat $RULE 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 "============================================================"