mmfb/lionart-1c: SSH + фикс efsaveragent + накопленный backlog vault-а
Сегодня (mmfb / LionART 1C): - projects/mmfb/lionart-1c.md — новый файл: VM 100 на pve LionART (WIN-70M2VEJIKEF, 10.253.1.240, Win Server 2022, 1С+SQL+Effector Saver), SSH-доступ claude/Kl@udeD1ag!2026 заведён, RDP под Администратор + 2FA. - projects/mmfb/proxmox-inventory.md — hostname WIN-70M2VEJIKEF в VM 100. - decisions/2026-05-28-mmfb-effector-saver-locked-admin.md — диагноз цикла 7038 (SCM-пароль разъехался с .\Администратор) + lockout учётки, и пошаговое решение (disable службы → ADSI unlock → LogonUser-проверка → sc.exe config password= → start auto). Накопившийся backlog (без отдельной правки в эту сессию): - decisions/: buzharovo (recon, migration-plan, 1c-licensing), sergey (instagram iPhone fakeip), amneziavpn macOS v1/v2 incompat, benelux compromise 2026-05-20, glavtorg autologon off, omni domain+update. - projects/: benilux README, buzharovo README+server1c, dttb (nextcloud-talk-bot, npm-proxy-hosts, proxmox-inventory, vpn-clients), glavtorg, sergey README, projects/_index. - claude-memory/: benelux, omniroute. - snippets/mac-dictation/groq-dictate.sh. - notes/claude/: ~80 авто-сохранённых транскриптов сессий за май. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
86
snippets/clients/alexandr-benelux-amnezia-reinstall.md
Normal file
86
snippets/clients/alexandr-benelux-amnezia-reinstall.md
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
date: 2026-05-20
|
||||
type: snippet
|
||||
tags: [vpn, amnezia, client, alexandr, benelux, macos, reinstall]
|
||||
---
|
||||
|
||||
# Александр (Бенелюкс) — переустановка AmneziaVPN на Mac
|
||||
|
||||
Старый конфиг на Mac «залип» (handshake уходит на не те порты, сервер не отвечает — `ErrorCode 305`). На iPhone тот же конфиг работает, значит сервер OK — нужна чистая переустановка конфига на Mac.
|
||||
|
||||
## 📩 Готовое сообщение Александру
|
||||
|
||||
Привет! По AmneziaVPN на Mac. Текущий конфиг залип, надо удалить его полностью и поставить новый — пришлю отдельным сообщением длинную ссылку, начинающуюся с `vpn://...`.
|
||||
|
||||
**1. Открой AmneziaVPN и удали старое подключение**
|
||||
В приложении в списке слева — твоё текущее подключение (скорее всего «Финляндия» или похожее). Нажми на него правой кнопкой (или удерживай) → **«Удалить сервер»**. Подтверди.
|
||||
|
||||
Если правый клик не работает — выбери подключение, открой его настройки (иконка шестерёнки) → внизу страницы кнопка **«Удалить сервер»** / **«Forget server»**.
|
||||
|
||||
**2. Перезагрузи Mac**
|
||||
Меню Apple → «Перезагрузить». Без этого macOS может закешировать старый туннель.
|
||||
|
||||
**3. Скопируй ссылку, которую я пришлю**
|
||||
В моём сообщении будет длинная строка, начинающаяся с `vpn://`. Зажми её пальцем (или правый клик) → «Копировать». Целиком, всю строку — она длинная, не обрезай.
|
||||
|
||||
*Не пытайся открыть её как обычную ссылку — Safari не откроет, нужно именно скопировать текст.*
|
||||
|
||||
**4. Импорт в AmneziaVPN**
|
||||
Открой AmneziaVPN → внизу слева **«+»** → выбери **«Из буфера обмена»** (или **«Вставить из буфера»**). Приложение само распарсит ссылку и создаст новое подключение «Финляндия».
|
||||
|
||||
**5. Подключись**
|
||||
Большая круглая кнопка по центру → **«Подключиться»**. При первом запуске система спросит разрешение на VPN — нажми «Разрешить» и введи пароль Mac.
|
||||
|
||||
Должно стать «Подключено». Проверь на https://2ip.ru — IP `202.71.12.186` (Финляндия).
|
||||
|
||||
---
|
||||
|
||||
**Если не подключается** (то же `ErrorCode 305` или другой):
|
||||
|
||||
6. Открой настройки своего подключения в AmneziaVPN (иконка шестерёнки рядом с «Финляндия») → найди **«Раздельное туннелирование»** → включи в режиме **«Сайты НЕ в туннеле»** (или «исключения») → добавь адрес `202.71.12.186` → сохрани.
|
||||
|
||||
7. Попробуй подключиться снова.
|
||||
|
||||
Если опять не работает — напиши, посмотрю по логам со своей стороны.
|
||||
|
||||
---
|
||||
|
||||
## Внутренние заметки
|
||||
|
||||
- **Клиент:** Александр Григорьев, КП Бенелюкс
|
||||
- **Минимум 3 Mac/iMac в его сети** (DHCP-leases на 2026-05-23):
|
||||
- **`192.168.1.99`** — основной рабочий, hostname `Mac`, MAC `ca:e2:c9:87:16:80`, юзер `aleksandrgrigorev` / `gav1971@` (Display Name «Александр Григорьев»), Remote Login включён → `ssh -J root@100.70.207.97 aleksandrgrigorev@192.168.1.99` (используй sshpass или expect, не интерактивный)
|
||||
- `192.168.1.231` — второй Mac, hostname тоже `Mac`, MAC `2e:39:e6:fb:e1:77`, часто спит
|
||||
- `192.168.1.65` — iMac, MAC `2a:47:de:a2:6d:8d`
|
||||
- **Mac 192.168.1.231 (тот про который изначально жаловались):** AmneziaVPN был установлен, ErrorCode 305. Это **первичная цель** для перевыпуска конфига.
|
||||
- **Mac 192.168.1.99 (проверен 2026-05-23):** AmneziaVPN **не установлен**, чистый стек. DNS правильный (192.168.1.1 → Cudy → FakeIP). НО на нём стоит зоопарк других VPN: AdGuard VPN (запущен в passive-режиме), ProtonVPN system-extensions активны, ExpressVPN/VanyaVPN/VPN Guard установлены. Плюс Intego ContentBarrier + NetBarrier + Kaspersky network extension.
|
||||
- **Подтверждённая причина «вечером TG/WA перестали»** (2026-05-23): с роутера curl https://api.telegram.org → HTTP 302 0.25s, а **с Mac тот же URL → HTTP 000 timeout 6s** при идентичном DNS-резолве FakeIP `198.18.0.x`. AdGuard VPN в content-filter режиме (запущен в фоне, без активного туннеля) перехватывает TCP-соединения через свой transparent-proxy → видит "несуществующий" IP `198.18.0.x` → дропает. Лечение — `⌘Q` AdGuard или удалить совсем.
|
||||
- **AdGuard виснет при отключении** (Александр подтвердил): после disconnect utun-интерфейсы не освобождаются, нужен reboot. Известный баг Network Extensions на macOS, не починить без Apple-патча. Рекомендация — удалить AdGuard полностью (Александр его редко использует), чтобы вопрос отвалился навсегда. ProtonVPN system-extensions тоже выключить (System Settings → Login Items & Extensions → Network Extensions). Kaspersky оставить — он не виноват.
|
||||
- **2026-05-24:** Александр выключил AdGuard, но `systemextensionsctl list` всё ещё показывает Proton Transparent-Proxy + WireGuard как `activated enabled`. TG/WA по-прежнему HTTP 000 timeout, traceroute до FakeIP — все звёзды. Это типичная ситуация: пользователь думает что VPN выключен (приложение закрыто), а **system extension продолжает перехватывать TCP-соединения на kernel-уровне** до отправки в сеть. CLI-деактивация невозможна (SIP блокирует `systemextensionsctl uninstall`), только через GUI. Готовое сообщение для Александра — в этом файле выше («Готовое сообщение Александру»).
|
||||
- **2026-05-27:** Финальная зачистка. Александр снёс Proton (extensions), Intego, оставил только Kaspersky. Но включил AmneziaVPN-app (без активного туннеля!) — её **AmneziaVPN-service** (root daemon) перехватывал весь TCP и ломал FakeIP-обход даже без подключения. Сделано:
|
||||
- `launchctl bootout system /Library/LaunchDaemons/AmneziaVPN.plist` — выгружен navсегда, persistent после reboot. AmneziaVPN не будет запускаться автоматически
|
||||
- `pkill -9 AmneziaVPN` — процессы убиты
|
||||
- `killall AdobeAcrobat` (зависший на 109% CPU — не мог достучаться до личного кабинета без VPN)
|
||||
- DNAT-правило принтера (8148 → 192.168.1.148:443) восстановлено и persistent в `/etc/nftables.d/50-printer-dnat.nft`
|
||||
- После kill сетевой стек macOS залип (HTTP 000 даже на yandex.ru), `networksetup off/on Wi-Fi` не помог — нужен reboot Mac. Александру сказано перезагрузить
|
||||
- **Главный урок:** AmneziaVPN на macOS даже в "стопе" продолжает фильтровать через LaunchDaemon. Для полного отключения — `launchctl bootout` + `pkill`. Полное удаление приложения тоже выгружает daemon, но Apple-аппа держится за extension и dragging в Корзину часто не чистит kernel-state.
|
||||
- **Принтер HP M775 (192.168.1.148):** физически в сети (ping ok), но все сетевые сервисы (80/443/631/9100) закрыты — принтер в sleep/ошибке. Физическое вмешательство нужно: дисплей → разбудить / устранить ошибку / hard reboot. DNAT через NetBird готов на `https://100.70.207.97:8148` — заработает когда принтер оживёт.
|
||||
- **Семейные устройства в LAN** (iPhone Александра 192.168.1.16, S23 Нины, A51 Нины, S25 Игоря, iMacAleksandr4 192.168.1.186, Mi TV Stick, iPad-103): за 2 дня 16 часов через awg0-туннель прошло всего 5.96 MiB sent / 565 KiB received — это keepalive, реальной нагрузки нет. Подозрение: семья пользуется свои VPN / Private Relay / DoH в Chrome — перебивают роутерный обход. При следующих жалобах от семьи — первым делом проверять Private Relay (iCloud) и Chrome Secure DNS.
|
||||
- **2026-05-27 ФИНАЛЬНАЯ зачистка (после reboot Mac):** AmneziaVPN-service автоматически воскрес через `/Library/LaunchDaemons/AmneziaVPN.plist` который Apple перерегистрирует при boot (мой `launchctl bootout` НЕ пережил reboot). Окончательно:
|
||||
- `launchctl bootout` + `rm /Library/LaunchDaemons/AmneziaVPN.plist` — теперь не воскреснет
|
||||
- `pkill AmneziaVPN-service` — убит
|
||||
- `/Applications/AmneziaVPN.app` **оставлен** (для поездок Александр запустит вручную). При первом ручном запуске Apple переставит LaunchDaemon — это норма
|
||||
- **Проверено: с Mac kavd (Касперский) держит SYN_SENT-сокеты на FakeIP `198.18.0.x:443` для антифишинг-сканирования. Это не блокирует FakeIP-обход для пользовательских приложений** — Kaspersky просто проверяет URLы, его SYN-попытки лопаются (т.к. сервер не отвечает на просто SYN без app-layer trigger). Подтверждено: после нашей зачистки TG/WA с Mac работают через Cudy/FakeIP за 0.7-0.75s
|
||||
- **ВАЖНЫЙ УРОК для будущих диагностик:** На BusyBox-Cudy **НЕ делать `nft flush table inet fw4`** для очистки conntrack-состояний — `nft flush` сносит ВСЕ runtime-правила (включая mangle/tproxy подкопа). `fw4 restart` восстанавливает UCI-правила + `/etc/nftables.d/`, **но подкоп-mangle создаётся скриптом подкопа в runtime — нужен отдельно `/etc/init.d/podkop restart`**. Для conntrack-flush в OpenWrt без `conntrack-tools` лучше через `echo 1 > /proc/sys/net/netfilter/nf_conntrack_log_invalid` или просто `/etc/init.d/podkop restart` (он пересоздаст всё). Сегодня я этот flush сделал — на 5 минут оставил всю сеть Бенелюкса без TG/WA, Александр перезагружал Cudy физически.
|
||||
- **2026-05-27 (вечер) — Power outage в посёлке:** Электричество выключили, потом включили. Cudy ребутнулся, всё подкоп-mangle поднялось правильно. Но TG/WA не работали ни на Mac, ни на телефоне. Корневая причина — устройства держали **старые FakeIP в DNS-кеше**, а sing-box после ребута сгенерировал новые маппинги. Лечение: `dscacheutil -flushcache + killall -HUP mDNSResponder` на Mac, App Switcher kill для приложений на телефонах. После этого с Mac TG/WA → HTTP 200/302 за 0.3-1.8с. Бонус-открытие: Cloud Key Gen2+ на 192.168.1.199 имеет работающий web UI на https://192.168.1.199:443 (UniFi OS Console), а SSH запрещён по паролю (только ключ). Создана общая инструкция [[alexandr-benelux-power-recovery]] для семьи Александра на случай следующих outage.
|
||||
- **Mac:** в LAN Бенелюкса, hostname `Mac` (DHCP), IP `192.168.1.231`, MAC `2e:39:e6:fb:e1:77`
|
||||
- **Сервер:** Finland HOSTKEY `202.71.12.186` ([[../../projects/dttb/finland-hostkey-vps]])
|
||||
- **Симптом:** `ErrorCode: 305. Тайм-аут подключения к серверу`
|
||||
- **Что выяснили (2026-05-20):**
|
||||
- conntrack Cudy: Mac стучится на `202.71.12.186:48653` и `:44582`, эти порты на сервере не слушают (есть только `37209/awg`, `32270/wg`, `9443/xray`, `31799/ss`, `38606/socks5`)
|
||||
- На iPhone Александра с **тем же конфигом** работает → значит проблема в Mac-клиенте, а не в сервере или конфиге
|
||||
- Гипотеза: Tunnel Provider macOS залип после прежней версии AmneziaVPN или после изменения протокола на сервере. Network Extension держит старые порты.
|
||||
- **Решение:** полный wipe профиля и системного VPN-entry + перезагрузка + импорт нового `vpn://`-ключа через буфер обмена (Олег пересылает текстом, не файлом)
|
||||
- **Почему не файл `.vpn`:** Олег предпочитает текстовый формат `vpn://...`. По нашему опыту (auto-memory `feedback_amneziavpn_qr`) такие ссылки длинные, через QR не импортируются, а через буфер обмена в десктоп-клиенте — работают.
|
||||
- **Запасной план:** Split Tunneling с исключением серверного IP — типичный workaround для багов AmneziaVPN на macOS, когда handshake-пакеты сами попадают в туннель
|
||||
- **Если и это не помогло:** обновить AmneziaVPN на Mac до последней версии (https://github.com/amnezia-vpn/amnezia-client/releases), либо снести и поставить с GitHub релизы напрямую (минуя App Store, который может задерживать обновления)
|
||||
106
snippets/clients/alexandr-benelux-power-recovery.md
Normal file
106
snippets/clients/alexandr-benelux-power-recovery.md
Normal file
@@ -0,0 +1,106 @@
|
||||
---
|
||||
date: 2026-05-27
|
||||
type: snippet
|
||||
tags: [client, alexandr, benelux, recovery, power-outage, dns-cache]
|
||||
aliases: ["электричество отключали", "после света", "первая помощь Бенелюкс"]
|
||||
---
|
||||
|
||||
# Бенелюкс — первая помощь после отключения электричества
|
||||
|
||||
Семья Александра пользуется обходом блокировок через роутер Cudy (TG, WhatsApp, Instagram, X). После каждого обесточивания посёлка / ребута роутера типичная жалоба: **«Telegram и WhatsApp не работают»**. Это **не поломка роутера** — VPN-канал поднимается сам за 1-2 минуты. Проблема в **устаревшем DNS-кеше на устройствах**.
|
||||
|
||||
## Почему так происходит (для понимания)
|
||||
|
||||
Роутер раздаёт устройствам «поддельные» внутренние адреса (198.18.0.x) для заблокированных сайтов — чтобы перехватить трафик и завернуть в VPN. После ребута Cudy эти адреса **пересоздаются заново**. Устройства же держат старые в кеше: Telegram стучится на адрес, которого больше нет, → таймаут.
|
||||
|
||||
Решение: **очистить DNS-кеш на устройстве** или **закрыть приложение из памяти** (приложения тоже кешируют).
|
||||
|
||||
## 📩 Готовое сообщение Александру / семье
|
||||
|
||||
Привет! Если после отключения электричества Telegram/WhatsApp/Instagram перестали открываться — это типичная штука с кешем устройств, лечится за минуту. Никакие VPN-клиенты дома **НЕ запускай** (Amnezia, AdGuard, Proton — оставь выключенными, они мешают нашему роутерному обходу).
|
||||
|
||||
**На Mac:**
|
||||
|
||||
1. Открой Терминал (Cmd+Space → набери `Terminal` → Enter)
|
||||
2. Скопируй и вставь команду:
|
||||
|
||||
```
|
||||
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
|
||||
```
|
||||
|
||||
3. Введи пароль Mac (тот же что для входа в систему)
|
||||
4. Закрой Safari и Chrome полностью (`⌘Q`, не крестик)
|
||||
5. Открой заново — Telegram/WhatsApp должны заработать
|
||||
|
||||
**На iPhone / iPad:**
|
||||
|
||||
1. Открой App Switcher (свайп вверх с самого низа экрана и задержи)
|
||||
2. Найди Telegram → **смахни вверх** (закрыть из памяти)
|
||||
3. То же с WhatsApp / Instagram / любого нерабочего приложения
|
||||
4. Если не помогло — Настройки → Wi-Fi → нажми (i) рядом с домашней сетью → **«Забыть эту сеть»** → подключись заново
|
||||
5. Открой приложение — должно заработать
|
||||
|
||||
**На Android (Samsung):**
|
||||
|
||||
1. Настройки → Приложения → Telegram → **Принудительно остановить**
|
||||
2. То же с WhatsApp / Instagram
|
||||
3. Открой приложение заново
|
||||
4. Если не помогло — выключи и включи Wi-Fi
|
||||
|
||||
**На телевизионной приставке Mi TV Stick:**
|
||||
|
||||
1. Настройки → Apps → Telegram (или нужное) → Force Stop
|
||||
2. Открой снова
|
||||
|
||||
---
|
||||
|
||||
**Если после всех этих шагов не работает** — напиши, посмотрю на роутере. Бывает что подкоп после ребута не до конца поднялся (1 случай из 100), тогда нужен мой удалённый рестарт.
|
||||
|
||||
**Что делать НЕ нужно:**
|
||||
- ❌ Запускать AmneziaVPN / AdGuard / ProtonVPN на устройстве (они конфликтуют с нашим обходом)
|
||||
- ❌ Переустанавливать Telegram/WhatsApp (это не решает проблему кеша DNS)
|
||||
- ❌ Переподключать роутер (он уже работает — это устройство кеш держит)
|
||||
- ❌ Менять DNS вручную на 8.8.8.8 / 1.1.1.1 (нужно именно через роутер, иначе обход не сработает)
|
||||
|
||||
---
|
||||
|
||||
## Внутренние заметки
|
||||
|
||||
- **Объект:** Бенелюкс (КП Бенелюкс, Истра), клиент Александр Григорьев
|
||||
- **Стек обхода:** Cudy TR3000 (192.168.1.1) + podkop + sing-box + AmneziaWG → finland5870 (`202.71.12.186:37209`)
|
||||
- **FakeIP диапазон:** `198.18.0.0/15`
|
||||
- **Известная проблема:** после ребута Cudy sing-box пересоздаёт FakeIP-маппинги с новыми номерами. Устройства держат старые в кеше → SYN на мёртвый FakeIP → таймаут. Лечение — flush DNS на устройстве.
|
||||
|
||||
### Если у Александра «опять не работает» после всех шагов
|
||||
|
||||
Чек-лист со стороны роутера (по приоритету):
|
||||
|
||||
1. **Cudy жив?** `ssh root@100.70.207.97 uptime` — если нет, физически перезагрузить
|
||||
2. **AmneziaWG handshake свежий (< 3 мин)?** `awg show awg0`
|
||||
3. **Подкоп ловит трафик?** Счётчик в `nft list table inet PodkopTable | grep '198.18'` должен расти при свежих curl-тестах
|
||||
4. **`/etc/init.d/podkop restart`** если mangle/tproxy сломались (мой `nft flush` 2026-05-27 показал что эти runtime-правила теряются от грубых nft-операций)
|
||||
5. **masquerade для awg0** есть? `nft list chain inet fw4 srcnat | grep awg0` (persistent в `/etc/nftables.d/51-awg0-masq.nft`)
|
||||
6. **rule_sets `telegram` / `meta` загружены?** Если `/tmp/sing-box/rulesets/` пуст — `podkop list_update`
|
||||
|
||||
### Что НЕ делать на Cudy (антипаттерны)
|
||||
|
||||
- ❌ `nft flush table inet fw4` — снесёт ВСЕ runtime-правила подкопа. На BusyBox-Cudy нет `conntrack-tools`, флаш делать через `/etc/init.d/podkop restart`
|
||||
- ❌ `fw4 restart` НЕ восстанавливает подкоп-runtime — только UCI + `/etc/nftables.d/`. Подкоп пересоздаётся **только** через `/etc/init.d/podkop restart`
|
||||
|
||||
### Доступы
|
||||
|
||||
- **Mac Александра:** `ssh -J root@100.70.207.97 aleksandrgrigorev@192.168.1.X` (IP может меняться после ребута — см. `/tmp/dhcp.leases` на Cudy), пароль `gav1971@`. Display Name юзера «Александр Григорьев», short username `aleksandrgrigorev`.
|
||||
- **Cudy:** ключ `~/.ssh/id_ed25519` (только по ключу с 2026-05-20)
|
||||
- **Cloud Key Gen2+ контроллер:** `192.168.1.199`, web https://192.168.1.199:443 (UniFi OS Console), SSH только по ключу (паролей нет, ключей наших нет — заходить только через WebUI)
|
||||
- **finland5870 VPS:** `ssh -J root@100.70.92.138 root@202.71.12.186` ([[../../projects/dttb/finland-hostkey-vps]])
|
||||
|
||||
### Семейные устройства в LAN Бенелюкса
|
||||
|
||||
После каждого ребута Cudy DHCP раздаёт **новые IP** — hostname остаются стабильными:
|
||||
- `Mac` — основной Mac Александра
|
||||
- `iMacAleksandr4` — второй iMac
|
||||
- `MacBookPro`, `MacBook-Pro-4` — другие маки
|
||||
- `iPhone`, `iPad-103`, `masha-ipad` — Apple-устройства
|
||||
- `S23-pol-zovatela-Nina`, `A51-pol-zovatela-Nina`, `S25-pol-zovatela-Igor` — Samsung-устройства семьи (Нина, Игорь)
|
||||
- `TV-pristavka-Mi-TV-Stick` — TV-приставка
|
||||
- `Cloud Key/Benelyuks` (192.168.1.199), USW-Pro-24-PoE, USW-Lite-16-PoE, USW-Lite-8-PoE, USW-Flex-Mini, US-8-60W, U6-Pro21, U6-Pro22 — Unifi-фабрика
|
||||
@@ -3,6 +3,9 @@
|
||||
# Hammerspoon Lua callback вставляет через hs.eventtap.keyStroke({"cmd"},"v") в активное окно.
|
||||
# Fallback: если Groq недоступен (нет сети / 429 / 5xx) → локальный whisper-cli (whisper-cpp tiny ru).
|
||||
|
||||
# Hammerspoon при автозапуске даёт пустой PATH — добавляем явно (Intel + Apple Silicon brew пути)
|
||||
export PATH="/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
||||
|
||||
PID_FILE="/tmp/groq-dictate.pid"
|
||||
WAV_FILE="/tmp/groq-dictate.wav"
|
||||
WAV_16K="/tmp/groq-dictate-16k.wav"
|
||||
|
||||
152
snippets/podkop-fakeip-diagnostics.md
Normal file
152
snippets/podkop-fakeip-diagnostics.md
Normal file
@@ -0,0 +1,152 @@
|
||||
---
|
||||
date: 2026-05-12
|
||||
type: snippet
|
||||
tags: [openwrt, podkop, fakeip, amneziawg, sing-box, diagnostics, playbook]
|
||||
---
|
||||
|
||||
# Диагностика подкоп-роутера (podkop + sing-box + AmneziaWG + FakeIP)
|
||||
|
||||
Универсальный playbook когда клиент жалуется «обход не работает» на типовом домашнем сетапе Олега. Идти **строго по порядку** — каждый шаг отсекает класс причин.
|
||||
|
||||
> SSH-доступ ко всем роутерам Олега: `ssh root@<netbird-ip>` пароль `1qaz!QAZ`.
|
||||
> На Сергее проверено 2026-05-12 — см. [[../decisions/2026-05-12-sergey-instagram-iphone-fakeip]].
|
||||
|
||||
## 0. Базовое — что вообще стоит
|
||||
|
||||
```sh
|
||||
cat /etc/openwrt_release
|
||||
opkg list-installed | grep -iE "podkop|sing-box|amneziawg|adguard|netbird|dnsmasq"
|
||||
ps w | grep -iE "sing-box|podkop|adguard" | grep -v grep
|
||||
```
|
||||
|
||||
## 1. AmneziaWG туннель живой?
|
||||
|
||||
```sh
|
||||
ip -br a | grep -iE "awg|wg"
|
||||
awg show awg0 # latest handshake должен быть <2 мин
|
||||
ip route | grep awg0 # должен быть default или markroute
|
||||
```
|
||||
|
||||
- **Handshake > 5 мин** → endpoint недоступен или порт зарезан DPI. Проверить с другого хоста `curl <endpoint>:<port>` (если TCP-VLESS) или ребутнуть peer.
|
||||
- **Нет интерфейса awg0** → kmod-amneziawg не загружен или конфиг побит: `dmesg | grep -i amnezia`, `uci show network | grep awg`.
|
||||
|
||||
## 2. Sing-box процесс живой?
|
||||
|
||||
```sh
|
||||
ps w | grep -v grep | grep sing-box
|
||||
ls -la /etc/sing-box/cache.db # дата = когда последний раз был апдейт fakeip
|
||||
podkop check_logs 2>&1 | tail -40
|
||||
```
|
||||
|
||||
- Если sing-box crash-loop'ит — обычно **залочен `/etc/sing-box/cache.db`** (две копии sing-box после ребута). Фикс: `killall sing-box; sleep 2; /etc/init.d/podkop restart`.
|
||||
- См. также [[../../.claude/projects/-Users-ai-knowledge-base/memory/feedback_openclaw_crash_loop|памятку про sing-box crash-loop]].
|
||||
|
||||
## 3. nft маркировка и tproxy
|
||||
|
||||
```sh
|
||||
podkop check_nft | grep -E "tproxy|@podkop_subnets|198\.18"
|
||||
nft list table inet podkop 2>&1 | head -80
|
||||
```
|
||||
|
||||
Смотреть счётчики (`counter packets <N>`):
|
||||
- Если **0 пакетов** в `proxy` chain через `tproxy ip to 127.0.0.1:1602` — клиенты не идут через FakeIP вообще (см. шаг 5).
|
||||
- Если **есть пакеты** — заворот работает, проблема ниже.
|
||||
|
||||
## 4. AmneziaWG реально маршрутизирует?
|
||||
|
||||
```sh
|
||||
# Базовый WAN exit
|
||||
curl -4 -s --max-time 5 https://ifconfig.me; echo
|
||||
# Через туннель
|
||||
curl -4 -s --max-time 5 --interface awg0 https://ifconfig.me; echo
|
||||
```
|
||||
|
||||
Должны вернуться **разные IP**. Если оба = WAN — `ip rule` / fwmark сломан, либо `main-out` в sing-box без `bind_interface: awg0`.
|
||||
|
||||
```sh
|
||||
ip rule | grep -E "podkop|fwmark"
|
||||
jq '.outbounds[] | select(.tag=="main-out")' /etc/sing-box/config.json
|
||||
```
|
||||
|
||||
## 5. FakeIP реально подменяет?
|
||||
|
||||
```sh
|
||||
# Через локальный dnsmasq
|
||||
for d in www.instagram.com chatgpt.com discord.com www.youtube.com; do
|
||||
printf "%-25s -> " "$d"
|
||||
nslookup $d 192.168.1.1 2>/dev/null | awk '/^Name:/{getline; print $2}'
|
||||
done
|
||||
```
|
||||
|
||||
- Ответы `198.18.x.x` → FakeIP работает ✅
|
||||
- Реальные IP типа `157.240.x.x` → домен **не в community-list**, либо `domain_resolver_enabled=1` (тогда sing-box резолвит сам, fakeip обходится).
|
||||
|
||||
Что подключено сейчас:
|
||||
|
||||
```sh
|
||||
uci get podkop.main.community_lists # сейчас: russia_inside, telegram, meta
|
||||
podkop list_update # обновить вручную
|
||||
```
|
||||
|
||||
Доступные community-листы podkop: `russia_inside`, `russia_outside`, `telegram`, `meta`, `discord`, `cloudflare`, `oai` (OpenAI/ChatGPT), `twitter`, `hdrezka` и др.
|
||||
|
||||
Добавить — `uci add_list podkop.main.community_lists='discord'; uci commit podkop; /etc/init.d/podkop restart`.
|
||||
|
||||
## 6. DNS-цепочка целая?
|
||||
|
||||
```sh
|
||||
# Кто слушает 53?
|
||||
ss -ulnp 2>&1 | grep ":53"
|
||||
# Через что dnsmasq форвардит
|
||||
uci show dhcp.@dnsmasq[0] | grep -E "server|noresolv"
|
||||
# Прямой 8.8.8.8 / 1.1.1.1 не режется провайдером?
|
||||
nslookup chatgpt.com 8.8.8.8
|
||||
nslookup chatgpt.com 1.1.1.1
|
||||
```
|
||||
|
||||
Корректная цепочка для типового стэка: `LAN → dnsmasq:53 → 127.0.0.42 (sing-box DNS) → upstream` (с `noresolv=1`).
|
||||
Цепочка с AGH (как у Олега в HomeLab): `LAN → dnsmasq:53 → AGH:5353 → 127.0.0.42 (sing-box) → upstream`.
|
||||
|
||||
## 7. Клиент сам обходит роутерный DNS? (iPhone-проблема)
|
||||
|
||||
Это **самая частая причина**, когда роутер исправен. См. полный фикс [[../decisions/2026-05-12-sergey-instagram-iphone-fakeip]].
|
||||
|
||||
Признаки:
|
||||
- В `/tmp/dhcp.leases` MAC с рандомизированным первым октетом `02`, `06`, `0a`, `0e` (приватный Wi-Fi на iOS/Android)
|
||||
- Curl с **роутера** работает, у клиента — нет
|
||||
|
||||
Что сказать клиенту (iPhone):
|
||||
1. iCloud Private Relay → ВЫКЛ
|
||||
2. Wi-Fi → DNS → Автоматически
|
||||
3. Safari → Скрывать IP → ВЫКЛ
|
||||
4. Chrome → DNS over HTTPS → ВЫКЛ
|
||||
|
||||
Если клиент-сайд не подействовал — сделать на роутере:
|
||||
|
||||
```sh
|
||||
# DNAT всего LAN-DNS:53 → роутер
|
||||
nft 'add rule inet fw4 dstnat iifname "br-lan" meta l4proto { tcp, udp } th dport 53 dnat ip to 192.168.1.1:53'
|
||||
|
||||
# Reject DoH/DoT к публичным резолверам
|
||||
nft 'add set inet fw4 doh_servers { type ipv4_addr; flags interval; elements = { 1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 9.9.9.9, 149.112.112.112 } }'
|
||||
nft 'add rule inet fw4 forward iifname "br-lan" ip daddr @doh_servers tcp dport { 443, 853 } reject with tcp reset'
|
||||
```
|
||||
|
||||
## 8. Что является НОРМОЙ (не баг)
|
||||
|
||||
- **Meta NetSeer probes** в логе sing-box: `ERROR ... {GUID}-netseer-ipaddr-assoc.xy.fbcdn.net: empty result` — anti-CDN-detection Meta, штатное поведение, игнорировать.
|
||||
- **`podkop check_fakeip` показывает российский IP** — тестовый домен `ip.podkop.fyi` не в community-list, идёт direct через WAN. Это проверка что *fakeip-сервис* работает, а не *обход* работает.
|
||||
- **`ash: ^[0-9]+...: unknown operand`** в выводе `podkop check_proxy` — баг regex'а в `/usr/bin/podkop`, не влияет.
|
||||
|
||||
## 9. Когда уже всё проверено и не помогло
|
||||
|
||||
- Поменять `dns_type` с `udp` на `doh` (если провайдер режет UDP/53 — редко, но бывает): `option dns_type 'doh'; option dns_server 'https://dns.google/dns-query'`.
|
||||
- Перейти с `connection_type=vpn` (AWG) на `connection_type=proxy` (VLESS) — секция `vlees` уже настроена как резерв.
|
||||
- Проверить MTU: `ping -M do -s 1380 8.8.8.8` через awg0 — если фрагментация, MTU 1420 на awg0 уменьшить до 1380.
|
||||
|
||||
## Ссылки
|
||||
|
||||
- [[../projects/sergey/README]] — пример полностью разобранного объекта
|
||||
- [[../decisions/2026-05-12-sergey-instagram-iphone-fakeip]] — кейс iPhone + Private Relay
|
||||
- [[../decisions/2026-04-30-openwrt-homelab-agh-podkop-chain]] — стэк AGH+podkop у Олега дома (как добавить AGH к роутеру клиента)
|
||||
- [[../projects/dttb/openwrt-router]] — домашний OpenWrt, DNS hijack уже стоит
|
||||
Reference in New Issue
Block a user