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>
49 lines
2.1 KiB
Bash
49 lines
2.1 KiB
Bash
#!/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
|