今天将向大家介绍当前唤醒最优方案:非公网IP用户如何直接穿透家庭路由器,一键唤醒内网计算机,实现远程开机。
需要提前准备的材料:
路由器一台(本文以华硕AU886路由器为例);
固件包(本文以华硕梅林固件为例);
一台公网服务器(作为FRPS,实现内网穿透);
U盘移动硬盘(用于文件的传输和挂载,存储)
支持WOL远程唤醒的计算机(只要不是古老的计算机,默认上述要求都已经满足。
一、配置计算机(默认已开启,一般可以跳过这一步)
1.主板 BIOS
BIOS 里关于 WOL 网络唤醒的选项一般有 wake on lan;resume on lan;power on PME;power on by PCI-E device; Power on by Onboard LAN 等等,将其设为 Enabled 即可。
2.网卡驱动
”控制面板-网络和 Internet-网络和共享中心-本地连接-属性-配置“:
“高级”选项卡如下图设置:
“电源管理”选项卡如下图设置:
windows[8-10]需要禁用windows的快速启动功能, 因为快速启动会使得网卡在关机时候处于彻底关闭的状态, 控制面板>>电源选项>>修改关机按键的功能>>修改不可用选项, 启动模式从快速启动改为普通模式。
二、路由器刷梅林固件
以华硕AC88U为例:
还原路由器至出厂值,进入 “系统管理–系统设置”,按图示开启ssh以及JFFS,重启路由器以初始化JFFS。
注意:重启后检查Format JFFS partition at next boot是否已经自动还原为”否“,如果没有,手动调成“否”,否则下次开机会再次还原配置。
三、路由器配置
计算机与路由器之间插上网线,以固定MAC码。
”内部网络–DHCP服务器–手动指定 IP 的 DHCP 列表“,建立IP-MAC地址的映射。
ARP绑定静态ip地址
由于在华硕路由器内,没有这个设置,因此我们选择通过用ssh命令的形式做ARP绑定。
arp-s192.168.1.103F0:76:1CEA:D8
上述设置在路由器重启(包括断电后),ARP绑定将会丢失,如需永久有效并且开机自启,需要分别利用文件不会丢失的jffs目录以及scripts开机自启脚本,具体操作如下:
cd/jffs/scripts/ viarp-s.sh#建立启动脚本arp-s.sh;
写入:
#!/bin/sh sleep30 arp-sIP地址MAC地址
chmod7777arp-s.sh
”tools–scripts添加脚本“,脚本类型:WANSTART;脚本地址:/jffs/scripts/arp-s.sh
现在从理论上看,在内网环境下已经能够通过路由器控制界面唤醒本地计算机
进入”网络工具–通过网络(LAN)唤醒“,按下图设置后,检验内网环境下是否能够通过输入目标MAC码并点击”唤醒“按钮唤醒计算机。
之后关闭计算机,用处于局域网内的其他设备登陆路由器后台,点击唤醒,可以看到计算机被唤醒。
四、配置路由器SSH唤醒命令
1.安装entware环境
由于梅林是基于Entware来安装插件的,因此需要安装entware环境。
插入U盘/移动硬盘(推荐EXT4文件系统,可以用“分区助手”格式化方式更改挂载盘文件系统类型)
梅林固件可以在插入磁盘的时候自动识别文件系统并挂载,不过考虑到有些固件可能还没有很完善,所以给出手动挂载的方法,供参考。
#挂载 mkdir/mnt/sda1 mount-text4/dev/sda1/mnt/sda1/ #检查 df-h FilesystemSizeUsedAvailableUse%Mountedon /dev/sda1916.9G2.0G868.4G0%/tmp/mnt/sda1
#安装entware环境 entware-setup.sh
常见安装失败原因:在固件中的“软件中心”安装了“虚拟内存”。
因为这会导致jffs里的post-mount.sh在安装时不能正确产生,并且“虚拟内存”应用貌似卸载脚本有问题,正常卸载后相关的脚本仍然在jffs,这会致使entware环境重启后opt路径无效。同时本来安装 entware-ng就会创建虚拟内存。
情况一:先安装了“软件中心-虚拟内存”,后安装entware环境,entware将无法正常安装
情况二:先安装entware环境,后安装了“软件中心-虚拟内存”,路由器重启后entware环境丢失
而在成功安装entware环境后我们可以看到opkg被配置完成。
2.安装wakeonlan和etherwake工具
opkginstallwakeonlan opkginstalletherwake
查看etherwake命令格式:
内网环境下尝试使用etherwake-b[MAC码]唤醒计算机 如:etherwake-bF0:76:1CEA:D8 也可ether-wake-bF0:76:1CEA:D8
在按照上述步骤全部操作完毕后,如果发现仍然无法正常唤醒路由器,多半是由于魔术包没有发在正确的内网里。可以尝试前往:“外部网络-双线路”,开启双线路,选择负载均衡,即可解决问题。其原理目前猜测是路由器的特殊地位(既是网关也是设备)造成的,欢迎评论讨论,
至此,在内网环境下,我们实现了通过一条路由器SSH命令唤醒局域网内指定主机。
五、使用Frp内网穿透路由器22端口,实现外网环境ssh登陆
方法1:传统frpc包配置,在此不在赘述。
缺点:需要解决开机数据丢失的问题
方法2:在固件”软件中心“直接下载使用Frpc
缺点:由于路由器固件下载的Frpc版本固定,因此VPS上的Frps版本需要向Frpc版本看齐(一般就是要求最新版本的Frp),如果之前VPS上已经做过其他穿透,极大可能老的Frps和路由器上的最新Frpc版本不一致,如果没有多余闲置穿透服务器,需要重装Frps版本,在本次穿透完成后可能会花费大量时间更改其他穿透客户端的版本,需要注意。
1.Frps配置
首先前往“软件中心”查看“Frpc”版本号,下载与之对应的Frps文件。点此下载
其次配置文件:
tar-zxvf文件名#解压缩 cd文件名#进入解压目录 #修改frps.ini文件 sudovim./frps.ini
[common] bind_addr=0.0.0.0 bind_port=7000 token=设置你的token vhost_http_port=8080 vhost_https_port=443 dashboard_port=7500 tcp_mux=true max_pool_count=50 log_level=info log_max_days=1 kcp_bind_port=7000
开放服务器相应端口!
开放服务器相应端口!
开放服务器相应端口!
#在文件目录下,临时启动命令,查看是否报错 ./frps-c./frps.ini
0.20版本privilege_token应写作token,否则会出现 uthorization failed 报错。
2.路由器Frpc配置
前往“软件中心”下载“Frpc”,进入配置:
尝试使用服务器IP的6100端口远程登陆路由器shell命令行,成功,至此路由器22端口已成功穿透,实现外网环境ssh登陆。
六、进阶——外网环境下手机 语音/一键 唤醒内网计算机(以IOS为例)
1. 下载 捷径 app(iphone用户需要ios12版本)
2. 将开机SSH命令写入APP(用户密码指路由器ssh登陆密码)
3. 加入Siri
一键点击或语音唤醒:
七、简便替代方案
对于不想追求上述全部功能,或者远程唤醒使用频率较低(可以容忍多步操作)的读者,也可以选择在完成前文一(配置计算机)二(路由器刷梅林固件)两步骤并建立IP-MAC地址的映射后,直接尝试内网穿透路由器后台页面。
(1)在frpc中添加http穿透。
注意事项:
1、服务名称:名称不能重复。
2、域名配置(也可以直接填写主机ip地址):使用http或https穿透服务时,所有的“远程主机端口”都会默认绑定到“vhost http port”,懂web服务的应该知道,如果多个http都用80端口,需要绑定域名或者分配端口来进行区分服务,如果不指定域名那么将访问默认的80服务,同样,填写的域名也不能和服务器上其他的冲突。
(2)外网访问后台手动唤醒
如在frpc端域名名配置/sk选项选择了填写域名,需要进行域名解析。
域名配置/sk选择填写域名:通过 域名:8080 形式访问
域名配置/sk选择填写主机IP地址:通过 IP:8080 形式访问
这里在外网环境下我通过访问 “http://r.顶级域名.com:8080” 的方式登陆路由器后台
进入后台在侧栏进入“网络工具”——>“通过网络(LAN)唤醒”——>“选择需要唤醒的机器mac码”——>“唤醒”。
如果服务器上开启了nginx的web服务,那么在安装的时候“vhost http port”或“vhost https port”将不能使用80或443端口,如果习惯访问地址后面不添加端口,可以使用nginx反向代理的代码,修改下面的代码后就可以使用“http://你设置的域名”来访问frp了,其他的代码自行百度如何设置反向代理解决,下面给出NGINX的配置:
map$http_x_forwarded_for$clientRealip{ ""$remote_addr; ~^(?P[0-9.]+),?.*$$firstAddr; } server{ listen80; server_namemanage.frp.com;#为frp的控制台绑定一个域名,这样你就可以用http://manage.frp.com访问你的控制台了 location/{ proxy_passhttp://127.0.0.1:6443;#此处的6443就是你安装frp时设置的dashboard_port端口 proxy_set_headerHost$host; proxy_set_headerX-Real-IP$clientRealip;#$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } } server{ listen80; server_name*.frp.com;#将所有的frp.com子域名都绑定,这样就不用客户端填写一个你设置一个了,这样你可以用http://lisi-route.frp.com或http://zhangsan-route.frp.com访问你的穿透服务了。 location/{ proxy_passhttp://127.0.0.1:7080;#此处的7080就是你安装frp时设置的vhost_http_port端口 proxy_set_headerHost$host; proxy_set_headerX-Real-IP$clientRealip;#$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } }
-
计算机
+关注
关注
19文章
7488浏览量
87846 -
WINDOWS
+关注
关注
3文章
3541浏览量
88614 -
路由器
+关注
关注
22文章
3728浏览量
113697 -
移动硬盘
+关注
关注
2文章
175浏览量
44252
原文标题:【内网穿透开机】外网环境下基于路由器广播,一键唤醒内网计算机实现远程开机
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论