refactor: разделил AMNEZIA_SERVER и KILL_SWITCH_EXCEPTIONS
- AMNEZIA_SERVER — только IP/домены серверов Amnezia (для поднятия VPN) - KILL_SWITCH_EXCEPTIONS — дополнительные исключения (git, etc.) - Обе переменные поддерживают IP и домены (DNS-резолвинг) - setup.sh: раздельные промпты в меню Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ GATEWAY="${GATEWAY:-192.168.1.1}"
|
||||
DEV="${DEV:-wlp1s0}"
|
||||
LOCAL_DNS="${LOCAL_DNS:-}"
|
||||
AMNEZIA_SERVER="${AMNEZIA_SERVER:-}"
|
||||
KILL_SWITCH_EXCEPTIONS="${KILL_SWITCH_EXCEPTIONS:-}"
|
||||
SETNAME="ru-direct"
|
||||
CACHE="/var/cache/ru-delegations.txt"
|
||||
IPSET_SAVE="/etc/ipset.conf"
|
||||
@@ -161,15 +162,32 @@ ENTRIES=$(ipset list "$SETNAME" 2>/dev/null | grep -c '/')
|
||||
echo "ipset обновлён: $ENTRIES записей"
|
||||
|
||||
|
||||
# --- Сервер Amnezia в исключения (чтобы мог подключиться при kill switch) ---
|
||||
|
||||
if [ -n "$AMNEZIA_SERVER" ]; then
|
||||
ipset add "$SETNAME" "$AMNEZIA_SERVER" -exist 2>/dev/null || true
|
||||
echo "Сервер Amnezia $AMNEZIA_SERVER добавлен в ipset $SETNAME"
|
||||
|
||||
# --- Исключения для kill switch ---
|
||||
|
||||
# AMNEZIA_SERVER — IP/домены серверов Amnezia (нужны для поднятия VPN при активном kill switch)
|
||||
# KILL_SWITCH_EXCEPTIONS — дополнительные IP/домены, доступные напрямую даже при kill switch
|
||||
ALL_EXC="${AMNEZIA_SERVER} ${KILL_SWITCH_EXCEPTIONS}"
|
||||
if [ -n "${ALL_EXC// }" ]; then
|
||||
for item in $ALL_EXC; do
|
||||
if echo "$item" | grep -qE "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"; then
|
||||
ips="$item"
|
||||
else
|
||||
ips=$(dig +short "$item" A 2>/dev/null)
|
||||
fi
|
||||
for ip in $ips; do
|
||||
ipset add ru-direct "$ip" -exist 2>/dev/null || true
|
||||
echo "Исключение kill switch: $item → $ip (ipset)"
|
||||
done
|
||||
done
|
||||
fi
|
||||
# Сохраняем ipset на диск (с учётом сервера Amnezia)
|
||||
ipset save "$SETNAME" > "$IPSET_SAVE"
|
||||
echo "ipset сохранён в $IPSET_SAVE"
|
||||
|
||||
ipset save ru-direct > /etc/ipset.conf
|
||||
echo "ipset сохранён в /etc/ipset.conf"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# --- Добавляем маршруты ---
|
||||
@@ -203,11 +221,23 @@ for net in $LOCAL_NETS; do
|
||||
ip route replace "$net" via "$GATEWAY" dev "$DEV" 2>/dev/null
|
||||
done
|
||||
|
||||
# Маршрут для сервера Amnezia (чтобы мог подключиться при kill switch)
|
||||
if [ -n "$AMNEZIA_SERVER" ]; then
|
||||
ip route replace "$AMNEZIA_SERVER/32" via "$GATEWAY" dev "$DEV" 2>/dev/null
|
||||
echo "Маршрут для сервера Amnezia $AMNEZIA_SERVER добавлен"
|
||||
fi
|
||||
# Маршруты для исключений kill switch
|
||||
ALL_EXC="${AMNEZIA_SERVER} ${KILL_SWITCH_EXCEPTIONS}"
|
||||
if [ -n "${ALL_EXC// }" ]; then
|
||||
for item in $ALL_EXC; do
|
||||
if echo "$item" | grep -qE "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"; then
|
||||
ips="$item"
|
||||
else
|
||||
ips=$(dig +short "$item" A 2>/dev/null)
|
||||
fi
|
||||
for ip in $ips; do
|
||||
ip route replace "$ip/32" via "$GATEWAY" dev "$DEV" 2>/dev/null
|
||||
echo "Маршрут для исключения: $item → $ip"
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
# --- DNS для *.loc через LOCAL_DNS (если задан) ---
|
||||
|
||||
Reference in New Issue
Block a user