Wol и dualboot на MSI 970 Gaming
Настраиваем удаленный доступ к домашнему ПК за роутером
Не так давно я озадачился вопросом дистанционного пробуждения своего домашнего компьютера (WOL - wake on lan). Нужно мне это было для удаленного доступа к нему по SSH или TeamViewer. Таким образом при достаточной скорости интернет соединения можно работать за своим компьютером с привычной рабочей средой, получить доступ к нужным файлам (забытым дома), включить торрент-клиент и поставить на загрузку любимый сериал, чтобы по приходу домой не терять время на его скачивание.
Ну и у этого в принципе есть множество преимуществ. Только вот настроить Wake On Lan на домашнем ПК у меня никак не получалось.
Исходные данные
Операционные системы установлены Windows 7 и Debian 9. Загрузчик Grub2. Основной системой использую Linux.
Материнская плата MSI 970 Gaming. В настройках BIOS выставил:
- LAN Option ROM = Enabled
- EuP 2013 = Disabled
- Resume by PCI-E device = Enabled
К сетевой карте подходит провод от роутера. Роутер Beeline SmartBox One. Интернет провайдер соответственно Билайн.
Технология Wake on Lan
По идеи система должна получать Magick Packet от телефона через WiFi и загружаться. В идеале из глобального интернета, ip статический, но тут немного сложнее, об этом чуть позже (нужно пробрасывать порты и организовывать туннель).
Теперь разберемся, как работает технология WOL, обязательно ли лезть в настройки Операционной системы, или она может запускаться только биосом?
Немного побегав по интернету я сделал выводы:
Настройки БИОС'а были выставлены верно. Так как сетевая карта у этой материнской платы находится на шине PIC-e, пункта Resume by PCI-E device = Enabled достаточно.
Настройки сетевой карты в ОС
Так же стало ясно, что немаловажную роль в технологии WOL играют настройки операционной системы. А вернее те настройки, которые ОС посылает сетевой карте во время выключения. ОС дает директиву сетевой карте оставаться в режиме "прослушивания" сетевого трафика и ожидания Магического Пакета. Если такой настройки в системе нет, то компьютер обесточивается полностью, вместе с сетевой картой. Это очень важный момент, на котором я надолго застрял.
Дальше я начал ковырять Debian.
tcpdump
успешно выявлял магические пакеты, но утилита ethtool
не выводила поддержку WOL на данной сетевой карте в принципе.
$ sudo ethtool eth0 Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: external Auto-negotiation: on Link detected: yes
Хотя там должны быть строки :
Supports Wake-on: g Wake-on: g
Где g значит, что WOL включен. Выяснилось, что для моей сетевой карты нет подходящих драйверов под Linux которые раскрыли бы все ее возможности.
Я пошел в Windows 7. Выставил настройки сетевой карты на поддержку WOL, завершаю работу Windows.
Настройка роутера
Отправляю с телефона Магический пакет через WiFi сеть. Компьютер включается. Я обрадовался, но рано. Это говорит о том, что все предыдущие настройки работают. Технология поддерживается аппаратным обеспечением и остается только разобраться в нюансах. Только рано радоваться было вот почему: естественно при отправке пакета из глобального интернета никакой реакции на магический пакет не происходило.
Полез в настройки роутера Beeline SmartBox One. Настроил проброс 9 порта (порт по умолчанию для wol) с ip адреса роутера на локальный ip моей машины. Заработало. Теперь компьютер так же включается из глобальной сети. Но радовать вновь рано.
ARP таблицы роутера
И тут начинается самое интересное...
Все работает исправно минут 15-20. После простоя компьютер перестает принимать Магический пакет, и никак не реагирует на внешнее воздействие.
На одном из форумов вычитал, что роутеры примерно раз в 15 минут обновляют значения своих ARP таблиц. Стал исследовать.
ARP (Address Resolution Protocol — протокол определения адреса) — протокол канального уровня, предназначенный для определения MAC-адреса Получателя в TCP/IP сетях.
Полез в настройки роутера вновь.
Там нет даже упоминания об этих ARP-таблицах. Раскопал в интернете, что можно зайти от SuperUser'а на роутер. Там будет доступно больше настроек.
Логин: SuperUser; Пароль: серийный номер SmartBox'a.
Да, действительно появился пункт "Arp таблицы". Захожу, но там только одна таблица на которую можно только посмотреть. Ни добавить запись, ни удалить нельзя. Что же делать?...
Путь к роутеру через SSH
Сидел на работе и размышлял. До этого я видел в настройках роутера от суперпользователя графу удаленное управление. Там был протокол SSH. Т.к. я на работе, и обычным способом перейдя на 192.168.1.1 подключиться к роутеру не могу, решил попробовать пробиться на роутер по SSH.
Оказываюсь в настройках роутера в консоли. Там нахожу команду arp. Она отображает текущие записи таблицы.
Одна из которых: (192.168.1.64) at <incomlete> on br0
Вместо <incomplete> должен быть физичиский адрес сетевой карты (MAC адрес).
Попытался изменить запись, ничего не вышло. Но удалось подключиться к базовой операционной системе Linux роутера командой SH.
Она меня отправила прямиком в консоль администратора системы. Тут то уже можно что-то предпринять.
Благодаря информации о работе с ARP взятой отсюда
добавляю постоянную запись в таблицу командой:
# arp -s 192.168.1.64 d8:cb:8a:9b:c2:17
Где 192.168.1.64 - ip пробуждаемого компьютера;
00:09:34:2c:36:9d - MAC адрес его сетевой карты через которую мы будим.
Результат
Выхожу из SH, закрываю SSH, с рабочего компьютера отправляю Магический пакет - вижу в TeamViewer'e появился мой домашний компьютер. Это успех.
В общем и целом как доставить Magick Packet стало ясно. Но остается один не решенный вопрос - как же быть с Linux Debian? Для данной материнской платы, к сожалению, я так и не нашел нужный драйвер сетевой карты, который поддерживал бы WOL. Но для моих целей в принципе достаточно и удаленного включения компьютера с помощью Windows 7. Но так, как загрузчик ОС стоит grub, в нем по умолчанию пунктом загрузки выбран Linux, что в конкретной ситуации меня не устраивает. Нужно изменить файл конфигурации загрузчика и отдать приоритет Windows, иначе после выключения компьютера я потеряю к нему доступ.
Итак, выводы:
Алгоритм успешной настройки удаленного включения компьютера в общем и целом выглядит так:
- Необходимо понять, поддерживает ли сетевая карта технологию WOL;
- Зайти в BIOS и включить ее;
- Загрузиться в ОС и выставить настройки сетевой карты;
- Убедиться в правильности выставленных настроек - выключить ПК, посмотреть на сетевую карту (должен мигать светодиод, означающий, что сетевая карта ждет магический пакет);
- Настроить статический ip адрес роутеру и пробросить магический пакет на сетевую карту целевого компьютера;
- Сгенерировать магический пакет любым удобным средством и направить его на статический ip роутера;
- Наслаждаться результатом.