0x01 前言
首先需要路由器支持frpc,我之前是通过ddns访问路由器的主页。
使用路由器自带的局域网唤醒功能进行远程开机,需要把路由器主页开放到公网访问。
所以非常不安全,且操作也比较麻烦,于是就开始折腾。
0x02 电脑设置
一、bios
参考各个品牌的主板,我用的是微星,这里发一个微星的官方教程
https://www.msi.com/support/technical_details/MB_Wake_On_LAN
二、网卡
windows都差不多,可参考微星官方教程,开启数据包唤醒即可
0x03 服务器
一、 openfrp
使用已有的服务器https://www.openfrp.net/
这个网站如果浏览器插件太多,过不了人机验证,可以打开隐私模式(无痕模式),让浏览器自动屏蔽部分插件,就能正常进入。
如果不需要自建服务可以根据openfrp官方教程进行配置服务端和客户端(稍有修改)即可。
https://doc.openfrp.net/guides/#%E8%BF%9C%E7%A8%8B%E5%94%A4%E9%86%92
我还是用自建服务器,有服务器必须要用!(
这个主要用于对比验证服务器还是客户端的问题,毕竟人家搭好的,服务器肯定是有保证的。
二、 自建frps
本来以为会很顺利,按照网上的教程,加上自己的技术积累,结果网上的教程,很多都不全。
网上大多数教程的配置基本上都差一点,比如有些少服务器搭建,有些少app配置,以及路由器的frpc配置。
结果就是变成了基本上全是自己根据文档摸索,当然耗时最大的原因还是自己选错了docker镜像。(
安装frps
frp server我选择使用docker镜像,版本直接用最新版
1. 编辑配置文件
- 这里就简单做下配置, 主要就是端口绑定,我们目前只需要做wol,所以不需要端口。
- transport.tls: 没证书不做强制要求,false即可
- webServer: 后端的管理面板,登录密码记得改成强密码。
- log: 日志简单的配置下。
- auth: 客户端连接鉴权密码记得改成强密码。
- allowPorts: 允许映射的端口范围随便填一下就行了,主要是客户端设置的远程端口必须在这个范围内。
如果需要了解详细配置,可以参照https://www.ersansi.top/index.php/archives/1194/
1 | bindAddr = "0.0.0.0" |
2. 启动镜像
- docker网络直接绑定到host,跟主机同步就行
- 将本机的
/opt/app/frps/frps.toml配置文件挂载到/etc/frp/frps.toml
1 | docker run --restart=always -d \ |
- 然后通过
docker ps -a查看起来没有,如果状态不是up,说明没起来
3. 配置端口放行
通过服务提供商的网页配置安全组,放行如下端口
- 7000:frps端口,tcp协议
- 7500:web管理端口,tcp协议
- 10001:用于往客户端转发,根据服务端配置端口范围,随便选一个即可,udp协议
到此服务端配置完毕
0x04 frpc客户端
在高级设置 -> 内部网络 -> DHCP服务器中,固定电脑ip。
在padavan扩展功能找到花生壳,切换到frp的配置界面,点击更新,查看日志。
如果更新失败,一般是下载问题,根据报错日志提示下载frpc客户端可执行文件,然后放到日志中指定的目录。
在高级设置 -> 系统管理 -> 服务中,找到启用ssh服务,然后选择是,即可通过当前管理用户登录ssh客户端,通过sftp上传文件到路由器中。
frpc配置
- 配置服务器的地址和端口
- auth:鉴权同服务器配置
- proxies:配置端口转发,使用udp协议,ip配成电脑ip
1 | serverAddr = "服务器ip或域名" |
以上配置文件是toml格式,记得将frp_script脚本中的文件名改为toml(虽然不改其实也行
- 点击应用本页面设置,然后点击重启frp
0x05 app配置
一、 wolcmd
在windows端对目标机器实行远程开机
https://www.depicus.com/wake-on-lan/wake-on-lan-cmd
1 | .\WolCmd.exe ${mac地址} ${服务器ip或域名} 255.255.255.255 10001 |
二、Android App
1. 开源app
下载并安装app:https://github.com/Florianisme/WakeOnLan
添加设备
- 名称随便填
- 电脑的mac地址
- 端口填服务器远程端口10001
- 广播地址填服务器ip地址或域名
- 状态ip填服务器地址或不填
2. paly商店下载
https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan
添加设备
- 名称随便填
- 电脑的mac地址
- 广播地址填电脑ip
- 设备ip填服务器ip
- 端口填服务器远程端口10001
- 状态检查端口填7000或不填
- 其他的保持默认即可
点击turn on即可开机
0x06 测试
通过电脑关机(或睡眠)后进行开机测试
如果测试通过则不需要进行调试
tcpdump
在服务器端安装tcpdump
- debian系
1 | sudo apt install tcpdump |
- 监听udp协议10001端口,通过手机发送看服务器是否收到了数据包
1 | sudo tcpdump -i ${网卡名称} udp port 10001 |
wireshark
安装npcap
https://npcap.com/dist/npcap-1.81.exe
记得勾选802.11支持wifi
安装wireshark
直接使用果核的绿色版
https://www.ghxi.com/wireshark.html
抓包
点击左上角鲨鱼角图标,选择对应网卡进行抓包。
过滤器输入wol过滤wol协议的数据包,我这里直接选以太网,点击开始。
看到有wol数据包则说明是正常的。
可能情况
- 服务器收不到,可能较小,使用
sudo netstat -nlutp命令查看端口是否正常监听,检查服务器配置,或者换一个docker镜像。 - 如果电脑收不到数据包,但是服务器能收到
- 如果切换为openfrp服务器能收到,电脑收不到,查看路由器防火墙是否需要放行操作。
- 如果切换为自建服务器,服务器能收到,电脑收不到,我出现了这种情况,换一个镜像就好了。
0x07 总结
frp是一个端口转发内网穿透服务,通过远程服务器端口映射,将请求转发到本机,以实现内网穿透。
重点:
- 服务器frps正常接收和转发
- 客户端frpc服务正常接收
- 客户端远程端口(remotePort)需要在服务器限制端口范围内
- 客户端本机端口要能正常访问(localPort)
- app配置物理地址和广播地址以及端口要配置正确
- 电脑正确设置远程开机

Leave a comment