外网环境下基于路由器广播,一键唤醒内网计算机实现远程开机(详细)

之前文章向大家介绍了 外网环境下基于FRP、VNC技术远程访问计算机,实现内网穿透 以及利用 WOL远程唤醒功能 基于FRP、VNC技术实现远程开机。此后,基于Linux主机udp广播特性,更进一步,针对局域网内有Linux主机(如树莓派)的用户,介绍了更为简便的方式实现远程开机!

然而,上述方式或多或少都需要直接或间接借助其他设备才能完成内网计算机的唤醒,今天将向大家介绍当前唤醒最优方案:非公网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为例:

  • 梅林固件下载:https://pan.baidu.com/s/1SvH6NS-WZNaAZJwRGmH37w
    提取码:so3g
  • 还原包下载:https://pan.baidu.com/s/1FiRYUTcAEW7VHrQg4aeZQQ
    提取码:y7fe

还原路由器至出厂值,进入 “系统管理–系统设置”,按图示开启ssh以及JFFS,重启路由器以初始化JFFS。

注意:重启后检查Format JFFS partition at next boot是否已经自动还原为”否“,如果没有,手动调成“否”,否则下次开机会再次还原配置。

三、路由器配置

  • 计算机与路由器之间插上网线,以固定MAC码。
  • ”内部网络–DHCP服务器–手动指定 IP 的 DHCP 列表“,建立IP-MAC地址的映射。
  • ARP绑定静态ip地址
    由于在华硕路由器内,没有这个设置,因此我们选择通过用ssh命令的形式做ARP绑定。
arp -s 192.168.1.103 F0:76:1C:E1:EA:D8

上述设置在路由器重启(包括断电后),ARP绑定将会丢失,如需永久有效并且开机自启,需要分别利用文件不会丢失的jffs目录以及scripts开机自启脚本,具体操作如下:

cd /jffs/scripts/vi arp-s.sh         #建立启动脚本arp-s.sh;

写入:

#!/bin/sh
sleep 30
arp -s IP地址 MAC 地址
chmod 7777 arp-s.sh
  • ”tools–scripts添加脚本“,脚本类型:WANSTART;脚本地址:/jffs/scripts/arp-s.sh


现在从理论上看,在内网环境下已经能够通过路由器控制界面唤醒本地计算机

进入”网络工具–通过网络(LAN)唤醒“,按下图设置后,检验内网环境下是否能够通过输入目标MAC码并点击”唤醒“按钮唤醒计算机。

之后关闭计算机,用处于局域网内的其他设备登陆路由器后台,点击唤醒,可以看到计算机被唤醒。

四、配置路由器SSH唤醒命令

1.安装entware环境

由于梅林是基于Entware来安装插件的,因此需要安装entware环境。
插入U盘/移动硬盘(推荐EXT4文件系统,可以用“分区助手”格式化方式更改挂载盘文件系统类型)

梅林固件可以在插入磁盘的时候自动识别文件系统并挂载,不过考虑到有些固件可能还没有很完善,所以给出手动挂载的方法,供参考。

# 挂载
mkdir /mnt/sda1
mount -t ext4 /dev/sda1 /mnt/sda1/# 检查
df -hFilesystem                Size      Used Available Use% Mounted on
/dev/sda1               916.9G      2.0G    868.4G   0% /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工具

opkg install wakeonlan
opkg install etherwake

查看etherwake命令格式:

内网环境下尝试使用 etherwake -b [MAC码] 唤醒计算机
如: etherwake -b F0:76:1C:E1:EA:D8
也可 ether-wake -b F0:76:1C:E1:EA: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文件
sudo vim ./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<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}server {listen 80;server_name manage.frp.com;  #为frp的控制台绑定一个域名,这样你就可以用http://manage.frp.com访问你的控制台了location / {proxy_pass http://127.0.0.1:6443;  #此处的6443就是你安装frp时设置的dashboard_port端口proxy_set_header Host $host;proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}server {listen 80;server_name *.frp.com; #将所有的frp.com子域名都绑定,这样就不用客户端填写一个你设置一个了,这样你可以用http://lisi-route.frp.com或http://zhangsan-route.frp.com访问你的穿透服务了。location / {proxy_pass http://127.0.0.1:7080; #此处的7080就是你安装frp时设置的vhost_http_port端口proxy_set_header Host $host;proxy_set_header X-Real-IP $clientRealip;  # $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

【内网穿透开机】外网环境下基于路由器广播,一键唤醒内网计算机实现远程开机相关推荐

  1. 内网穿透实现外网访问内网SQL数据库

    使用工具 花生壳 使用场景 没有公网IP的场景下,任何需要在外网接入内网主机的服务,这里针对远程管理SQL数据库做说明. 基础配置 1.安装SQL数据库. 2.确认已开启数据库远程连接的允许. 3.开 ...

  2. 【内网穿透服务器】公网环境访问内网服务器(以使用samba(smb)文件共享服务为例)

    公网环境访问内网服务器,以使用samba(smb)文件共享服务为例 Frp 挂载 Frp SSH端口 访问 访问 samba Linux cifs Windows Winscp等客户端 SFTP协议登 ...

  3. 使用内网穿透实现外网访问本地接口

    java 内网穿透-实现外网访问本地IP接口 概念–所谓内网穿透,简单来说就是提供一个域名绑定内网IP和端口来实现外网访问内网. 业务场景,由于本人从事物联网开发经常需要对接一下硬件,人在公司但是需要 ...

  4. 无需公网IP,内网穿透实现外网远程桌面办公 2-3

     系列文章 无需公网IP,内网穿透实现外网远程桌面办公 1-3 无需公网IP,内网穿透实现外网远程桌面办公 2-3 无需公网IP,内网穿透实现外网远程桌面办公 3-3 上一篇:  无需公网IP,内网穿 ...

  5. 无需公网IP,内网穿透实现外网远程桌面办公 3-3

      系列文章 无需公网IP,内网穿透实现外网远程桌面办公 1-3 无需公网IP,内网穿透实现外网远程桌面办公 2-3 无需公网IP,内网穿透实现外网远程桌面办公 3-3 上一篇: 无需公网IP,内网穿 ...

  6. Linux环境下基于策略的路由

    Linux环境下基于策略的路由 原文作者:Matthew G. Marsh 原文出处:[url]http://www.sysadminmag.com/linux/articles/v09/i01/a3 ...

  7. 可持续5G环境下基于机器学习的网络分片框架

    Machine Learning-Based Network Sub-Slicing Framework in a Sustainable 5G Environment 5G环境下的物联网框架 5G切 ...

  8. C++:Windows环境下基于Eclipse配置C/C++开发环境

    C++:Windows环境下基于Eclipse配置C/C++开发环境 目录 Windows下的MinGW下载.安装和配置 1.MinGW下载 2.MinGW安装与配置 3.基于Eclipse配置 Wi ...

  9. matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)

    第21卷第6期湖 北 工 业 大 学 学 报2006年12月 Vol.21No.6 Journal of Hubei Univer sity of Technology Dec.2006 [收稿日期] ...

最新文章

  1. LeetCode简单题之删除一个元素使数组严格递增
  2. CentOS 7 下安装 Docker 及操作命令
  3. HDU 4352 XHXJ#39;s LIS(数位dpamp;状态压缩)
  4. java 二叉树_二叉树实现java
  5. python计算tfidf sklearn计算
  6. Delphi 2010 新增功能之: 软键盘、触摸键盘(TTouchKeyboard)
  7. OS / Linux / 伙伴(buddy)算法
  8. RHCS图形界面建立GFS共享下
  9. 尝试:Script Lab,快速 O365 开发工具//SL01)
  10. 天线巴伦制作和原理_10米段的春天 | 用自制环型天线+改装SDR接收器27MHz采访实录...
  11. word中添加mathtype
  12. Soul 网关源码阅读(四)Dubbo请求概览
  13. matlab2c使用c++实现matlab函数系列教程-real函数
  14. visual studio 2015 无法打开源文件“stdafx.h“
  15. vivo电池损耗指令代码_安川伺服驱动器报警代码及简易维修方法
  16. bzoj2286: [Sdoi2011消耗战
  17. python大数加法、需要ut_对于密钥大小,Python加密数据太长
  18. amlogic logo amlogic rk tvbox 电视盒 定制化开发(一) 开机logo 定制
  19. 用matlab表白,你有一颗爱她的心,你就画出来
  20. 乌镇互联网大会上世界大佬点赞中国创新,山寨帽子终于摘下?

热门文章

  1. <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS
  2. 手把手教你读财报---银行业---第十二课
  3. Sublist3r 报错处理
  4. atoi函数的介绍和模拟实现
  5. 原来华展云还能这么玩? 玩转华展云之——官网风云
  6. 中国电子签名发展研究报告 (2006-2007年)
  7. PHY6252国产低功耗蓝牙5.2 SoC芯片智能手环/智能家居方案替代NRF52810
  8. 优思学院|六西格玛黑带考试36题
  9. 常见的Quad-SPI引脚含义
  10. RISC_V_外设篇_SPI