Я могу успешно разбудить свой сервер через WAN или LAN с помощью WOL.
Однако у меня динамический IP, поэтому, чтобы поднять его из WAN, мне нужно подключиться по ssh к маршрутизатору, используя поддомен dyndns, затем проверить маршрутизатор на IP, а затем отправить пакет WOL magic, или войти в учетную запись dyndns и посмотреть текущий IP. Все это довольно утомительно…
Почему я не могу использовать поддомен dyndns напрямую? Я не смог найти программу, которая бы позволила мне это сделать. Есть идеи, как решить эту проблему?
Я ищу программу, которая позволит мне отправлять магические пакеты, используя доменное имя вместо IP.
решение1
Ваше имя dyndns должно соответствовать публичному IP-адресу вашего маршрутизатора, так что это не должно быть проблемой.
Если вы можете использовать адрес dyndns для подключения к маршрутизатору, то это имеет еще меньше смысла.
Вам следует попробовать разрешить адрес dyndns:
nslookup yourname.dyndns.org
Этодолженразрешить тот же IP-адрес, который вы вытягиваете из своего маршрутизатора. Если этого не происходит, то где-то что-то не так с настройкой dyndns (хотя я не могу себе представить, что это такое, если только у вас нет нескольких публичных IP-адресов).
Обычно имя преобразуется в IP-адрес.долюбой пакет отправляется. Так что это не должно иметь никакого значения, пока запись dyndns обновляется.
решение2
Попробуйте настроить правило NAT для UDP-порта 7 и/или 9, идущего от маршрутизатора к целевому ПК, — посмотрите, сработает ли это!
Это может быть уязвимостью в системе безопасности, поэтому я бы не рекомендовал этого делать, но я почти уверен, что проблема в брандмауэре.
решение3
Мое решение основано наОтвет Оливера Зальцбурга:
wakeonlan -i $(nslookup your.domain.net | awk -F': ' 'NR==6 { print $2 } ') MM:AA:CC:AA:DD:RR
решение4
wakeonlan -i $(dscacheutil -q host -a name yourdomain.com | awk -F': ' 'NR==2 { print $2 } ') MM:AA:CC:AA:DD:RR
Замените DNS-имя (yourdomain.com) и MAC-адрес (MM:AA:CC:AA:DD:RR) на свои. Также может потребоваться изменить NR==2
на другое количество awk
результатов. Вы можете предварительно протестировать его, выполнив команду, dscacheutil -q host -a name yourdomain.com
чтобы проверить, какая строка результата вам нужна.