- setup.sh: функция _log(), вызов при каждом пункте меню - scripts/ru-bypass.sh, ks-on.sh, ks-off.sh: пишут события в лог через USER_HOME - setup.sh item 5: показывает tail -10 лога в «Последние события» - USER_HOME передаётся через sudo env в ks-on/ks-off/ru-bypass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
45 lines
1.9 KiB
Bash
45 lines
1.9 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 — глобальные адреса могут утекать мимо VPN
|
|
ipv6_cnt=$(ip -6 addr show scope global 2>/dev/null | grep -c 'inet6' || true)
|
|
if [ "$ipv6_cnt" -gt 0 ]; then
|
|
echo ""
|
|
echo "Обнаружены глобальные IPv6 адреса ($ipv6_cnt шт.) — трафик может утекать мимо VPN."
|
|
read -p "Отключить IPv6? [Y/n] " ans
|
|
if [ "$ans" != "n" ] && [ "$ans" != "N" ]; then
|
|
sysctl -w net.ipv6.conf.all.disable_ipv6=1 >/dev/null
|
|
sysctl -w net.ipv6.conf.default.disable_ipv6=1 >/dev/null
|
|
echo "IPv6 отключён."
|
|
fi
|
|
fi
|
|
|
|
echo "Включаем UFW kill switch..."
|
|
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
|