Files
local_machine/docs/connectivity/PROXY_EMERGENCY.md
ahauimix 0238aa7c02 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>
2026-07-26 10:22:56 +08:00

212 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Экстренное восстановление: прокси ru.hunab.app и SSH
Одна страница на случай, когда «всё слетело». Полная схема, безопасность и нюансы `~/.ssh/config`: [PROXY_GUIDE.md](./PROXY_GUIDE.md).
**Сеть / хотспот (интернет есть только после перезагрузки):** чаще всего **Manual IPv4 на WiFi (Joplin)** при смене подсети Android + битые маршруты; также PAC **1089** / SOCKS **1080** без клиента. Пошагово: **[HOTSPOT_NETWORK_EMERGENCY.md](./HOTSPOT_NETWORK_EMERGENCY.md)**.
**RUсервисы режут доступ из‑за рубежа:** ранбук **[vpn/RUNBOOK.md](./vpn/RUNBOOK.md)** — старт `exit-via-ru.sh`, сброс `exit-via-local.sh` (абсолютные пути).
**Thunderbird / браузер / «все приложения» не ходят в сеть при живом `curl`:** системный SOCKS на **`127.0.0.1:10809`**, а SSH-туннель на 10809 уже мёртв (после `exit-via-ru` / `exit-via-ru-do`). Почта падает **со всех ящиков сразу** — TB берёт системный прокси. См. раздел ниже и **[vpn/RUNBOOK.md](./vpn/RUNBOOK.md)**.
---
## Константы (запомнить / вставить в заметки)
| Что | Значение |
|-----|----------|
| RU-прокси (SSH) | **149.154.64.19**, пользователь **ahau**, порт **22** |
| Домен прокси | **ru.hunab.app** |
| Прод (DO) | **209.38.32.21**, SSH **2222**, пользователь **hunab** (или **root**) |
| Прод (веб) | **hunab.app** |
**Ключи (типично):**
- RU (ahau): `~/.ssh/id_ed25519`
- RU root: `~/.ssh/hsites_new_deploy_key` → хост **`hsites-new`**
- Прод: `~/.ssh/hunab_deploy_key`
---
## Порядок проверки (2 минуты)
1. **Интернет и DNS:** открыть в браузере `https://ru.hunab.app/proxy-health` и `https://ru.hunab.app/api/health`.
2. **RU SSH:** `ssh -o ConnectTimeout=10 hsites-ahau "echo RU_OK"`
Без алиаса: `ssh -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 ahau@149.154.64.19 "echo RU_OK"`
3. **Прод через RU:** `ssh -o ConnectTimeout=15 hunab-prod "echo PROD_OK"`
4. **Прод напрямую** (если RU мёртв): `ssh -o ConnectTimeout=15 hunab-prod-direct "echo PROD_DIRECT_OK"`
Если шаг 2 падает — цепочка через прокси недоступна; используйте **прямой** доступ к DO (шаг 4) и SOCKS «через DO» (ниже).
---
## Минимальные блоки `~/.ssh/config` (восстановить вручную)
**Важно:** `hunab-prod` и `hunab-prod-root`**разные** блоки `Host` (разный `User`). Не объединять в одну строку `Host`.
```sshconfig
Host hsites-ahau
HostName 149.154.64.19
User ahau
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking accept-new
ServerAliveInterval 30
ServerAliveCountMax 8
Host hunab-prod hunab-prod-via-ahau
HostName 209.38.32.21
User hunab
Port 2222
IdentityFile ~/.ssh/hunab_deploy_key
ProxyJump hsites-ahau
StrictHostKeyChecking accept-new
IdentitiesOnly yes
ServerAliveInterval 30
ServerAliveCountMax 8
Host hunab-prod-direct
HostName 209.38.32.21
User hunab
Port 2222
IdentityFile ~/.ssh/hunab_deploy_key
StrictHostKeyChecking accept-new
IdentitiesOnly yes
ServerAliveInterval 30
ServerAliveCountMax 8
```
При необходимости root на проде — отдельный блок `Host hunab-prod-root` / `hunab-prod-root-direct` с `User root` (см. [PROXY_GUIDE.md](./PROXY_GUIDE.md)).
**Зависший master-сокет:**
`ssh -O exit hunab-prod 2>/dev/null; ssh -O exit hunab-prod-direct 2>/dev/null; rm -f ~/.ssh/cm-hunab-*`
---
## SOCKS для Telegram (порт **1081**)
**Только RU (если достаточно выхода с 149.154.64.19):**
```bash
ssh -D 1081 -N ahau@149.154.64.19
```
**RU → прод → интернет** (когда с RU до Telegram не проходит):
```bash
ssh -D 1081 -N -J hsites-ahau -i ~/.ssh/hunab_deploy_key -p 2222 hunab@209.38.32.21
```
**Без RU, только DO:**
```bash
ssh -D 1081 -N -i ~/.ssh/hunab_deploy_key -p 2222 hunab@209.38.32.21
```
Проверка (второй терминал):
```bash
curl -x socks5h://127.0.0.1:1081 -sI https://api.telegram.org | head -3
```
В Telegram: **SOCKS5**, **127.0.0.1**, **1081**.
Скрипты и launchd: [launchd/README.md](./launchd/README.md), [scripts/telegram-socks-tunnel.sh](./scripts/telegram-socks-tunnel.sh).
---
## scp на прод через RU (если нужен файл «прямо сейчас»)
```bash
PROXY_CMD="ssh -i $HOME/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new -W %h:%p hsites-ahau"
scp -i ~/.ssh/hunab_deploy_key -o ProxyCommand="$PROXY_CMD" -o ServerAliveInterval=15 \
/path/to/file hunab@209.38.32.21:/home/hunab/
```
---
## Мёртвый системный SOCKS **10809** (Thunderbird, браузер)
**Симптом (проверено 2026-07-22):** `curl https://…` OK, порты IMAP/POP до серверов OK, а Thunderbird не загружает почту **ни с одного** ящика; Safari/Chrome тоже могут «висеть».
**RCA:** `exit-via-ru.sh` / `exit-via-ru-do.sh` включают системный SOCKS WiFi → `127.0.0.1:10809`. SSH на 10809 умер, а `Enabled: Yes` остался. Приложения с системным прокси (Thunderbird по умолчанию) стучатся в никуда.
**Диагностика:**
```bash
networksetup -getsocksfirewallproxy "Wi-Fi"
# Enabled: Yes + Port: 10809 при пустом слушателе = баг
lsof -nP -iTCP:10809 -sTCP:LISTEN || echo "10809: nothing"
nc -z -G 2 127.0.0.1 10809 || echo "10809 closed"
```
**Мягкий сброс** (системный SOCKS off, **не** трогает Telegram на **1081**):
```bash
networksetup -setsocksfirewallproxystate "Wi-Fi" off
```
**Полный сброс** (гасит и 10809, и 1081/1082):
```bash
bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-local.sh
```
После сброса в Thunderbird — «Получить сообщения» (или перезапуск). Если снова нужен RU/DO: `exit-via-ru.sh` / `exit-via-ru-do.sh` + `ssh-exit-mode.sh verify`. Подробнее: [vpn/RUNBOOK.md](./vpn/RUNBOOK.md).
**Отдельно:** ящик cock.li в TB может быть на локальном туннеле `127.0.0.1:9143` — это не системный SOCKS; см. `docs/firemail/COCKLI_THUNDERBIRD_SETUP.md`.
---
## Cursor не подключается
**Смена страны / интернет OK, Cursor мёртв:** сначала проверь `settings.json` на мёртвый SOCKS (`127.0.0.1:1090` или **10809** + `http.proxySupport: override`). Отключение прокси помогало. Runbook: **[docs/apps/cursor/RUNBOOK.md](../apps/cursor/RUNBOOK.md)**.
**PING timeout из РФ:** SOCKS **10809** — [docs/apps/cursor/README.md](../apps/cursor/README.md), скрипт `docs/apps/cursor/scripts/cursor-socks-tunnel.sh` (`CURSOR_SOCKS_VIA_DO=1` → Mac→RU→DO). Не путать с **1081** (Telegram) и устаревшим **1090**. Тот же порт использует `scripts/vpn/ssh-exit-mode.sh` (режимы `ru` / `ru-do`).
---
## Скрипт выбора маршрута к проду
Из репозитория: [scripts/ssh-hunab-prod.sh](./scripts/ssh-hunab-prod.sh)
- `HUNAB_PROD_FORCE_VIA=1` — сразу через RU
- `HUNAB_PROD_FORCE_DIRECT=1` — только прямой DO
---
*Краткая версия от PROXY_GUIDE; при расхождении правьте сначала основной гайд.*
---
## Как сейчас на этой машине (проверено: **2026-04-07**)
**Среда:** macOS, пользователь **`eternal`**, имя хоста **`Eternals.local`**.
### `~/.ssh/config`
- В начале файла: **`Include ~/.colima/ssh_config`** (Colima).
- **RU → прод (основной путь):** `hunab-prod` и `hunab-prod-via-ahau``209.38.32.21:2222`, пользователь **`hunab`**, ключ **`~/.ssh/hunab_deploy_key`**, **`ProxyJump hsites-ahau`**, плюс **ControlMaster** / **`ControlPath ~/.ssh/cm-hunab-prod-%C`**, **ControlPersist 30m**, keepalive, **UseKeychain**.
- **Прод без RU:** `hunab-prod-direct`, root-вариант **`hunab-prod-root-direct`** — те же порт/ключ, без `ProxyJump`, свой **`ControlPath`** (`cm-hunab-direct-*` / `cm-hunab-direct-root-*`).
- **Root через RU:** `hunab-prod-root`, `hunab-prod-root-via-ahau` — как `hunab-prod`, но **`User root`** и **`cm-hunab-prod-root-%C`**.
- **RU SSH (ahau):** **`hsites-ahau`** → **`149.154.64.19`**, **`~/.ssh/id_ed25519`**, keepalive, **UseKeychain** / **AddKeysToAgent**.
- **RU SSH (root):** **`hsites-new`** → тот же IP, **`~/.ssh/hsites_new_deploy_key`**.
- **Альтернатива через root на RU:** **`prod-ru`**, **`hunab-prod-via-ru`** — **`ProxyJump hsites-new`** (не `hsites-ahau`). В конфиге блок **`Host prod-ru` продублирован дважды** — лишнее можно схлопнуть при правке.
- **Туннель через локальный SOCKS 1090:** **`prod-tunnel`** — `ProxyCommand nc -X 5 -x 127.0.0.1:1090 %h %p`.
- **SOCKS для Telegram:** только **`telegram-socks-via-do`** (Mac→RU→DO). **`telegram-socks-direct-do`** — опционально для ручного SSH к DO без RU, не для автозамены SOCKS.
- Дополнительно в файле: старые хосты **`hsites` / `hsites.hunab`**, **`ahau@ru.hunab`**, боты **`hunab-bot` / `hunab.bots`**, алиас **`tunnel`** на `149.154.64.19`.
**Ключи на диске (есть):** `~/.ssh/id_ed25519`, `~/.ssh/hunab_deploy_key`, `~/.ssh/hsites_new_deploy_key`.
### Автозапуск SOCKS **1081** (Telegram)
- **LaunchAgent:** `~/Library/LaunchAgents/com.hunab.telegram-socks-via-do.plist`**RunAtLoad**, **KeepAlive**, лог **`/tmp/telegram-socks-tunnel-via-do.log`**.
- **Скрипт:** `~/Library/Application Support/hunab/telegram-socks-launch.sh` — всегда **`ssh -D 1081 -N telegram-socks-via-do`** (Mac→RU→DO).
- Состояние на момент проверки: задание в **launchctl** в статусе **running**; при обрыве цепочки SSH в логе сыплются ошибки до следующего успешного подключения (смотреть хвост лога).
### Ручной запуск из репозитория
- Скрипт: **`docs/connectivity/scripts/telegram-socks-tunnel.sh`** — порт **1081**; без `TELEGRAM_SOCKS_VIA_DO` — только RU; с **`TELEGRAM_SOCKS_VIA_DO=1`** — только Mac→RU→DO (`telegram-socks-via-do`), как LaunchAgent.
### Прочее на машине
- В **launchctl** также видны **Shadowsocks** (`com.shadowsocks.local`, `com.qiuyuzhou.shadowsocksX-NG.local`) — к hunab-прокси не относятся, но могут влиять на маршрутизацию, если включены.
*Порт **1081** и SSH в момент автоматической проверки из среды агента могли быть пустыми или с ошибками сети; ориентируйтесь на `lsof -i :1081` и лог выше.*