记通过ipv6远程唤醒电脑

参考资料:
nginx实现TCP转发 - 哔哩哔哩 (bilibili.com)
「系统」使用网络唤醒计算机 - 知乎 (zhihu.com)
关键词:
IPv6 WOL 远程唤醒 NAS

前言

根据上一篇记使用阿里云DNS反向代理IPV6地址访问内网摄像头 - (jianshu.com)
我拥有一个绑定在nas上的ipv6的域名,最近想实现远程唤醒电脑
于是稍微研究了一下如何通过ipv6访问nas并转发udp信息至电脑,以此来远程唤醒电脑

示意图

流程

0. 先拥有一个ipv6域名

  1. 配置电脑端
  2. 配置nginx(docker)并转发udp数据
  3. 测试

实施

1. 配置电脑端

1.1配置bios,开启wol远程唤醒

每家bios的怎么开启wol长得都不一样,具体自己百度


来自网络

1.2 设备管理器中开启网卡的wol远程唤醒

如果你是主板网卡的话应该和我的情况差不多
如果是usb网卡(有线/无线)请放弃,无法wol远程开机


image.png

另外[高级]中的魔法包(magic packet),以防万一也可以enable打开
他是用于一些编程语言来发送开机数据包,以此来远程唤醒


image.png

1.3 固定电脑的ipv4地址

win10/win11可以从设置→网络来编辑ip地址

image.png

或者从控制面板的网络共享中心也行
image.png

我的网关是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-

你可能感兴趣的:(记通过ipv6远程唤醒电脑)