Files
ai-setup/scripts/ks-on.sh
2026-06-30 12:12:42 +07:00

50 lines
2.1 KiB
Bash
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/bash
# Copyright (c) 2026 Виталий Никитенко. MIT License.
# 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