Files
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

10 KiB
Raw Permalink Blame History

Runbook: выход в интернет через RU-хостинг (SSH SOCKS)

Симптом: RU-сервисы режут доступ из‑за рубежа (бан иностранного IP). Нужен выход с IP ru.hunab.app (149.154.64.19).

Команды ниже — из любой папки (абсолютные пути).

Корень репо: /Users/eternal/code/local_machine


Быстрый старт (включить RU)

bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh

Что делает: SOCKS 127.0.0.1:10809hsites-ahau + системный SOCKS на WiFi.

Проверка:

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 /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 WiFi остаётся на 127.0.0.1:10809, а SSH-туннель на порту уже не слушает. Thunderbird (и др.) используют системный прокси → отказ сразу на всех аккаунтах.

Проверка:

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:

networksetup -setsocksfirewallproxystate "Wi-Fi" off
networksetup -getsocksfirewallproxy "Wi-Fi"   # Enabled: No

После этого в Thunderbird — «Получить сообщения».

1. Полный сброс SSH-exit

bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-local.sh

Снимает SSH SOCKS на 10809 / 1081 / 1082 и выключает системный SOCKS на WiFi. Telegram через 1081 после этого нужно поднять снова (LaunchAgent или telegram-socks-tunnel.sh).

Проверка, что системный SOCKS выключен:

networksetup -getsocksfirewallproxy "Wi-Fi"

Ожидание: Enabled: No.

Быстрый тест сети без прокси:

curl -sS --max-time 8 https://1.1.1.1
curl -sS --max-time 8 https://ipinfo.io/ip

2. Если интернет всё ещё мёртв (хотспот / stale Manual / route)

bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover

Запросит sudo. Подробно: HOTSPOT_NETWORK_EMERGENCY.md.

3. Ядерный сброс прокси вручную (если скрипт недоступен)

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 (после рабочего интернета)

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:
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
  1. Имя туннеля: например ru-hunab
  2. Включить туннель → в браузене https://ipinfo.ioRU / 149.154.64.19

Файл вместо QR

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 не доходит (оператор/WiFi режет) — проверьте с другой сети.


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/securityUse secure DNSOff
  2. brave://settings/systemUse system proxy settings when availableOn
  3. (если всё ещё тупит) brave://flags/#enable-quicDisabled → Relaunch
  4. Проверка: https://ipinfo.io → должно быть RU / 149.154.64.19, затем https://www.tbank.ru/

Если правили prefs скриптом

Brave должен быть закрыт, иначе перезапишет Local State.

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
Только CLI нужен RU, без системного SOCKS SSH_EXIT_SYSTEM_PROXY=0 bash /Users/eternal/code/local_machine/scripts/vpn/exit-via-ru.sh

Проверка SSH до RU:

ssh -o BatchMode=yes -o ConnectTimeout=10 hsites-ahau 'echo RU_OK'

Без алиаса:

ssh -o BatchMode=yes -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 ahau@149.154.64.19 'echo RU_OK'

Cursor (опционально)

Тот же порт 10809:

"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 Режимы local / ru / ru-do, схема
HOTSPOT_NETWORK_EMERGENCY.md Сеть после reconnect хотспота
PROXY_EMERGENCY.md SSH / прокси «всё слетело»
apps/cursor/RUNBOOK.md Cursor + мёртвый SOCKS

Обновлено: 2026-07-22