![使用域名而非 IP 进行局域网唤醒 (WOL)](https://linux22.com/image/1316260/%E4%BD%BF%E7%94%A8%E5%9F%9F%E5%90%8D%E8%80%8C%E9%9D%9E%20IP%20%E8%BF%9B%E8%A1%8C%E5%B1%80%E5%9F%9F%E7%BD%91%E5%94%A4%E9%86%92%20(WOL).png)
我可以使用 WOL 通过 WAN 或 LAN 成功唤醒我的服务器。
但是,我有一个动态 IP,因此要从 WAN 启动它,我需要使用 dyndns 子域通过 ssh 进入路由器,然后检查路由器的 IP,然后发送 WOL 魔术包,或者登录 dyndns 帐户并查看当前 IP 是多少。这一切都相当累人……
为什么我不能直接使用 dyndns 子域名?我找不到允许我这样做的程序。有什么办法可以解决这个问题吗?
我正在寻找一个允许我使用域名而不是 IP 发送魔术包的程序。
答案1
您的 dyndns 名称应该解析为您的路由器的公共 IP,所以这应该不是问题。
如果您可以使用 dyndns 地址连接到路由器,那么这就更没有意义了。
您应该尝试解析 dyndns 地址:
nslookup yourname.dyndns.org
它应该解析为与从路由器获取的 IP 地址相同的 IP 地址。如果解析不出来,那么 dyndns 设置可能存在问题(虽然我无法想象问题出在哪里,除非您有多个公共 IP 地址)。
通常,名称将被解析为 IP 地址前任何包都会被发送。因此,只要 dyndns 条目更新了,这就不会有什么区别。
答案2
尝试为从路由器到目标 PC 的 UDP 端口 7 和/或 9 设置 nat 规则 - 看看是否有效!
这可能是一个安全漏洞,所以,我不推荐这样做 - 但,我很确定问题出在防火墙上。
答案3
我的解决方案基于Oliver Salzburg 的回答:
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
以检查您需要哪一行结果。