# Emergency: сеть после переподключения хотспота (macOS) --- ## Одна команда (из любой папки) ```bash bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover ``` Запросит **пароль sudo**, затем: PAC/SOCKS off → **DHCP** → `ifconfig down` → **`route -n flush`** → DNS → DHCP → **Joplin alias `*.100`**. Диагностика: ```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 Wi‑Fi — **недостаточно** при ARP `REJECT`. Ручная «ядерная кнопка» работала, потому что вы вводили пароль и реально сбрасывали маршруты. **Исправлено:** `recover` всегда вызывает `sudo` с запросом пароля. ### 2. Manual IPv4 на Wi‑Fi (Joplin) ломал маршрут `/var/log/wifi.log` при reconnect: ``` IP Address: 10.219.227.100 Default Gateway IP Address: 10.219.227.39 No Router MAC Address ROUTER_MAC_ADDR = 0x000000000000 ``` В prefs оставался шлюз `10.219.227.39`, хотспот уже в `10.36.136.x` → `ping` → `Host is down`, `curl` мёртв. **Исправлено:** Wi‑Fi **только DHCP**; Joplin — **alias** `<подсеть>.100` на `en0` (не трогает default route). См. [apps/joplin/STABLE_SETUP.md](./apps/joplin/STABLE_SETUP.md). ### 3. PAC / SOCKS (вторично) PAC на `:1089` без сервера усиливает сбои, но **не объясняет** `ping 8.8.8.8 → No route to host`. --- ## Что делает `recover` сейчас | Шаг | Действие | |-----|----------| | 1 | PAC off | | 2 | SOCKS off | | 3 | `networksetup -setdhcp Wi-Fi` (снимает Manual) | | 4 | `sudo ifconfig en0 down` | | 5 | `sudo route -n flush` | | 6 | DNS flush + `ifconfig up` + `ipconfig DHCP` | | 7 | Ждёт gateway (до 30 с) | | 8 | `ifconfig en0 alias .100` для Joplin | --- ## Ядерная кнопка (если скрипт недоступен) ```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 ``` --- ## Диагностика ```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 + другая подсеть в gateway | Старый Joplin static | | `No Router MAC` в wifi.log | ARP на шлюз не прошёл | | `REJECT` в route get gateway | Нужен route flush | | Primary DHCP OK, нет `*.100` alias | Запустить `recover` | --- ## Профилактика 1. **Не** использовать Manual Wi‑Fi для Joplin — только DHCP + alias. 2. После **каждого** reconnect: одна команда `recover` выше. 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) | DHCP + alias | | [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md) | SSH / SOCKS | | [README.md](./README.md) | Оглавление |