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

View File

@@ -79,6 +79,15 @@ up() {
ip addr add "\$ADDR" dev "\$WG_IF"
ip link set "\$WG_IF" up
ip route add "\$SUBNET" dev "\$WG_IF" 2>/dev/null || true
# Keenetic: входящий трафик на сторонние интерфейсы режется stricht rp_filter +
# нет ACCEPT для этих интерфейсов. Без этих двух строк handshake пройдёт, но
# пинг и любые ответы VPS→роутер будут молча дропаться.
sysctl -w net.ipv4.conf.all.rp_filter=2 >/dev/null 2>&1 || true
sysctl -w "net.ipv4.conf.\$WG_IF.rp_filter=2" >/dev/null 2>&1 || true
if command -v iptables >/dev/null 2>&1; then
iptables -C INPUT -i "\$WG_IF" -j ACCEPT 2>/dev/null || iptables -I INPUT 1 -i "\$WG_IF" -j ACCEPT
iptables -C OUTPUT -o "\$WG_IF" -j ACCEPT 2>/dev/null || iptables -I OUTPUT 1 -o "\$WG_IF" -j ACCEPT
fi
if ! wg show "\$WG_IF" | grep -q '^peer:'; then
echo "ВНИМАНИЕ: peer не появился в \$WG_IF — handshake не состоится."
echo "Проверьте \$CONF и перезапустите."
@@ -87,6 +96,14 @@ up() {
}
down() {
ip link del "\$WG_IF" 2>/dev/null || true
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
echo "stopped \$WG_IF"
}