- ru-bypass.sh: маршруты для 10/8, 172.16/12, 192.168/16 через локальный роутер - ru-bypass.sh: UFW правила для тех же диапазонов (однократно, before.rules) - ru-bypass.sh: пример IP в конце теперь резолвится из ya.ru динамически - README.md: описание RFC1918 bypass в разделах про UFW и про шаги скрипта Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Сетевые скрипты
Скрипты для окружения с Amnezia VPN и UFW kill switch.
Главная идея: весь не-.ru трафик идёт через Amnezia, .ru сайты (ozon.ru, госуслуги и т.д.) - напрямую через провайдера с российским IP. Если Amnezia падает - не-.ru трафик блокируется UFW, .ru продолжает работать.
Скрипты
| Файл | Назначение |
|---|---|
ru-bypass.sh |
Основной - настраивает .ru маршруты и ipset |
ks-off.sh |
Временно отключить UFW kill switch (доступ без VPN) |
ks-on.sh |
Восстановить UFW kill switch |
Все скрипты запускаются явно от root. Никакой автоустановки нет.
Как работает ru-bypass
Принцип
Amnezia поднимает интерфейс amn0 и захватывает весь трафик двумя широкими маршрутами:
0.0.0.0/1 dev amn0128.0.0.0/1 dev amn0
ru-bypass.sh добавляет тысячи более специфичных маршрутов для .ru IP-блоков через
локальный роутер (например 95.173.0.0/16 via 192.168.1.1 dev wlp1s0). Ядро Linux
выбирает самый специфичный маршрут - .ru уходит напрямую, всё остальное - в amn0.
UFW kill switch
default deny outgoing — запрещено всё по умолчанию
allow out on amn0 — через Amnezia можно всё
before.rules: ipset ru-direct — для .ru IP разрешён прямой выход на wlp1s0
before.rules: 10/8, 172.16/12,
192.168/16 — RFC1918 (*.loc) разрешён прямой выход на wlp1s0
Если Amnezia падает: amn0 исчезает, не-.ru трафик блокируется UFW. Маршруты .ru
через wlp1s0 и правило UFW для ipset остаются - .ru работает.
Что делает скрипт при запуске
- Скачивает список .ru IP-блоков из RIPE (кэш 24 часа в
/var/cache/ru-delegations.txt) - Создаёт/обновляет ipset
ru-direct(~11000 записей) - Сохраняет ipset в
/etc/ipset.conf - Добавляет маршруты через локальный роутер для всех .ru блоков
- Добавляет маршруты для RFC1918 диапазонов (
10/8,172.16/12,192.168/16) - нужно для*.loc - При первом запуске: добавляет правила в
/etc/ufw/before.rulesи устанавливает systemd сервисы
Сервисы (устанавливаются однократно)
ru-ipset-restore.service- запускается до UFW, восстанавливает ipset из файла. Нужен потому что UFW стартует рано и не знает об ipsetru-direct.ru-bypass.service- запускается после network-online, качает свежий RIPE-список и добавляет маршруты.- NM dispatcher
/etc/NetworkManager/dispatcher.d/99-ru-bypass- автоматически перезапускает скрипт когда amn0 поднимается (Amnezia переподключилась).
Запуск
Первый запуск / обновление
sudo bash ~/AI/study/ai-setup/home-configs/network/ru-bypass.sh
Скрипт сам установит сервисы, добавит правило UFW и настроит NM dispatcher.
Параметры для другой сети
По умолчанию используется домашняя сеть (GATEWAY=192.168.1.1, DEV=wlp1s0).
Для другой машины передай параметры через env:
sudo GATEWAY=10.0.0.1 DEV=enp3s0 bash ru-bypass.sh
Чтобы узнать нужные значения:
ip route show default
# Пример: default via 10.0.0.1 dev enp3s0 proto dhcp
# ^^^^^^^ ^^^^^^
# GATEWAY DEV
Офисная машина
Если в офисе другой gateway и другой сетевой интерфейс - просто передай их через env.
Amnezia там тоже поднимает amn0, так что остальное работает одинаково.
Пример (офис с проводным интерфейсом):
sudo GATEWAY=192.168.0.1 DEV=eth0 bash ru-bypass.sh
ks-off.sh и ks-on.sh
Для ситуаций когда нужен временный доступ без VPN (сайты, которые блокируют нероссийские IP, например для оплаты или личного кабинета).
ks-off.sh - отключить kill switch
sudo bash ~/AI/study/ai-setup/home-configs/network/ks-off.sh
Отключает UFW. После этого - отключить Amnezia через GUI. Трафик пойдёт напрямую через провайдера (российский IP).
Важно: выйди из Claude Code перед этим - сессия будет идти с другого IP.
ks-on.sh - восстановить kill switch
sudo bash ~/AI/study/ai-setup/home-configs/network/ks-on.sh
Сначала подключи Amnezia через GUI (дождись появления amn0), потом запускай. Иначе скрипт предупредит - без amn0 UFW сразу заблокирует весь интернет.
Типичный workflow
# Нужен ru-сайт без VPN:
1. Выйти из Claude Code
2. sudo bash ks-off.sh
3. Отключить Amnezia в GUI
# Возврат к нормальному режиму:
4. Подключить Amnezia в GUI (подождать amn0)
5. sudo bash ks-on.sh
6. Войти в Claude Code
Проверка
# Эти команды без sudo:
ip route get 8.8.8.8 # -> dev amn0 (Google через VPN)
ip route get 95.173.136.1 # -> dev wlp1s0 (ozon.ru напрямую)
ip route get $(dig +short api.anthropic.com A | head -1) # -> dev amn0
# Полные тесты:
bash ~/AI/study/ai-setup/tests/test_network.sh