Files
knowledge-base/snippets/podkop-fakeip-diagnostics.md
dttb bf565f1392 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>
2026-05-29 12:33:03 +03:00

7.8 KiB
Raw Blame History

date, type, tags
date type tags
2026-05-12 snippet
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. Базовое — что вообще стоит

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 туннель живой?

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 процесс живой?

ps w | grep -v grep | grep sing-box
ls -la /etc/sing-box/cache.db    # дата = когда последний раз был апдейт fakeip
podkop check_logs 2>&1 | tail -40

3. nft маркировка и tproxy

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 реально маршрутизирует?

# Базовый 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.

ip rule | grep -E "podkop|fwmark"
jq '.outbounds[] | select(.tag=="main-out")' /etc/sing-box/config.json

5. FakeIP реально подменяет?

# Через локальный 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 обходится).

Что подключено сейчас:

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-цепочка целая?

# Кто слушает 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 → ВЫКЛ

Если клиент-сайд не подействовал — сделать на роутере:

# 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.

Ссылки