diff --git a/family/how-to/htpc-tplink-wrt-wol.md b/family/how-to/htpc-tplink-wrt-wol.md new file mode 100644 index 00000000..c2ecf712 --- /dev/null +++ b/family/how-to/htpc-tplink-wrt-wol.md @@ -0,0 +1,103 @@ +# HTPC за TPLink WRT — WOL через роутер + +## Схема сети + +``` +Главная сеть: 192.168.1.0/24 (основной роутер) + │ + ├─ TV (LG): 192.168.1.75 + ├─ TPLink WRT: 192.168.1.84 (WiFi-uplink, phy1-sta0) + │ │ + │ └─ LAN (br-lan, 192.168.6.2/16) + │ └─ HTPC: 192.168.1.86 (статический IP, физически на LAN порту TPLink) + └─ ... +``` + +**HTPC** (192.168.1.86) подключён к LAN-порту TPLink, но имеет статический IP из основного диапазона 192.168.1.x. + +## Проблема WOL + +TV шлёт Magic Packet на broadcast основной сети → TPLink получает его на WiFi-интерфейсе (phy1-sta0, «WAN» с точки зрения fw4). Стандартный broadcast из 192.168.1.x не проходит через NAT к HTPC в br-lan. + +Решение: socat-прокси на TPLink перехватывает UDP:9 и пересылает напрямую на 192.168.1.86:9. + +## Конфигурация TPLink WRT + +### 1. Socat (WOL-прокси) + +Файл: `/etc/init.d/socat` + +```sh +#!/bin/sh /etc/rc.common +START=99 +STOP=10 +SOCAT=/tmp/socat + +start() { + if [ ! -x "$SOCAT" ]; then + wget -q -T 10 -O /tmp/socat.ipk \ + "https://downloads.openwrt.org/releases/23.05.5/packages/mipsel_24kc/packages/socat_1.7.4.4-1_mipsel_24kc.ipk" + opkg install --dest ram /tmp/socat.ipk 2>/dev/null + cp /tmp/usr/bin/socat "$SOCAT" + chmod +x "$SOCAT" + fi + "$SOCAT" UDP-RECVFROM:9,broadcast,reuseaddr,fork UDP-SENDTO:192.168.1.86:9 & +} + +stop() { + pkill -f "socat.*UDP-RECVFROM:9" 2>/dev/null +} +``` + +Бинарник socat живёт в `/tmp/` (tmpfs) и скачивается при каждой загрузке. +Активировать: `service socat enable && service socat start` + +### 2. Статический маршрут к HTPC + +Файл: `/etc/rc.local` + +```sh +ip route add 192.168.1.86 dev br-lan +``` + +Нужен потому что HTPC имеет IP из 192.168.1.x, но физически в br-lan (192.168.6.x subnet). Без маршрута TPLink отправит трафик на 192.168.1.86 через WiFi-uplink (phy1-sta0), а не через LAN-порт. + +### 3. Firewall-правило (Allow-WOL) + +```sh +uci add firewall rule +uci set firewall.@rule[-1].name="Allow-WOL" +uci set firewall.@rule[-1].src="wan" +uci set firewall.@rule[-1].proto="udp" +uci set firewall.@rule[-1].dest_port="9" +uci set firewall.@rule[-1].target="ACCEPT" +uci commit firewall +/etc/init.d/firewall reload +``` + +Правило разрешает UDP:9 с WAN (phy1-sta0) → socat может принять пакет. +Хранится в `/etc/config/firewall`, переживает перезагрузки. + +## Диагностика + +```sh +# Проверить что socat запущен +ps | grep socat + +# Проверить маршрут +ip route | grep 192.168.1.86 + +# Проверить firewall правило +nft list chain inet fw4 input_wan | grep "dport 9" +``` + +## Адреса + +| Устройство | IP | Интерфейс | +|---|---|---| +| TPLink WRT (WiFi) | 192.168.1.84 | phy1-sta0 | +| TPLink WRT (LAN) | 192.168.6.2 | br-lan | +| HTPC | 192.168.1.86 | на LAN-порту TPLink | +| TV LG | 192.168.1.75 | основная сеть | + +SSH на роутер: `ssh root@192.168.1.84`