Files
local_machine/docs/connectivity/HOTSPOT_NETWORK_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

125 lines
4.7 KiB
Markdown
Raw Permalink 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.
# Emergency: сеть после переподключения хотспота (macOS)
---
## Одна команда (из любой папки)
```bash
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
```
Запросит **пароль sudo**, затем: PAC/SOCKS off → **DHCP** (снять stale Manual) → `ifconfig down`**`route -n flush`** → DNS → DHCP → **Joplin primary `*.100`** (`setmanual` с текущим шлюзом).
Диагностика:
```bash
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh status
```
---
## RCA (почему старый `recover` не помогал)
### 1. Ядерный сброс не выполнялся
Скрипт проверял `sudo -n` (passwordless). Без NOPASSWD в sudoers он **пропускал** `route flush` и делал только toggle WiFi — **недостаточно** при ARP `REJECT`.
**Исправлено:** `recover` всегда вызывает `sudo` с запросом пароля.
### 2. Stale Manual IPv4 на WiFi (Joplin)
`/var/log/wifi.log` при reconnect:
```
IP Address: 10.219.227.100
Default Gateway IP Address: 10.219.227.39
No Router MAC Address
```
В prefs оставался шлюз `10.219.227.39`, хотспот уже в `10.36.136.x``ping``Host is down`, `curl` мёртв.
**Исправлено:** `recover` сначала **DHCP**, затем `joplin-hotspot-alias repair`**setmanual** `*.100` с **актуальным** gateway (не старый из prefs). См. [apps/joplin/STABLE_SETUP.md](./apps/joplin/STABLE_SETUP.md).
На хотспоте Manual `*.100`**норма** для Joplin. Опасен только **устаревший** Manual после смены подсети.
### 3. PAC / SOCKS (вторично)
PAC на `:1089` без сервера усиливает сбои, но **не объясняет** `ping 8.8.8.8 → No route to host`.
Отдельно: системный SOCKS на **`127.0.0.1:10809`** без слушателя (после `exit-via-ru`) ломает приложения с системным прокси (Thunderbird — все ящики) при живом `curl`. Это не хотспот — см. [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md) и [vpn/RUNBOOK.md](./vpn/RUNBOOK.md).
---
## Что делает `recover` сейчас
| Шаг | Действие |
|-----|----------|
| 1 | PAC off |
| 2 | SOCKS off |
| 3 | `networksetup -setdhcp Wi-Fi` (снимает stale Manual) |
| 4 | `sudo ifconfig en0 down` |
| 5 | `sudo route -n flush` |
| 6 | DNS flush + `ifconfig up` + `ipconfig DHCP` |
| 7 | Ждёт gateway (до 30 с) |
| 8 | `joplin-hotspot-alias.sh repair` → setmanual `<subnet>.100` |
---
## Ядерная кнопка (если скрипт недоступен)
```bash
sudo networksetup -setdhcp "Wi-Fi"
sudo ifconfig en0 down
sudo route -n flush
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
sudo ifconfig en0 up
sudo ipconfig set en0 DHCP
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
```
Перед переходом на **домашний WiFi** (без Joplin с телефона):
```bash
./docs/apps/joplin/scripts/joplin-hotspot-alias.sh dhcp
```
---
## Диагностика
```bash
networksetup -getinfo "Wi-Fi"
ifconfig en0 | grep inet
route -n get default
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh status
./docs/apps/joplin/scripts/joplin-webdav-status.sh
grep -E 'Router MAC|No Router' /var/log/wifi.log | tail -5
```
| Признак | Причина |
|---------|---------|
| Manual router ≠ runtime gateway | Stale Joplin static → `recover` |
| `No Router MAC` в wifi.log | ARP на шлюз не прошёл |
| `REJECT` в route get gateway | Нужен route flush |
| primary ≠ `*.100` на хотспоте | `./joplin-hotspot-alias.sh repair` |
---
## Профилактика
1. После **каждого** reconnect хотспота: `recover` или `joplin-ensure-sync.sh`.
2. Не править Manual WiFi вручную — только `joplin-hotspot-alias.sh`.
3. PAC on — только если на **1089** слушает сервер.
4. `exit-via-ru-do.sh`**после** рабочего `curl https://1.1.1.1`.
---
## Связанные документы
| Документ | Зачем |
|----------|--------|
| [apps/joplin/STABLE_SETUP.md](./apps/joplin/STABLE_SETUP.md) | primary `*.100`, синк |
| [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md) | SSH / SOCKS |
| [README.md](./README.md) | Оглавление |