2

У меня есть два компьютера на базе Arch Linux, «A» и «B», подключенные к Интернету через один и тот же маршрутизатор. Я настроил и протестировал Wake-on-WAN на обоих из них. Оба компьютера выключены большую часть времени.

Я хотел бы подключиться к ним, не отправляя волшебные пакеты извне. Сетевая карта компьютера «А» поддерживает пробуждение от одноадресной активности, поэтому я включил его. Проблема в том, что это не относится к компьютеру «B» - его может разбудить только волшебный пакет.

Могу ли я заставить компьютер «А» автоматически разбудить компьютер «Б» при попытке подключения к TCP/UDP последнему? Я думаю о решении, как это:

  1. Настройте маршрутизатор и компьютер «B» таким образом, чтобы весь трафик «B» (через определенные порты) проходил через компьютер «A».
  2. Установите сценарий для «A», который каким-либо образом инициирует соединение с «B», проверяет состояние «B» и отправляет магический пакет.

Может быть, есть более простой способ?

РЕДАКТИРОВАТЬ:

Было бы хорошо, если бы можно было перенаправить все, чтобы трафик «B» не проходил через «A» после пробуждения первого, поэтому последний мог автоматически отключиться.

2 ответа2

0

Вы можете создать bash-скрипт на компьютере A который генерирует и отправляет волшебный пакет на компьютер B по локальной сети.

Когда вы разбудите компьютер A одноадресным трафиком, сценарий может сработать автоматически, или вы можете подключиться к компьютеру A SSH и запустить его.

Этот ответ на StackOverflow описывает, как сделать такой скрипт.

0

Могу ли я заставить компьютер «А» автоматически разбудить компьютер «Б» при попытке подключения к TCP/UDP последнему?

Вам нужно будет передать запросы ARP на B, пока B спит, затем прослушать попытки соединения для IP B и отправить пакет пробуждения.

Это выполнимо, но достаточно сложно, я бы написал небольшую программу на C, используя пакетные сокеты для первоначального прокси ARP и попытки отслеживания соединения. Также необходимо управлять состоянием о B, говоря, спит ли B или нет, например, проверяя, отправляет ли B что-нибудь и отвечает на запросы ARP.

Вам понадобится немало понимания сетевых протоколов, чтобы написать это (или смотреть на перехваты Wireshark достаточно долго, пока вы не поймете, что происходит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .