Add Joplin, old Mac, and Fedora WiFi runbooks; simplify JA3 Whisky scripts and hotspot recovery.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,111 +1,110 @@
|
||||
# Emergency: сеть после смены хотспота (macOS)
|
||||
|
||||
Симптом: **отключили Mac от Wi‑Fi / переподключились к другому хотспоту — «интернета нет», помогает только перезагрузка.**
|
||||
|
||||
Документ описывает **проверенную на машине причину** в вашей конфигурации, **ручное восстановление без перезагрузки** и **скрипт** из репозитория.
|
||||
# Emergency: сеть после переподключения хотспота (macOS)
|
||||
|
||||
---
|
||||
|
||||
## Причина (точная по конфигурации)
|
||||
## Одна команда (из любой папки)
|
||||
|
||||
На macOS в **Системных настройках → Сеть → Wi‑Fi → Подробнее → Прокси** часто включён **автоматический прокси (PAC)** с URL вида **`http://localhost:1089/proxy.pac`** (см. [PROXY_GUIDE.md](./PROXY_GUIDE.md) → раздел про системный PAC).
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
|
||||
```
|
||||
|
||||
Проверка на рабочей машине (2026): **PAC для сервиса Wi‑Fi включён (Enabled: Yes)**, при этом **на порту 1089 нет процесса**, который отдаёт `proxy.pac` — соединение к `127.0.0.1:1089` отклоняется.
|
||||
Запросит **пароль sudo**, затем: PAC/SOCKS off → **DHCP** → `ifconfig down` → **`route -n flush`** → DNS → DHCP → **Joplin alias `*.100`**.
|
||||
|
||||
В таком состоянии:
|
||||
Диагностика:
|
||||
|
||||
1. Система и часть приложений **сначала** должны получить PAC с localhost; при недоступном URL поведение **нестабильно** (часть трафика «в никуда», таймауты).
|
||||
2. При **смене хотспота** меняются шлюз, DNS, часто появляется **captive portal**; страница входа может **не открыться**, пока PAC мешает или DNS закеширован со старой сети.
|
||||
3. **Перезагрузка** «лечит», потому что заново поднимаются **configd**, **mDNSResponder**, порядок инициализации Wi‑Fi и иногда снова стартует локальный PAC‑сервер (Clash / Surge / свой сервис на 1089).
|
||||
|
||||
Дополнительные усилители сбоя (проверять при `status`):
|
||||
|
||||
- **Системный SOCKS** на `127.0.0.1:1080` (Shadowsocks и т.д.) — если включён, а клиент не слушает порт, трафик через системный прокси тоже падает.
|
||||
- **VPN / туннели** с политикой «весь трафик» — после смены сети маршруты могут остаться битые до отключения VPN.
|
||||
|
||||
**SOCKS Telegram (1081) и SSH‑туннели сами по себе не отключают Wi‑Fi** — они приложенческие. Проблема класса «всё мёртво до ребута» у вас с высокой вероятностью — **системный PAC/SOCKS на localhost без живого сервиса + кэш DNS / состояние Wi‑Fi**.
|
||||
```bash
|
||||
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Быстро: один скрипт (рекомендуется)
|
||||
## RCA (почему старый `recover` не помогал)
|
||||
|
||||
Из корня репозитория `local_machine`:
|
||||
### 1. Ядерный сброс не выполнялся
|
||||
|
||||
```bash
|
||||
chmod +x ./docs/connectivity/scripts/macos-hotspot-network-recover.sh
|
||||
./docs/connectivity/scripts/macos-hotspot-network-recover.sh status
|
||||
./docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
|
||||
Скрипт проверял `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
|
||||
```
|
||||
|
||||
`recover` делает: **выключает PAC** (те же сервисы, что и `macos-system-pac.sh`), **выключает системный SOCKS на Wi‑Fi**, по возможности **сбрасывает DNS** и **кратко перезапускает Wi‑Fi** и DHCP.
|
||||
В prefs оставался шлюз `10.219.227.39`, хотспот уже в `10.36.136.x` → `ping` → `Host is down`, `curl` мёртв.
|
||||
|
||||
Если скрипт пишет, что нет `sudo` без пароля — выполните вручную команды из раздела «Вручную» ниже.
|
||||
**Исправлено:** Wi‑Fi **только DHCP**; Joplin — **alias** `<подсеть>.100` на `en0` (не трогает default route). См. [apps/joplin/STABLE_SETUP.md](./apps/joplin/STABLE_SETUP.md).
|
||||
|
||||
После появления интернета, если вам снова нужен PAC:
|
||||
### 3. PAC / SOCKS (вторично)
|
||||
|
||||
```bash
|
||||
./docs/connectivity/scripts/macos-pac-on.sh
|
||||
```
|
||||
|
||||
Только **после** того как процесс на **1089** реально запущен и отдаёт `proxy.pac`.
|
||||
PAC на `:1089` без сервера усиливает сбои, но **не объясняет** `ping 8.8.8.8 → No route to host`.
|
||||
|
||||
---
|
||||
|
||||
## Вручную (без скрипта)
|
||||
## Что делает `recover` сейчас
|
||||
|
||||
### 1. Отключить автоматический PAC
|
||||
| Шаг | Действие |
|
||||
|-----|----------|
|
||||
| 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 <subnet>.100` для Joplin |
|
||||
|
||||
**GUI:** Системные настройки → Сеть → Wi‑Fi → Подробнее → Прокси → снять **«Автоматическая настройка прокси (PAC)»**.
|
||||
---
|
||||
|
||||
**CLI** (из репо):
|
||||
|
||||
```bash
|
||||
./docs/connectivity/scripts/macos-pac-off.sh
|
||||
./docs/connectivity/scripts/macos-system-pac.sh status
|
||||
```
|
||||
|
||||
### 2. Отключить системный SOCKS (если включали для Shadowsocks)
|
||||
|
||||
```bash
|
||||
networksetup -setsocksfirewallproxystate "Wi-Fi" off
|
||||
networksetup -getsocksfirewallproxy "Wi-Fi"
|
||||
```
|
||||
|
||||
### 3. Сброс DNS
|
||||
## Ядерная кнопка (если скрипт недоступен)
|
||||
|
||||
```bash
|
||||
sudo networksetup -setdhcp "Wi-Fi"
|
||||
sudo ifconfig en0 down
|
||||
sudo route -n flush
|
||||
sudo dscacheutil -flushcache
|
||||
sudo killall -HUP mDNSResponder
|
||||
```
|
||||
|
||||
### 4. Обновить DHCP и «пнуть» Wi‑Fi
|
||||
|
||||
Узнать интерфейс Wi‑Fi (часто `en0`):
|
||||
|
||||
```bash
|
||||
networksetup -listallhardwareports | sed -n '/Hardware Port: Wi-Fi/,/Ethernet Address/p'
|
||||
```
|
||||
|
||||
Дальше (подставьте свой `Device`, например `en0`):
|
||||
|
||||
```bash
|
||||
sudo ifconfig en0 up
|
||||
sudo ipconfig set en0 DHCP
|
||||
networksetup -setairportpower en0 off
|
||||
sleep 2
|
||||
networksetup -setairportpower en0 on
|
||||
bash /Users/eternal/code/local_machine/docs/connectivity/scripts/macos-hotspot-network-recover.sh recover
|
||||
```
|
||||
|
||||
### 5. Captive portal
|
||||
|
||||
Откройте в браузере **`http://captive.apple.com`** или **`http://neverssl.com`** — должна открыться страница входа в сеть отели/кафе.
|
||||
|
||||
---
|
||||
|
||||
## Профилактика (архитектурно)
|
||||
## Диагностика
|
||||
|
||||
1. **Не держать PAC включённым**, если сервис на **1089** не запущен: сначала поднять Clash/Surge/свой HTTP‑сервер с PAC, **затем** `macos-pac-on.sh`.
|
||||
2. Перед подключением к **чужому хотспоту** с обязательной страницей входа — **временно PAC off** (`macos-pac-off.sh`), залогиниться в сеть, затем при необходимости снова **on**.
|
||||
3. Разнести роли: **глобальный PAC** — только когда стабильно есть локальный конфиг‑сервер; для «чистого» интернета в дороге — **PAC выключен**, прокси только в приложениях (Telegram SOCKS **1081**, Cursor **10809** и т.д.) — см. [TELEGRAM_GUIDE.md](./TELEGRAM_GUIDE.md), [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md).
|
||||
```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`.
|
||||
|
||||
---
|
||||
|
||||
@@ -113,10 +112,6 @@ networksetup -setairportpower en0 on
|
||||
|
||||
| Документ | Зачем |
|
||||
|----------|--------|
|
||||
| [PROXY_GUIDE.md](./PROXY_GUIDE.md) | Системный PAC, порты, скрипты `macos-pac-*.sh` |
|
||||
| [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md) | SSH, SOCKS 1081, прод |
|
||||
| [README.md](./README.md) | Оглавление `connectivity/` |
|
||||
|
||||
---
|
||||
|
||||
*Если после `recover` сеть всё ещё мёртвая — проверьте аппаратный тумблер Wi‑Fi, другое SSID, и логи: Консоль → `Wi-Fi` / `configd`.*
|
||||
| [apps/joplin/STABLE_SETUP.md](./apps/joplin/STABLE_SETUP.md) | DHCP + alias |
|
||||
| [PROXY_EMERGENCY.md](./PROXY_EMERGENCY.md) | SSH / SOCKS |
|
||||
| [README.md](./README.md) | Оглавление |
|
||||
|
||||
Reference in New Issue
Block a user