fix: автоотключение IPv6 при настройке kill switch

IPv6-трафик обходит UFW (который работает только с IPv4) — kill switch
не защищает от утечек по IPv6.

Изменения:
- ru-bypass.sh: молча отключает IPv6 (sysctl + /etc/sysctl.d) при
  каждом запуске, если есть глобальные IPv6-адреса
- ks-on.sh: тоже отключает IPv6, но без интерактивного вопроса
  (раньше спрашивал «Отключить IPv6? [Y/n]»)
- ai-setup.sh (direct mode): не восстанавливает IPv6, если
  UFW kill switch активен (раньше безусловно включал обратно,
  из-за чего после каждого запуска setup.sh IPv6 снова утекал)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Виталий Никитенко
2026-06-08 12:48:32 +03:00
parent d2bbcc7e33
commit cb8c3c9544
3 changed files with 35 additions and 15 deletions

View File

@@ -371,6 +371,21 @@ done
echo "iptables: прямые правила добавлены."
# --- Отключаем IPv6 (утечка мимо UFW kill switch) ---
# UFW работает только с IPv4 — IPv6-трафик обходит kill switch полностью.
_ipv6_cnt=$(ip -6 addr show scope global 2>/dev/null | grep -c 'inet6' || true)
if [ "$_ipv6_cnt" -gt 0 ]; then
sysctl -w net.ipv6.conf.all.disable_ipv6=1 >/dev/null 2>&1
sysctl -w net.ipv6.conf.default.disable_ipv6=1 >/dev/null 2>&1
cat > /etc/sysctl.d/99-disable-ipv6.conf << 'SYSCTEOF'
# Отключение IPv6 — требуется для защиты kill switch (UFW работает только с IPv4)
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
SYSCTEOF
systemctl restart systemd-resolved 2>/dev/null || true
echo "IPv6: отключён ($_ipv6_cnt адресов) для защиты kill switch."
fi
echo ""
echo "Готово."
RU_EXAMPLE=$(dig +short ya.ru A 2>/dev/null | head -1)