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>
131 lines
6.7 KiB
Markdown
131 lines
6.7 KiB
Markdown
# 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 (проверка «снаружи»)
|
||
|
||
| Режим | Как проверить | Ожидаемый публичный IP (на момент настройки репо) |
|
||
|--------|----------------|-----------------------------------------------------|
|
||
| **local** | `curl -sS https://ipinfo.io/ip` | Ваш домашний/мобильный IP |
|
||
| **ru** | `curl -sS -x socks5h://127.0.0.1:10809 https://ipinfo.io/ip` | **149.154.64.19** (RU VPS, `ru.hunab.app`) |
|
||
| **ru-do** | то же `-x socks5h://127.0.0.1:10809` | **209.38.32.21** (DO, `hunab.app`) |
|
||
|
||
Если IP у VPS сменился — сверяйте с [PROXY_GUIDE.md](../PROXY_GUIDE.md) / [PROXY_EMERGENCY.md](../PROXY_EMERGENCY.md).
|
||
|
||
Быстрая проверка одной командой (порт SOCKS по умолчанию **10809**):
|
||
|
||
```bash
|
||
./scripts/vpn/ssh-exit-mode.sh verify
|
||
```
|
||
|
||
После **`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`)
|
||
|
||
**Один вход:**
|
||
|
||
```bash
|
||
./scripts/vpn/ssh-exit-mode.sh COMMAND
|
||
```
|
||
|
||
**Короткие алиасы** (то же самое):
|
||
|
||
```bash
|
||
./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**; на 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_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).
|
||
|
||
---
|
||
|
||
## Cursor за 30 секунд
|
||
|
||
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`, **`http.proxySupport`: `override`**. **Disable Http2** — выкл. Порт **10809**, не **1090**.
|
||
|
||
На **локальный IP:** `exit-via-local.sh`, затем в Cursor **обязательно**:
|
||
|
||
```json
|
||
"http.proxy": "",
|
||
"http.proxySupport": "off"
|
||
```
|
||
|
||
иначе останется мёртвый SOCKS и Agent/API упадут при живом интернете (типично после смены страны). См. [docs/apps/cursor/RUNBOOK.md](../../apps/cursor/RUNBOOK.md).
|
||
|
||
---
|
||
|
||
## Telegram (порт 1081)
|
||
|
||
Скрипт **`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`.
|
||
|
||
---
|
||
|
||
## Схема
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
subgraph off [local]
|
||
A[Приложения без SOCKS] --> NET1[Интернет]
|
||
end
|
||
subgraph r [ru]
|
||
B[SOCKS :10809] --> RU[hsites-ahau]
|
||
RU --> NET2[Интернет]
|
||
end
|
||
subgraph rd [ru-do]
|
||
C[SOCKS :10809] --> RU2[hsites-ahau]
|
||
RU2 --> DO[DO 209.38.32.21]
|
||
DO --> NET3[Интернет]
|
||
end
|
||
```
|
||
|
||
---
|
||
|
||
*Обновлено: 2026-07-22*
|