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>
10 KiB
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:10809 → hsites-ahau + системный SOCKS на Wi‑Fi.
Проверка:
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 Wi‑Fi остаётся на 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 на Wi‑Fi. 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.
Установка
- App Store / Google Play → WireGuard
- + → Create from QR code (или «Создать из файла»)
- Сканируйте 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
- Имя туннеля: например
ru-hunab - Включить туннель → в браузене https://ipinfo.io → RU /
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 не доходит (оператор/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 секунд)
brave://settings/security→ Use secure DNS → Offbrave://settings/system→ Use system proxy settings when available → On- (если всё ещё тупит)
brave://flags/#enable-quic→ Disabled → Relaunch - Проверка: 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