docs: sync README/QUICK_START/EFFORT_MAPPING with current code

- Update ai-openrouter models in ai-setup.sh output and header
- Fix effort persistence wording (statusbar -> launcher)
- Unify KS_EXCEPTIONS -> KILL_SWITCH_EXCEPTIONS in docs and setup.sh prompt
- Clarify menu item 7 only updates AI launchers
- Add IPv6 note after ks-off.sh
- Scope UFW before.rules insertion to *filter section

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 09:16:37 +03:00
parent 6c2844ce92
commit 38b5f2710c
8 changed files with 164 additions and 123 deletions

View File

@@ -16,7 +16,9 @@
| `ks-off.sh` | Временно отключить UFW kill switch (доступ без VPN) |
| `ks-on.sh` | Восстановить UFW kill switch |
Все скрипты запускаются явно от root. Никакой автоустановки нет.
Сетевые скрипты запускаются от root. Обычно их дергает `setup.sh` через `sudo` и сохраняет
профиль в `~/.config/ai-setup/network_<profile>.conf`; сам `ru-bypass.sh` дополнительно
пишет root-конфиг `/etc/ru-bypass.conf` для systemd и NetworkManager dispatcher.
---
@@ -29,7 +31,7 @@ Amnezia поднимает интерфейс `amn0` и захватывает
- `128.0.0.0/1 dev amn0`
`ru-bypass.sh` добавляет тысячи **более специфичных** маршрутов для .ru IP-блоков через
локальный роутер (например `95.173.0.0/16 via 192.168.1.1 dev wlp1s0`). Ядро Linux
локальный роутер (например `95.173.0.0/16 via <GATEWAY> dev <DEV>`). Ядро Linux
выбирает самый специфичный маршрут - .ru уходит напрямую, всё остальное - в amn0.
### UFW kill switch
@@ -37,13 +39,13 @@ Amnezia поднимает интерфейс `amn0` и захватывает
```
default deny outgoing — запрещено всё по умолчанию
allow out on amn0 — через Amnezia можно всё
before.rules: ipset ru-direct — для .ru IP разрешён прямой выход на wlp1s0
before.rules: ipset ru-direct — для .ru IP разрешён прямой выход на DEV
before.rules: 10/8, 172.16/12,
192.168/16 — RFC1918 (*.loc) разрешён прямой выход на wlp1s0
192.168/16 — RFC1918 (*.loc) разрешён прямой выход на DEV
```
Если Amnezia падает: `amn0` исчезает, не-.ru трафик блокируется UFW. Маршруты .ru
через wlp1s0 и правило UFW для ipset остаются - .ru работает.
через `DEV` и правило UFW для ipset остаются - .ru работает.
### Что делает скрипт при запуске
@@ -52,7 +54,12 @@ before.rules: 10/8, 172.16/12,
3. Сохраняет ipset в `/etc/ipset.conf`
4. Добавляет маршруты через локальный роутер для всех .ru блоков
5. Добавляет маршруты для RFC1918 диапазонов (`10/8`, `172.16/12`, `192.168/16`) - нужно для `*.loc`
6. При первом запуске: добавляет правила в `/etc/ufw/before.rules` и устанавливает systemd сервисы
6. Добавляет встроенные исключения kill switch (`mattermost.eltex-co.ru`, `elph.eltex-co.ru`, `10.80.0.15`)
7. Добавляет пользовательские исключения из `AMNEZIA_SERVER` и `KILL_SWITCH_EXCEPTIONS`
8. Обновляет блок локальных Eltex-хостов в `/etc/hosts`
9. Если задан `LOCAL_DNS`, настраивает `resolvectl` для `~loc` на интерфейсе `DEV`
10. Обновляет `/etc/ufw/before.rules`, прямые iptables-правила и отключает IPv6 при активном kill switch
11. При первом запуске: устанавливает systemd service/timer и NetworkManager dispatcher
### Сервисы (устанавливаются однократно)
@@ -60,6 +67,7 @@ before.rules: 10/8, 172.16/12,
Нужен потому что UFW стартует рано и не знает об ipset `ru-direct`.
- `ru-bypass.service` - запускается после network-online, качает свежий RIPE-список и
добавляет маршруты.
- `ru-bypass.timer` - ежедневно запускает `ru-bypass.service` для обновления RIPE-списка.
- NM dispatcher `/etc/NetworkManager/dispatcher.d/99-ru-bypass` - автоматически перезапускает
скрипт когда amn0 поднимается (Amnezia переподключилась).
@@ -67,21 +75,39 @@ before.rules: 10/8, 172.16/12,
## Запуск
### Первый запуск / обновление
### Первый запуск / обновление через меню
```bash
bash setup.sh
# выбери пункт 2) Сеть: ru-bypass + kill switch
```
Меню предложит значения из `ip route show default`, даст выбрать профиль (`home`, `office`,
`$(hostname)` и т.д.) и сохранит:
```bash
GATEWAY=...
DEV=...
LOCAL_DNS=...
AMNEZIA_SERVER=...
KILL_SWITCH_EXCEPTIONS=...
```
### Прямой запуск скрипта
```bash
sudo bash scripts/ru-bypass.sh
```
Скрипт сам установит сервисы, добавит правило UFW и настроит NM dispatcher.
Если env-переменные не переданы, скрипт сначала читает `/etc/ru-bypass.conf`, а потом
использует legacy-дефолты `GATEWAY=192.168.1.1`, `DEV=wlp1s0`.
### Параметры для другой сети
По умолчанию используется домашняя сеть (`GATEWAY=192.168.1.1`, `DEV=wlp1s0`).
Для другой машины передай параметры через env:
Для другой сети передай параметры через env:
```bash
sudo GATEWAY=10.0.0.1 DEV=enp3s0 bash ru-bypass.sh
sudo GATEWAY=10.0.0.1 DEV=enp3s0 LOCAL_DNS=10.0.0.53 bash scripts/ru-bypass.sh
```
Чтобы узнать нужные значения:
@@ -94,12 +120,13 @@ ip route show default
### Офисная машина
Если в офисе другой gateway и другой сетевой интерфейс - просто передай их через env.
Amnezia там тоже поднимает `amn0`, так что остальное работает одинаково.
Если в офисе другой gateway и другой сетевой интерфейс - создай отдельный профиль через
пункт 2 в `setup.sh` или передай значения через env. Amnezia там тоже поднимает `amn0`,
так что остальное работает одинаково.
Пример (офис с проводным интерфейсом):
```bash
sudo GATEWAY=192.168.0.1 DEV=eth0 bash ru-bypass.sh
sudo GATEWAY=192.168.0.1 DEV=eth0 LOCAL_DNS=192.168.0.53 bash scripts/ru-bypass.sh
```
---
@@ -118,6 +145,9 @@ sudo bash scripts/ks-off.sh
Отключает UFW. После этого - отключить Amnezia через GUI. Трафик пойдёт напрямую через
провайдера (российский IP).
**Примечание:** IPv6 остаётся отключённым после `ks-off.sh` (если он был выключен `ks-on.sh`
или `ru-bypass.sh`). Он восстановится автоматически при следующем `ks-on.sh` или перезагрузке.
**Важно:** выйди из Claude Code перед этим - сессия будет идти с другого IP.
### ks-on.sh - восстановить kill switch
@@ -150,7 +180,7 @@ sudo bash scripts/ks-on.sh
```bash
# Эти команды без 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 95.173.136.1 # -> dev <DEV> (ozon.ru напрямую)
ip route get $(dig +short api.anthropic.com A | head -1) # -> dev amn0
# Полные тесты: