大家好,又见面了,我是你们的朋友全栈君。
一、背景 使用seafile搞了一个私有云盘,性能还是很优秀的(下载的话到50M/s,上传10M/s),不过不需要的时候开着电脑好像有点浪费,所以就开始了通过公网开机的道路
二、关键性问题 问题要说在前面,常规性的东西百度一般配置都可以搞定,如果各种面向百度的配置都已经尝试,请注意如下问题。
一定在被开机的直连路由设备上进行MAC与IP地址绑定(原理略)。局域网直接子网内广播发送可以不用绑定。 被开机的系统需要安装对应的网卡驱动(实验CentOS7是有问题的,windows用驱动精灵安装下网卡驱动搞定)
三、通过互联网公网远程开机一般性步骤 按照常规步骤设置如下(如下图),假如家庭中需远程开机设备电脑地址为192.168.100,路由器192.168.0.1,为什么搞个路由器,写在本段最后
1、 固定家庭公网入口 如果家庭是移动宽带略过,电信宽带吧,联通不清楚。电信可以去营业厅申请(申请需求百度之即可)。2020年8月份左右申请的。宽带安装送电线光猫 为了保证固定入口,申请个花生壳域名即可 2、 公网唤醒脚本 百度之,很多。也可以自己写一个。主要通过魔幻数据包唤醒,格式固定,可以自己写个手机移动端小程序。 这个地址https://www.renyiwei.com/wakeonlan有个微信小程序可以直接用,亲测有效
大概长这样,mac地址为需要开机电脑MAC,端口为电信光猫对外映射的端口(见步骤3),地址可以填花生壳对外获取的公网域名(比较固定)
3、 端口转发 公网唤醒脚本发送的数据要到达家庭内部,需要在电信光猫、路由器上都设置下转发,以1999端口为例。光猫配置1999转发到192.168.0.1 1999端口,路由器上继续配置1999转发到192.168.1.100 1999端口。注意协议为udp。 4、 MAC与IP绑定 这一步是一个关键步骤,也是为了增加IP与MAC绑定关系的方便。即 在该路由器上192.168.1.100与其电脑自身设备的MAC在路由器上配置下绑定关系 ***有老铁可能诧异为什么不在电信光猫配置。这个写在最后 5、 需要被开机的设备配置(两部分) ** BIOS设置:**需要在bios设置,允许网络唤醒,一般都是wake on lan之类,百度之。 ** 系统配置(win10为例):**注意如下,如果驱动没装好没这个选项。可以用驱动精灵试下,Ubuntu系统可以直接用,CentOS7没搞定
基本到这里就可以远程开机了,如上一般操作步骤即可远程开机,最后说下优化。 四、写在最后 1、流程:还是开始的流程,这里可以把路由器去掉,这样开启完美一点,毕竟不用多经过一次NAT和转发,但是问题回到最初的问题,电信光猫一般家庭用户不支持配置MAC与IP地址绑定,只是简单支持MAC过滤,超级账户也没有。但是经过测试,可以通过telnet登录(telnet账户密码百度一般能找到),并且命令绑定后是可以通过公网开机的。不过如果家里异常停电后、路由器重启后就能不存在了,然后…不能远程开机了。
2、分析一下思路: 分析一下:如果异常断电来电后能够让路由器自动再写入这条记录就OK了 如果重启的话?重启,不存在的,重启一般都是人在家里,记着就行了,我相信光猫的厂家是不敢天天远程重启的,那么问题就转换了。
3、解决方式 于是在在我远程开机的设备做了如下两个操作。 异常断电后,通电后自动开机 每次自动开机后,延迟5分钟进行telnet远程登录路由器,写入绑定关系 新版Linux发行版开机启动可能有些费劲,参考 https://blog.csdn.net/kingredfly/article/details/115190425?spm=1001.2014.3001.5501 绑定脚本如下:使用expect完成自动交互操作
代码语言:javascript复制#!/usr/bin/expect -f
sleep 300
set timeout 5
spawn telnet 192.168.1.1 23
expect "Login:"
send "rootr"
expect "assword:"
send "yinchangdexin123r"
expect "WAP>"
send "sur"
expect "SU_WAP>"
send "shellr"
expect "Linux) #"
send "arp -s 192.168.1.100 e0:be:13:1f:29:e3r"
send "exitr"
expect "SU_WAP>"
send "quitr"
expect "WAP>"
send "quitr"
expect eof
exit
五、失败的路 家用光猫基本上跟一般的Linux有点像,其实,最初研究尝试了下想把路由器系统先备份再恢复,在备份的一些脚本中直接加上绑定关系,这样最完美。不想岔劈了给维修师傅找麻烦姑且这样,等能确定就行系统脚本更改的话继续更新
六、其他方案 整个逻辑原理基本明了,那么肯定是存在其他方案的。可以在局域网内安装一个设备(比如向日葵开机棒),然后获取到本地一个子网IP后OK,那么公网端注册一个账号,当账号下发开机指令,开机棒及时获取开机数据包,拉取到本地执行(本地广播数据包即可)。逻辑开启是这个样子的。理论上类似于开机帮的这个东东,可以实时获取注册账号发送的关机数据包(MAC即可)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138957.html原文链接:https://javaforall.cn