Вопрос или проблема
Правда ли, что мы не можем позволить никакой машине спать, если к ней может потребоваться доступ через VPN-соединение?
(Я задаю этот вопрос на серверном форуме, так как это касается как серверов VPN, так и ПК конечных пользователей, находящихся в состоянии сна)
Старая тема, но я хотел бы вмешаться, потому что это все еще лучший результат поиска по запросу “wol over vpn”.
Да, магический пакет WOL определяется в рамках уровня 2, но это не означает, что он не может быть содержаться внутри сетевого и транспортного протокольного элемента, который затем может быть использован для маршрутизации его через VPN. Причина в том, что “магическая” последовательность может находиться где угодно внутри полезного груза. Поэтому, по сути, это становится вопросом отправки обычного маршрутизируемого пакета на целевой хост с “магической” последовательностью внутри его полезного груза.
Большинство реализаций магического пакета используют UDP-порт 9, хотя это на самом деле не имеет значения, если он правильно маршрутизируется и передается в той же области широковещательной рассылки, что и целевой компьютер. Пока у клиента VPN есть правильные маршруты, он может отправить широковещательный пакет, такой как 192.168.1.255 (широковещательный адрес), правильно к шлюзу VPN через интернет.
Таким образом, маршрутизация действительно довольно проста, проблема может возникнуть с правильной широковещательной рассылкой от целевого шлюза VPN. Это означает настройку шлюза VPN / нахождение опции для перенаправления широковещательного трафика от удаленных клиентов VPN к локальной сети.
Да, вы можете, вместо отправки пакета WoL на широковещательный адрес целевой сети, просто отправьте его на IP-адрес машины, которую хотите разбудить. Программы, протестированные с PPTP VPN:
Обычно нет, так как “MagicPacket” фактически находится на уровне 2. Он даже не маршрутизируемый без помощи ретрансляторов (например, IP-хелпер).
Есть 2 момента, которые следует проанализировать.
1 – Маршрутизация.
2 – Преобразование IP в MAC-адрес. (таблица arp)
Большинство людей знает, как маршрутизировать. Что происходит, так это то, что люди правильно маршрутизируют пакеты, но не знают, почему они не могут разбудить устройство через локальную сеть. Поскольку протокол arp (протокол разрешения адресов – arp) выполняется автоматически, у людей нет много знаний о том, как он работает, чтобы правильно понять проблему.
Я собираюсь использовать очень простое объяснение, не углубляясь в детали, чтобы было легко понять концепцию. Когда маршрутизатор получает пакет (так что маршрутизация уже работает нормально) и должен отправить пакет на машину, ему нужно перевести IP в MAC-адрес. Пакет приходит, маршрутизатор преобразует IP в MAC и отправляет его на машину.
Что делает маршрутизатор, чтобы получить этот MAC? Как он знает MAC каждого устройства?
Он спрашивает! Таким образом, когда он впервые получает пакет на IP 192.168.1.45, пакет отправляется через широковещательную рассылку, и 192.168.1.45 ответит. Когда ответ приходит, адрес попадает в таблицу arp. Теперь он знает MAC-адрес и не нужно больше спрашивать его снова (в течение 6 часов). Когда приходит пакет для этой машины, он использует MAC-адрес из таблицы, не спрашивая снова.
Хорошо. Значит, маршрутизатору нужно знать MAC-адрес машины, чтобы иметь возможность отправить информацию.
В чем проблема с пакетом Wake on LAN?
Маршрутизатор не будет иметь MAC-адрес машины, которая выключена, и, вероятно, ее больше не будет в таблице arp (по умолчанию адрес удерживается в таблице в течение 6 часов, прежде чем спрашивать снова).
Что произойдет без MAC-адреса?
Маршрутизатор будет “спрашивать” MAC-адрес, но машина выключена и не сможет ответить маршрутизатору. Тогда маршрутизатор, не имея этой информации, сбросит пакет.
Как решить проблему?
Добавив статическую запись arp на маршрутизаторе. Таким образом маршрутизатор всегда будет знать MAC-адрес и сможет отправить пакет на машину, даже когда она выключена!
На маршрутизаторе OpenWrt вам нужно использовать ip-команду. И сначала вам нужно установить ее.
В этом примере мы должны разбудить IP 192.168.1.45 с MAC-адресом 00:de:ad:be:gf:00. Для этого мы будем использовать эту команду (добавьте ее в сценарий запуска маршрутизатора):
ip neigh add 192.168.1.45 lladdr 00:de:ad:be:gf:00 nud permanent dev br-lan
Теперь MAC-адрес машины известен (в сети br-lan)
Что дальше?
Теперь маршрутизатор попытается маршрутизировать пакет к выключенной машине и сможет отправить пакет, так как он знает MAC-адрес, который фиксирован в таблице arp!
Теперь вы можете использовать несколько инструментов, чтобы правильно разбудить машину через VPN!
ПО для WoL:
-
Windows:
https://www.tweaking4all.com/applications/miniwol2/
Когда вы открываете программу, она отправляет пакет WoL на сконфигурированные машины и затем завершает свою работу. -
Android:
https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan
WoL без VPN – через интернет!
Вы также можете отправить его через WAN (через интернет) без VPN, используя тот же принцип.
- Добавьте адрес в таблицу arp (“ip neigh add” выше)
- Сделайте DNAT через порт wan UDP 9, указывая на машину, порт UDP 9.
Я это тестировал, и ответ – ДА 🙂
Я нашел инструмент в интернете, который отправляет пакет WOL как уникаст на целевой хост, избегая проблемы передачи широковещательного пакета через маршрутизатор.
Одна вещь, на которую вам нужно обратить внимание с этим решением, вам нужно добавить статическую запись arp на маршрутизаторе, поскольку хост будет выключен и не ответит на запрос ARP от маршрутизатора. Удачи!
Существует интересный способ построить туннель уровня 2 с помощью SSH, и с этим WOL должен работать хорошо. Поэтому я не вижу причин обойтись без отправки машин в режим сна.
На основе упоминания @slm я включил важные части исходного кода ниже.
Предварительные условия:
1) на обоих компьютерах должен быть включен вход под root. (Извините – ваши учетные данные на обоих компьютерах должны позволять вам создать устройство TAP). Это означает: на системном уровне у root есть пароль;
2) в файле sshd_config хоста, на котором работает демон ssh, установлены опции PermitTunnel yes и PermitRootLogin yes;
3) в ядре включена пересылка IP. Используйте команду sysctl, чтобы установить эту опцию: sysctl -w net.ipv4.ip_forwarding=1; также добавьте строку net.ipv4.ip_forwarding=1 в файл /etc/sysctl.conf, чтобы установка сохранялась после перезагрузки. Сделайте это на обоих компьютерах;
4) вы установили пакет bridge-utils или у вас есть команда brctl на обоих компьютерах.
Создайте туннель:
ssh -w 1:1 -o Tunnel=ethernet hostname
опция -w устанавливает имя устройства TAP на каждом хосте (здесь tap1 будет создан на обоих концах).
опция -o предназначена для указания параметра конфигурации в командной строке. Мы используем Tunnel=ethernet для настройки туннеля уровня 2.
Эта форма сохранит сеанс ssh открытым в переднем плане. Если вы хотите, чтобы он освободил оболочку после того, как туннель будет установлен, вы можете использовать опцию -f, чтобы сказать ему, чтобы он стал фоновым. Однако ему нужна команда для разбиения, поэтому вы можете просто использовать фиктивную команду, такую как true, чтобы это сработало. Вы также можете использовать эту функциональность для настройки моста на удалённой стороне, но я не буду углубляться в это прямо сейчас. Так что это будет выглядеть так:
ssh -f -w 1:1 -o Tunnel=ethernet hostname true
Добавление TAP-устройств к мосту:
brctl addbr br0; brctl addif tap1; ifconfig tap1 up; ifconfig br0 up
вы выполняете это на обоих хостах (обратите внимание, что я не назначил IP-адрес). brctl – это команда для манипуляции мостовыми устройствами. brctl addbr добавляет мост br0, а команда addif присоединяет устройство tap1 к нему.
Следующим шагом будет добавление физических Ethernet-интерфейсов к мостовому устройству. Как вы будете это делать, будет варьироваться, поэтому я рассмотрю несколько сценариев. Первый сценарий – это когда ваши VPN-партнеры находятся в одной подсети (т. е. нет маршрутизации между ними), а второй сценарий будет через интернет.
Бессовестно украдено с: http://la11111.wordpress.com/2012/09/24/layer-2-vpns-using-ssh/
на самом деле ответ – ДА.
Я успешно использую WOL через PPTP VPN с помощью этого приложения: https://play.google.com/store/apps/details?id=com.benfinnigan.wol&hl=pl
Я выяснил это, используя
Wollow
Wollow Companion
OpenVPN
Netgear AX120v2
Служба VPN Netgear (не клиент)
и Netgear DDNSw/no-ip
Я могу поставить свой компьютер в спящий режим, перезагрузить, заблокировать и включить его с помощью телефона, когда подключен через VPN. Таким образом, мне легко делать удаленный доступ к своему рабочему столу с моего рабочего ноутбука. На это у меня ушло около 14 часов.
Wake-on-LAN (WoL) может и работает через VPN-соединение. Предполагая, что у вас есть маршрутизатор с встроенной VPN-опцией — такие, как те, что предлагаются OpenWRT или Asuswrt-Merlin — пакеты WoL действительно достигнут маршрутизатора на его VPN-интерфейсе (например, tun0).
Однако, если ваш ПК выключен, пакеты WoL не будут перенаправлены на компьютер. Это происходит потому, что маршрутизатор сбрасывает их из-за отсутствия действительной записи ARP (протокол разрешения адресов). Выключенный ПК не может сообщить свой MAC-адрес (уникальный идентификатор сетевого интерфейса на уровне 2) маршрутизатору, поэтому маршрутизатор не может разрешить MAC-адрес, необходимый для перенаправления пакета.
Эту проблему можно легко уменьшить, добавив статическую запись ARP на маршрутизаторе
- Включите скрипты JFFS на маршрутизаторе: это позволяет вам запускать пользовательские скрипты на вашем маршрутизаторе при загрузке.
- SSH на маршрутизатор: получите доступ к командной строке вашего маршрутизатора через SSH.
- Создайте скрипт запуска: добавьте простой скрипт, который запускается при загрузке, чтобы добавить статическую запись ARP для вашего ПК.
#!/bin/sh
arp -s <ip_address_of_device_to_wake> <its_mac_address>
Это работает, потому что, добавив статическую запись ARP, вы гарантируете, что маршрутизатор всегда знает MAC-адрес, связанный с IP-адресом вашего ПК, даже когда ПК выключен. Это позволяет маршрутизатору перенаправлять пакеты WoL на ваш ПК без необходимости в ответе ARP!
Ответ или решение
Работает ли Wake on LAN через VPN?
Введение
Wake on LAN (WoL) – это функция, позволяющая включать устройство удаленно по сети. Ситуация, когда пользователи хотят использовать WoL через виртуальные частные сети (VPN), является довольно распространенной, особенно в условиях удаленной работы. В данной статье мы рассмотрим возможность использования WoL через VPN, обсудим важные аспекты и предоставим рекомендации для успешного осуществления данной задачи.
Технические аспекты WoL и VPN
WoL подразумевает отправку "магического пакета", который используется для пробуждения устройства в спящем режиме. Данный пакет функционирует на уровне 2 модели OSI, что означает, что для его правильной работы требуется адресация на уровне MAC. Когда устройство выключено, оно не может ответить на запросы ARP (Address Resolution Protocol), что создает определенные трудности при использовании WoL через VPN.
Однако, существует несколько способов, позволяющие преодолеть эти препятствия.
-
Статика ARP на маршрутизаторе
Для успешной работы WoL через VPN требуется, чтобы маршрутизатор имел статическую запись ARP для целевого устройства. Это позволит маршрутизатору знать MAC-адрес устройства даже в случае, если оно выключено. Для этого можно воспользоваться командой, которая добавляет статическую запись в ARP-таблицу, что делается следующим образом:arp -s <ip_address_of_device_to_wake> <its_mac_address>
Это гарантирует, что даже когда компьютер отключен, маршрутизатор сможет отправить магический пакет по правильному MAC-адресу.
-
Использование VPN, поддерживающих продвинутый маршрутизацию
Некоторые VPN-технологии, такие как OpenVPN, позволяют передавать неподключенные пакеты через туннель. Важно отметить, что для успешного пробуждения устройства по VPN необходимо обеспечить правильную маршрутизацию таких пакетов. -
Одноадресные пакеты (Unicast)
Вместо отправки широковещательного пакета (broadcast) можно использовать одноадресные (unicast) пакеты, что позволяет избежать проблем с маршрутизацией. Многие приложения для WoL имеют возможность настройки отправки пакетов в одноадресном режиме.
Программные решения
Существует множество программных решений, которые позволяют отправлять WoL-пакеты через VPN. Например:
- Wake On LAN от NirSoft
- Fing (доступен для Android)
Эти программы позволяют вам настроить отправку магических пакетов как в режиме широковещательной, так и в одноадресной рассылке, что может помочь в условиях работы через VPN.
Другие способы обхода ограничений
Для более глубокого интегрирования WoL через VPN можно рассмотреть создание уровня 2 туннеля с использованием SSH. Это позволит передавать пакеты на уровне канала:
- Установите Root-доступ на обеих машинах.
- Настройте
sshd_config
для разрешения туннелирования. - Создайте TAP-устройство, которое будет использоваться для передачи пакетов.
Эта конфигурация позволит вам направить WoL запросы напрямую к нужным устройствам через VPN.
Заключение
Ответ на вопрос «можем ли мы использовать Wake on LAN через VPN» – положительный. Тем не менее, для успешной реализации данной функции потребуется грамотная настройка оборудования и программного обеспечения. Использование статических записей ARP, продвинутых VPN-технологий и специализированных приложений значительно упростит задачу пробуждения удаленных устройств.
Используя вышеизложенные рекомендации и инструменты, вы сможете наладить эффективный процесс пробуждения устройств по сети, обеспечивая доступ к вашим ресурсам даже в условиях удаленной работы.