ethtool, WOL: Что на самом деле означает «пробуждение при физической активности» и (как) я могу это использовать?

ethtool, WOL: Что на самом деле означает «пробуждение при физической активности» и (как) я могу это использовать?

В данный момент я борюсь с настройками WOL моего Ubuntu box. Идея в том, чтобы HTTP/SVN-сервер спал, пока не используется, и просыпался, когда к нему обращаются. Пока что wake-on-LAN работает и активируется при запуске:

Settings for eth1:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: pg
        Wake-on: pg
        Current message level: 0x0000003f (63)
        Link detected: yes

Как видите, я также установил флаг wol p(«пробуждение при физической активности»). Я предполагал, что смогу убедить устройство просыпаться не только от магических пакетов, но и от любого сетевого доступа. Однако это, похоже, неверно.

Что же тогда означает этот флаг и: (Как) я могу использовать его во зло своим злым планам?

решение1

Примечание: вопрос представляет собой кросс-пост 4+-летней давности отздесь. Не уверен, почему он получил вознаграждение спустя более 4 лет, но, вероятно, он получил wol-пакет ;-)

Theруководство по ethtoolговорит:

wol p|u|m|b|a|g|s|d...
          Set Wake-on-LAN options.  Not all  devices  support  this.   The
          argument  to  this  option  is a string of characters specifying
          which options to enable.
          p  Wake on phy activity
          u  Wake on unicast messages
          m  Wake on multicast messages
          b  Wake on broadcast messages
          a  Wake on ARP
          g  Wake on MagicPacket(tm)
          s  Enable SecureOn(tm) password for MagicPacket(tm)
          d  Disable (wake on nothing).  This option clears  all  previous
             options.

Активность PHY относится кФизический чип, который обрабатывает связь на физическом уровнемодель OSI. Проще говоря: любой пакет, напрямую отправленный на это сетевое устройство, должен разбудить машину.

Для работы функции пробуждения по физическому уровню (PHY) должны быть выполнены следующие условия:

  • Ваше сетевое устройство поддерживает этоиВаш сетевой драйвер поддерживает это. Я не уверен, что ethtool тщательно проверяет это перед установкой параметра. Проверьте руководство/спецификации, чтобы узнать, поддерживается ли эта конкретная функция.
  • Ваша карта Ethernet все еще включена после выключения (светодиоды должны гореть). Если это не так, убедитесь, что ваша ОС не выключает карту (в большинстве дистрибутивов Linux это установлено NETDOWN=noв /etc/default/halt).
  • Настройки wol сохраняются после сна/выключения.
  • wol включен в настройках BIOS.

Также обратите внимание, что тайм-аут ARP по умолчанию составляет 30 секунд (см. такжеэтот пост SU). После этого IP-адрес вашей целевой машины будет забыт машиной, с которой вы отправляете любой физический пакет. Убедитесь, что вы установили статический ARP-адрес на машине, с которой вы отправляете пакет.

Теперь любой направленный запрос (ping, http, ssh, пакет wol, ...) должен поднять ваш компьютер.

решение2

Я думаю, что ваше предположение верно. Существует множество различных событий, от которых вы можете настроить свое устройство для пробуждения. К сожалению, документация по ethtool не очень ясна по поводу флага p.

Несколько вопросов, которые могут помочь проанализировать проблему: Когда ваша машина выключена, можете ли вы подтвердить, что сетевая карта все еще работает (светодиоды мигают)? Вы пытаетесь разбудить свою машину из той же подсети или через маршрутизатор? Как вы пытаетесь ее разбудить? Можете ли вы использовать сетевой анализатор (Wireshark) в той же сети, чтобы подтвердить, что данные действительно отправляются в подсеть?

Связанный контент