Add Object B and self-growth canons with Cursor ledger rules; refresh connectivity and VPN runbooks.
Track day metrics/anamnesis HARD rules under .cursor/rules and personal docs so each screening updates days/{KIN}, dynamics, and big-data ledger.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -11,7 +11,9 @@
|
||||
|
||||
## SSH SOCKS: выход в интернет через DO без WireGuard / Shadowsocks
|
||||
|
||||
Тот же сервер **209.38.32.21**. Для **Cursor** (10809) и **Telegram** (1081) можно обойтись без Docker-VPN: локальный SOCKS через SSH, снаружи — IP DO только по цепочке **Mac→RU→DO** (`telegram-socks-via-do`). Прямой Mac→DO для этих скриптов не используется. Быстрое переключение режимов: [SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md), скрипты в **`scripts/vpn/`** (из корня репозитория: `./scripts/vpn/ssh-exit-mode.sh`). Подробности по IDE: [docs/cursor/README.md](../../cursor/README.md).
|
||||
Тот же сервер **209.38.32.21**. Для **Cursor** / SSH-exit (**10809**) и **Telegram** (**1081**) можно обойтись без Docker-VPN: локальный SOCKS через SSH, снаружи — IP DO только по цепочке **Mac→RU→DO** (`telegram-socks-via-do`). Прямой Mac→DO для этих скриптов не используется. Быстрое переключение режимов: [SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md), операционный сброс: [RUNBOOK.md](./RUNBOOK.md), скрипты в **`scripts/vpn/`** (из корня репозитория: `./scripts/vpn/ssh-exit-mode.sh`).
|
||||
|
||||
**Важно:** `ru` / `ru-do` на macOS включают **системный SOCKS** на 10809. Если туннель умер, а SOCKS в системе остался — Thunderbird и браузер ломаются при живом `curl`. Мягкий off: `networksetup -setsocksfirewallproxystate "Wi-Fi" off`. Подробности по IDE: [docs/cursor/README.md](../../cursor/README.md).
|
||||
|
||||
---
|
||||
|
||||
@@ -47,7 +49,8 @@ Method: chacha20-ietf-poly1305
|
||||
|
||||
### Основные руководства
|
||||
|
||||
- **[SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md)** — быстрое переключение: локальный IP / RU / Mac→RU→DO; скрипты: **`scripts/vpn/`** в корне репозитория (`./scripts/vpn/ssh-exit-mode.sh`)
|
||||
- **[RUNBOOK.md](./RUNBOOK.md)** — старт RU / сброс при мёртвом интернете (абсолютные пути)
|
||||
- **[SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md)** — режимы: локальный IP / RU / Mac→RU→DO; скрипты: **`scripts/vpn/`**
|
||||
|
||||
- **[SHADOWSOCKS.md](./SHADOWSOCKS.md)** - Полное руководство по Shadowsocks
|
||||
- Развертывание сервера
|
||||
@@ -77,8 +80,9 @@ Method: chacha20-ietf-poly1305
|
||||
|
||||
Все скрипты находятся в папке `scripts/`:
|
||||
|
||||
- **`scripts/vpn/ssh-exit-mode.sh`** — режимы SOCKS: `local` | `ru` | `ru-do` | `status` | `verify` (см. [SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md))
|
||||
- **`scripts/vpn/ssh-exit-mode.sh`** — режимы SOCKS: `local` | `ru` | `ru-do` | `status` | `verify` (см. [SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md)); на macOS `ru`/`ru-do` включают системный SOCKS
|
||||
- **`scripts/vpn/exit-via-local.sh`**, **`exit-via-ru.sh`**, **`exit-via-ru-do.sh`** — короткие вызовы тех же режимов
|
||||
- **`scripts/vpn/install-exit-aliases.sh`** — алиасы `exit-ru` / `exit-local` / `exit-ru-do` в `~/.zshrc`
|
||||
|
||||
- `scripts/toggle-shadowsocks-proxy.sh` - Переключение системного прокси
|
||||
- `scripts/check-proxy-status.sh` - Проверка статуса прокси
|
||||
|
||||
257
docs/connectivity/vpn/RUNBOOK.md
Normal file
257
docs/connectivity/vpn/RUNBOOK.md
Normal file
@@ -0,0 +1,257 @@
|
||||
# Runbook: выход в интернет через RU-хостинг (SSH SOCKS)
|
||||
|
||||
Симптом: **RU-сервисы режут доступ из‑за рубежа** (бан иностранного IP). Нужен выход с IP `ru.hunab.app` (**149.154.64.19**).
|
||||
|
||||
Команды ниже — **из любой папки** (абсолютные пути).
|
||||
|
||||
Корень репо: `/Users/eternal/code/local_machine`
|
||||
|
||||
---
|
||||
|
||||
## Быстрый старт (включить RU)
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh
|
||||
```
|
||||
|
||||
Что делает: SOCKS `127.0.0.1:10809` → `hsites-ahau` + **системный SOCKS** на Wi‑Fi.
|
||||
|
||||
Проверка:
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/ssh-exit-mode.sh verify
|
||||
```
|
||||
|
||||
Ожидание в блоке «Через SOCKS»: **149.154.64.19**, `country: RU`.
|
||||
В браузере: https://ipinfo.io → RU.
|
||||
|
||||
Статус портов / системного прокси:
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/ssh-exit-mode.sh status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Другие режимы
|
||||
|
||||
| Цель | Команда |
|
||||
|------|---------|
|
||||
| Выход с **IP RU** | `bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh` |
|
||||
| Выход с **IP DO** (через RU) | `bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru-do.sh` |
|
||||
| Снять туннели + системный SOCKS | `bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-local.sh` |
|
||||
|
||||
---
|
||||
|
||||
## Мёртвый системный SOCKS 10809
|
||||
|
||||
**Симптомы:** `curl` / `nc` до почтовых серверов OK, но Thunderbird не качает **все** ящики; браузер «висит»; Cursor с `socks5://127.0.0.1:10809` мёртв.
|
||||
|
||||
**RCA (2026-07-22):** после `exit-via-ru` / `exit-via-ru-do` системный SOCKS Wi‑Fi остаётся на `127.0.0.1:10809`, а SSH-туннель на порту уже не слушает. Thunderbird (и др.) используют системный прокси → отказ сразу на всех аккаунтах.
|
||||
|
||||
**Проверка:**
|
||||
|
||||
```bash
|
||||
networksetup -getsocksfirewallproxy "Wi-Fi"
|
||||
lsof -nP -iTCP:10809 -sTCP:LISTEN || echo "10809: nothing"
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/ssh-exit-mode.sh status
|
||||
```
|
||||
|
||||
Паттерн: `Enabled: Yes`, Port `10809`, а `lsof` пустой.
|
||||
|
||||
---
|
||||
|
||||
## Сброс при проблемах с интернетом
|
||||
|
||||
Если после `exit-via-ru` «пропал интернет», браузер не грузит, Thunderbird молчит при живом `curl`, или туннель умер при включённом системном SOCKS — **сначала снять мёртвый системный SOCKS**, потом при необходимости recover хотспота.
|
||||
|
||||
### 0. Мягкий сброс (сохранить Telegram на 1081)
|
||||
|
||||
Только выключить системный SOCKS — **не** убивает LaunchAgent / SSH на **1081**:
|
||||
|
||||
```bash
|
||||
networksetup -setsocksfirewallproxystate "Wi-Fi" off
|
||||
networksetup -getsocksfirewallproxy "Wi-Fi" # Enabled: No
|
||||
```
|
||||
|
||||
После этого в Thunderbird — «Получить сообщения».
|
||||
|
||||
### 1. Полный сброс SSH-exit
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-local.sh
|
||||
```
|
||||
|
||||
Снимает SSH SOCKS на **10809 / 1081 / 1082** и выключает системный SOCKS на Wi‑Fi. Telegram через 1081 после этого нужно поднять снова (LaunchAgent или `telegram-socks-tunnel.sh`).
|
||||
|
||||
Проверка, что системный SOCKS выключен:
|
||||
|
||||
```bash
|
||||
networksetup -getsocksfirewallproxy "Wi-Fi"
|
||||
```
|
||||
|
||||
Ожидание: `Enabled: No`.
|
||||
|
||||
Быстрый тест сети без прокси:
|
||||
|
||||
```bash
|
||||
curl -sS --max-time 8 https://1.1.1.1
|
||||
curl -sS --max-time 8 https://ipinfo.io/ip
|
||||
```
|
||||
|
||||
### 2. Если интернет всё ещё мёртв (хотспот / stale Manual / route)
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
|
||||
```
|
||||
|
||||
Запросит sudo. Подробно: [HOTSPOT_NETWORK_EMERGENCY.md](../HOTSPOT_NETWORK_EMERGENCY.md).
|
||||
|
||||
### 3. Ядерный сброс прокси вручную (если скрипт недоступен)
|
||||
|
||||
```bash
|
||||
networksetup -setautoproxystate "Wi-Fi" off
|
||||
networksetup -setsocksfirewallproxystate "Wi-Fi" off
|
||||
pkill -f 'ssh.*-D 10809' 2>/dev/null || true
|
||||
pkill -f 'ssh.*-D 1081' 2>/dev/null || true
|
||||
pkill -f 'ssh.*-D 1082' 2>/dev/null || true
|
||||
curl -sS --max-time 8 https://ipinfo.io/ip
|
||||
```
|
||||
|
||||
### 4. Снова включить RU (после рабочего интернета)
|
||||
|
||||
```bash
|
||||
curl -sS --max-time 8 https://1.1.1.1 && \
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh && \
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/ssh-exit-mode.sh verify
|
||||
```
|
||||
|
||||
Не поднимайте `exit-via-ru`, пока не работает обычный `curl https://1.1.1.1`.
|
||||
|
||||
---
|
||||
|
||||
## WireGuard на телефоне (выход через RU `149.154.64.19`)
|
||||
|
||||
На RU уже крутится **wg-quick@wg0**, UDP **51820**, full-tunnel (`AllowedIPs = 0.0.0.0/0`) → снаружи IP **RU**.
|
||||
|
||||
### Установка
|
||||
|
||||
1. App Store / Google Play → **WireGuard**
|
||||
2. **+** → **Create from QR code** (или «Создать из файла»)
|
||||
3. Сканируйте QR peer3 (неиспользуемый слот `192.168.15.3`) — файл: `/tmp/wg-ru-mobile-peer3-qr.png`
|
||||
Пересоздать QR:
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes hsites-ahau 'sudo -n cat /etc/wireguard/peer3.conf' | qrencode -t PNG -s 8 -o /tmp/wg-ru-mobile-peer3-qr.png && open /tmp/wg-ru-mobile-peer3-qr.png
|
||||
```
|
||||
|
||||
4. Имя туннеля: например `ru-hunab`
|
||||
5. Включить туннель → в браузене https://ipinfo.io → **RU** / `149.154.64.19`
|
||||
|
||||
### Файл вместо QR
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes hsites-ahau 'sudo -n cat /etc/wireguard/peer3.conf' > /tmp/wg-ru-mobile.conf
|
||||
```
|
||||
|
||||
Импорт в WireGuard: **+** → Create from file → `/tmp/wg-ru-mobile.conf`.
|
||||
|
||||
### Важно
|
||||
|
||||
| | |
|
||||
|--|--|
|
||||
| Endpoint | `149.154.64.19:51820` |
|
||||
| peer3 | свободен (не подключался); peer2 уже использовался |
|
||||
| Не коммитьте | `.conf` / QR с PrivateKey в git |
|
||||
| Kill switch | в приложении WireGuard (Android) при необходимости |
|
||||
|
||||
Если handshake не идёт: UDP **51820** до RU не доходит (оператор/Wi‑Fi режет) — проверьте с другой сети.
|
||||
|
||||
---
|
||||
|
||||
## Brave не открывает tbank.ru (Chrome открывает)
|
||||
|
||||
Туннель OK (`curl -x socks5h://127.0.0.1:10809` → 200), Chrome с системным SOCKS проходит, **Brave** — нет.
|
||||
|
||||
**Причина:** у Brave включён **Secure DNS (DoH)** на Cloudflare (`mode: secure`). Запросы DNS/часть трафика идут мимо SOCKS → с зарубежного IP до `tbank.ru` таймаут. У Chrome DoH обычно выключен.
|
||||
|
||||
### В Brave (UI, 30 секунд)
|
||||
|
||||
1. `brave://settings/security` → **Use secure DNS** → **Off**
|
||||
2. `brave://settings/system` → **Use system proxy settings when available** → **On**
|
||||
3. (если всё ещё тупит) `brave://flags/#enable-quic` → **Disabled** → Relaunch
|
||||
4. Проверка: https://ipinfo.io → должно быть **RU** / `149.154.64.19`, затем https://www.tbank.ru/
|
||||
|
||||
### Если правили prefs скриптом
|
||||
|
||||
Brave должен быть **закрыт**, иначе перезапишет `Local State`.
|
||||
|
||||
```bash
|
||||
osascript -e 'quit app "Brave Browser"' 2>/dev/null || true
|
||||
sleep 2
|
||||
python3 - <<'PY'
|
||||
import json
|
||||
from pathlib import Path
|
||||
p = Path.home() / "Library/Application Support/BraveSoftware/Brave-Browser/Local State"
|
||||
st = json.loads(p.read_text())
|
||||
st["dns_over_https"] = {"mode": "off"}
|
||||
p.write_text(json.dumps(st, separators=(",", ":")))
|
||||
print("Brave Secure DNS → off")
|
||||
PY
|
||||
open -a "Brave Browser"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Диагностика
|
||||
|
||||
| Признак | Что делать |
|
||||
|---------|------------|
|
||||
| Thunderbird не грузит **все** ящики, `curl` OK | Системный SOCKS на мёртвом **10809** → мягкий off (шаг 0) или `exit-via-local.sh` |
|
||||
| `Enabled: Yes` / Port 10809, `lsof :10809` пусто | То же: снять системный SOCKS; при нужде снова `exit-via-ru.sh` |
|
||||
| SOCKS verify = RU, браузер всё ещё «за рубежом» | Системный SOCKS off → снова `exit-via-ru.sh`; в Chrome: «Use system proxy» |
|
||||
| Chrome OK, Brave нет (tbank и т.п.) | Выключить Secure DNS в Brave — см. выше |
|
||||
| `verify` — «нет ответа» | `exit-via-local.sh`, затем `exit-via-ru.sh`; `ssh -o ConnectTimeout=10 hsites-ahau 'echo OK'` |
|
||||
| Интернет умер после RU | `exit-via-local.sh` → при необходимости hotspot `recover` |
|
||||
| Cursor мёртв при живой сети | Снять мёртвый proxy в settings; [apps/cursor/RUNBOOK.md](../../apps/cursor/RUNBOOK.md) |
|
||||
| Только CLI нужен RU, без системного SOCKS | `SSH_EXIT_SYSTEM_PROXY=0 bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh` |
|
||||
|
||||
Проверка SSH до RU:
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=10 hsites-ahau 'echo RU_OK'
|
||||
```
|
||||
|
||||
Без алиаса:
|
||||
|
||||
```bash
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 ahau@149.154.64.19 'echo RU_OK'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cursor (опционально)
|
||||
|
||||
Тот же порт **10809**:
|
||||
|
||||
```json
|
||||
"http.proxy": "socks5://127.0.0.1:10809",
|
||||
"http.proxySupport": "override"
|
||||
```
|
||||
|
||||
На локальный выход: `exit-via-local.sh` **и** в Cursor `"http.proxy": ""`, `"http.proxySupport": "off"`.
|
||||
|
||||
---
|
||||
|
||||
## Связанные документы
|
||||
|
||||
| Документ | Зачем |
|
||||
|----------|--------|
|
||||
| [SSH_EXIT_MODES.md](./SSH_EXIT_MODES.md) | Режимы local / ru / ru-do, схема |
|
||||
| [HOTSPOT_NETWORK_EMERGENCY.md](../HOTSPOT_NETWORK_EMERGENCY.md) | Сеть после reconnect хотспота |
|
||||
| [PROXY_EMERGENCY.md](../PROXY_EMERGENCY.md) | SSH / прокси «всё слетело» |
|
||||
| [apps/cursor/RUNBOOK.md](../../apps/cursor/RUNBOOK.md) | Cursor + мёртвый SOCKS |
|
||||
|
||||
---
|
||||
|
||||
*Обновлено: 2026-07-22*
|
||||
@@ -1,9 +1,32 @@
|
||||
# SSH SOCKS: быстрое переключение выхода в интернет
|
||||
|
||||
**Операционный ранбук** (старт / сброс / из любой папки): **[RUNBOOK.md](./RUNBOOK.md)**.
|
||||
|
||||
Три режима без WireGuard/Shadowsocks: **локальный IP**, **RU-прокси**, **RU → DO** (снаружи виден **IP прод-сервера DO**).
|
||||
|
||||
Политика: для выхода с **IP DO** используется **только** цепочка **Mac → RU (`hsites-ahau`) → DO** (`telegram-socks-via-do`). Прямой Mac→DO скрипты не поднимают.
|
||||
|
||||
На **macOS** режимы `ru` / `ru-do` по умолчанию включают **системный SOCKS** (`networksetup` на Wi‑Fi → `127.0.0.1:10809`), чтобы браузер и приложения выходили с нужным IP. `local` его выключает. Отключить поведение: `SSH_EXIT_SYSTEM_PROXY=0`.
|
||||
|
||||
**Ловушка:** если SSH на 10809 умер, а системный SOCKS остался `Enabled: Yes`, приложения с системным прокси (Thunderbird, Safari/Chrome) перестают ходить в сеть при живом `curl`. Почта в TB падает **со всех ящиков**. Мягкий сброс: `networksetup -setsocksfirewallproxystate "Wi-Fi" off` (не трогает Telegram **1081**). Полный: `exit-via-local.sh`. Ранбук: [RUNBOOK.md](./RUNBOOK.md).
|
||||
|
||||
---
|
||||
|
||||
## Из‑за рубежа: RU‑сервисы режут иностранный IP
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/ssh-exit-mode.sh verify
|
||||
```
|
||||
|
||||
Сброс при проблемах с сетью:
|
||||
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-local.sh
|
||||
```
|
||||
|
||||
Полный чеклист: [RUNBOOK.md](./RUNBOOK.md).
|
||||
|
||||
---
|
||||
|
||||
## Ожидаемые IP (проверка «снаружи»)
|
||||
@@ -24,6 +47,8 @@
|
||||
|
||||
После **`ru-do`** в блоке «Через SOCKS» должно быть **209.38.32.21** (или актуальный IP DO). После **`ru`** — **149.154.64.19**.
|
||||
|
||||
`curl` **не** использует системный SOCKS macOS — для CLI всегда `-x socks5h://127.0.0.1:10809` или `exit-verify`. Браузер с системным прокси проверяйте на ipinfo.io.
|
||||
|
||||
---
|
||||
|
||||
## Скрипты (из корня репозитория `local_machine`)
|
||||
@@ -37,20 +62,21 @@
|
||||
**Короткие алиасы** (то же самое):
|
||||
|
||||
```bash
|
||||
./scripts/vpn/exit-via-local.sh # стоп туннелей
|
||||
./scripts/vpn/exit-via-ru.sh # только RU
|
||||
./scripts/vpn/exit-via-local.sh # стоп туннелей + системный SOCKS off
|
||||
./scripts/vpn/exit-via-ru.sh # только RU + системный SOCKS on
|
||||
./scripts/vpn/exit-via-ru-do.sh # RU → DO (IP DO снаружи)
|
||||
./scripts/vpn/install-exit-aliases.sh # exit-ru / exit-local в ~/.zshrc
|
||||
```
|
||||
|
||||
| Команда | Действие |
|
||||
|---------|----------|
|
||||
| **`local`** \| **`off`** \| **`stop`** | Гасит SSH SOCKS на портах **10809**, **1081**, **1082**. Дальше: в **Cursor** уберите `http.proxy` / `https.proxy` (или отключите системный SOCKS) — трафик пойдёт с **локального публичного IP**. |
|
||||
| **`ru`** | Поднимает SOCKS **`127.0.0.1:10809`** → выход с **RU** (`hsites-ahau`). В Cursor: `socks5://127.0.0.1:10809`. |
|
||||
| **`ru-do`** | Проверка RU (6 с), затем SOCKS на **10809** через **`telegram-socks-via-do`**. Снаружи — **IP DO**. В Cursor: тот же `socks5://127.0.0.1:10809`. |
|
||||
| **`status`** | Кто слушает порты из списка остановки. |
|
||||
| **`local`** \| **`off`** \| **`stop`** | Гасит SSH SOCKS на портах **10809**, **1081**, **1082**; на macOS — системный SOCKS off. Дальше: в **Cursor** уберите `http.proxy` / `https.proxy` при необходимости. |
|
||||
| **`ru`** | Поднимает SOCKS **`127.0.0.1:10809`** → выход с **RU** (`hsites-ahau`) + системный SOCKS. В Cursor: `socks5://127.0.0.1:10809`. |
|
||||
| **`ru-do`** | Проверка RU (6 с), затем SOCKS на **10809** через **`telegram-socks-via-do`** + системный SOCKS. Снаружи — **IP DO**. |
|
||||
| **`status`** | Кто слушает порты + системный SOCKS. |
|
||||
| **`verify`** | IP без прокси и через SOCKS на `SSH_EXIT_MAIN_PORT`. |
|
||||
|
||||
**Переменные:** `SSH_EXIT_MAIN_PORT` (по умолчанию **10809**), `SSH_EXIT_STOP_PORTS`, `SSH_EXIT_RU_HOST` (по умолчанию `hsites-ahau`).
|
||||
**Переменные:** `SSH_EXIT_MAIN_PORT` (по умолчанию **10809**), `SSH_EXIT_STOP_PORTS`, `SSH_EXIT_RU_HOST` (по умолчанию `hsites-ahau`), `SSH_EXIT_SYSTEM_PROXY` (`1`/`0`), `SSH_EXIT_NET_SERVICE` (по умолчанию `Wi-Fi`).
|
||||
|
||||
**`~/.ssh/config`:** `hsites-ahau`, **`telegram-socks-via-do`** с `ProxyJump hsites-ahau` — шаблоны в [PROXY_GUIDE.md](../PROXY_GUIDE.md).
|
||||
|
||||
@@ -60,9 +86,16 @@
|
||||
|
||||
1. **`./scripts/vpn/exit-via-ru-do.sh`** (или `./scripts/vpn/ssh-exit-mode.sh ru-do`).
|
||||
2. **`./scripts/vpn/ssh-exit-mode.sh verify`** — убедиться, что через SOCKS IP **DO**.
|
||||
3. В Cursor: **Settings → proxy** → `socks5://127.0.0.1:10809` (и для HTTPS то же). **Disable Http2** — выкл.
|
||||
3. В Cursor: **Settings → proxy** → `socks5://127.0.0.1:10809`, **`http.proxySupport`: `override`**. **Disable Http2** — выкл. Порт **10809**, не **1090**.
|
||||
|
||||
На **локальный IP:** `exit-via-local.sh`, затем в Cursor **убрать** proxy.
|
||||
На **локальный IP:** `exit-via-local.sh`, затем в Cursor **обязательно**:
|
||||
|
||||
```json
|
||||
"http.proxy": "",
|
||||
"http.proxySupport": "off"
|
||||
```
|
||||
|
||||
иначе останется мёртвый SOCKS и Agent/API упадут при живом интернете (типично после смены страны). См. [docs/apps/cursor/RUNBOOK.md](../../apps/cursor/RUNBOOK.md).
|
||||
|
||||
---
|
||||
|
||||
@@ -70,6 +103,8 @@
|
||||
|
||||
Скрипт **`local`** останавливает и **1081**. Если нужен Telegram через DO при том же «полном стопе», после `local` поднимите туннель отдельно: [TELEGRAM_GUIDE.md](../TELEGRAM_GUIDE.md), `telegram-socks-tunnel.sh` / LaunchAgent.
|
||||
|
||||
Если проблема только в мёртвом системном SOCKS (TB/браузер), а Telegram на 1081 жив — **не** вызывайте `local`: достаточно `networksetup -setsocksfirewallproxystate "Wi-Fi" off`.
|
||||
|
||||
---
|
||||
|
||||
## Схема
|
||||
@@ -92,4 +127,4 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
*Обновлено: 2026-04-08*
|
||||
*Обновлено: 2026-07-22*
|
||||
|
||||
Reference in New Issue
Block a user