Files
ai-setup/scripts/ks-on.sh
Виталий Никитенко cb8c3c9544 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>
2026-06-08 12:48:32 +03:00

49 lines
2.1 KiB
Bash
Raw Permalink 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/bash
# ks-on.sh — включить/восстановить kill switch UFW
# Перед этим подключи Amnezia через её GUI, иначе интернет будет полностью заблокирован.
if [ "$(id -u)" != "0" ]; then
echo "Запускай от root: sudo bash $0"
exit 1
fi
echo "Проверяем что Amnezia поднята..."
if ! ip link show amn0 &>/dev/null && ! ip link show amnezia0 &>/dev/null; then
echo ""
echo "ВНИМАНИЕ: интерфейс amn0/amnezia0 не найден!"
echo "Похоже Amnezia не подключена."
echo "Если включить UFW сейчас — интернет полностью заблокируется."
echo ""
read -p "Всё равно включить kill switch? [y/N] " CONFIRM
if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
echo "Отменено."
exit 0
fi
fi
# Отключаем IPv6 (утечка мимо UFW kill switch, UFW работает только с IPv4)
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
sysctl -w net.ipv6.conf.default.disable_ipv6=1 >/dev/null
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 адресов)."
fi
echo "Включаем UFW kill switch..."
ufw default deny outgoing >/dev/null 2>&1 || true
ufw allow out on amn0 >/dev/null 2>&1 || true
ufw enable
echo ""
echo "Готово. Kill switch активен."
echo ""
ufw status | head -3
_log_file="${USER_HOME:-$HOME}/.config/ai-setup/setup.log"
printf '%s [ks-on] Kill switch включён на %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$(hostname)" >> "$_log_file" 2>/dev/null || true