Я пытаюсь настроить автоматическую настройку пробуждения по локальной сети, используя мой маршрутизатор, работающий под управлением OpenWRT 14.07, Barrier Breaker. Моя идея состоит в том, что маршрутизатор отслеживает любые попытки подключения к хосту, который я хочу разбудить, и в случае, если он регистрирует такое событие, он отправляет волшебный пакет, чтобы разбудить хост. Я пытался сделать это, используя iptables, чтобы записать любую такую попытку подключения в лог-файл, который я затем мог проверить из другого скрипта. Для iptables я пришел к этому правилу:
iptables -I FORWARD 1 -d 192.168.1.20 -p tcp -j LOG --log-prefix "WAKE_UP_EVENT"
192.168.1.20 - это фиксированный IP-адрес хоста, который я хочу разбудить. Затем я мог бы использовать logread
в bash-скрипте, чтобы отслеживать логи и отправлять волшебный пакет, если он находит WAKE_UP_EVENT
. Как-то так или иначе.
Хотя это работает нормально при попытке подключения с использованием SSH от клиента за пределами моей домашней сети (например, из Интернета), оно не работает для клиентов в той же подсети, что и хост в моей домашней сети. Если я правильно понимаю, причина этого в том, что правило FORWARD предназначено для любых пакетов, которые "пропускают" iptables, но в этом случае пакеты остаются в одной сети и не имеют (?) связаться с iptables.
Итак, два вопроса:
1) Правильно ли мое понимание поведения?
2) Есть ли способ достичь того, что я пытаюсь сделать, с помощью iptables или другим способом?
Я пытался заставить это работать в течение 4 часов безрезультатно и без поиска полезной информации. Надеюсь, кто-нибудь может дать мне полезную информацию. Заранее спасибо!