Files
obsidian-vault/family/how-to/htpc-tplink-wrt-wol.md
T

104 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`