参考资料:
nginx实现TCP转发 - 哔哩哔哩 (bilibili.com)
「系统」使用网络唤醒计算机 - 知乎 (zhihu.com)
关键词:
IPv6 WOL 远程唤醒 NAS
前言
根据上一篇记使用阿里云DNS反向代理IPV6地址访问内网摄像头 - 简书 (jianshu.com)
我拥有一个绑定在nas上的ipv6的域名,最近想实现远程唤醒电脑
于是稍微研究了一下如何通过ipv6访问nas并转发udp信息至电脑,以此来远程唤醒电脑
流程
0. 先拥有一个ipv6域名
- 配置电脑端
- 配置nginx(docker)并转发udp数据
- 测试
实施
1. 配置电脑端
1.1配置bios,开启wol远程唤醒
每家bios的怎么开启wol长得都不一样,具体自己百度
1.2 设备管理器中开启网卡的wol远程唤醒
如果你是主板网卡的话应该和我的情况差不多
如果是usb网卡(有线/无线)请放弃,无法wol远程开机
另外[高级]中的魔法包(magic packet),以防万一也可以enable打开
他是用于一些编程语言来发送开机数据包,以此来远程唤醒
1.3 固定电脑的ipv4地址
win10/win11可以从设置→网络来编辑ip地址
或者从控制面板的网络共享中心也行
我的网关是
192.168.1.1
所以在同网段下将电脑固定地址为
192.168.1.200
同理,子网掩码需要设置为
255.255.255.0
至此电脑端配置完成
此时在内网环境下通过一些应用
例如安卓的
Wake On Lan_1.35.apk
或微信小程序的远程唤醒WakeOnLan
已经可以实现远程唤醒
2. 配置nginx
使用docker创建个nginx的容器
通过docker-compose来配置
(偷下懒,如果你不知道docker compose是什么自己查一下)
version: '3.1'
services:
nginx:
#总是在docker启动时启动该容器
restart: always
image: arm32v7/nginx
container_name: nginx
#需要使用nat模式的网络
network_mode: "host"
volumes:
#nginx.conf是用于指定nginx的配置文件,需要额外配置
- ./conf/nginx.conf:/etc/nginx/nginx.conf
然后配置nginx.conf
中的内容
user root;
worker_processes 1;
events {
use epoll;
worker_connections 1024;
}
# 配置udp/tcp的代理.stream和http是平级的,不要写进http中
stream {
server {
# [::]:xxxx是监听ipv6地址的写法.监听udp需要在端口后加上udp
listen [::]:30009 udp;
# 补充,如果是tcp则listen中的端口号后添加任何内容
# listen 30010 ;
# 转发至电脑,因此填写电脑的ipv4地址.端口号9是因为wol默认使用9
proxy_pass 192.168.1.200:9;
}
}
http {
# 不需要使用,省略
}
}
3. 测试是否可用
测试发送和接受使用的这2款软件在这篇文章中都提供了下载方式
3.1发送信息
发送我使用安卓的Wake On Lan_1.35.apk
需要填写电脑的MAC
主机名写域名
端口号写30009
(将会转发至PC的9端口)
设备IP填写域名
3.2 接受信息
接受使用WakeOnLAN_2.12.4.0.exe
点开应用中的封包监控诊断工具,可以发现正确的收到了信息
后记
我觉得最麻烦的部分是不知道nginx的udp转发怎么写
找了几篇例如Nginx反向代理TCP - 简书 (jianshu.com)都是错误的写法
如果你的路由器即可以使用花生壳之类的反向代理,又可以端口映射
那的确不需要像我一样配置nginx
-End-