树莓派用作无线AP以唤醒连接的主机

| 分类 网络 

上两篇文章讲到如何通过有线局域网远程唤醒主机,但是目前大多数设备并不支持通过无线网络进行唤醒。

于是我想到了利用树莓派作为无线AP,用网线连接树莓派和主机,把wifi网络桥接给主机。树莓派功耗低,平时可以一直开着,要用主机时再进行唤醒。

首先配置树莓派为一个无线AP,以下操作默认使用raspbian系统:

  1. 安装bridge-utils

    $ sudo apt install bridge-utils

  2. 创建网桥

     $ sudo brctl addbr br-lan
     $ sudo brctl addif br-lan eth0
     $ sudo ifconfig br-lan 192.168.1.1 up
     $ sudo ifconfig eth0 0.0.0.0 up
    
  3. 配置IP转发,用文本编辑器打开/etc/sysctl.conf修改以下配置

    net.ipv4.ip_forward = 1

  4. 配置iptables,添加NAT

    $ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

  5. 安装并配置dnsmasq作为dns和dhcp服务器

    $ sudo apt install dnsmasq

    修改/etc/dnsmasq.conf,添加以下内容,设置动态分配ip的范围,并给主机指定固定的ip地址。

     dhcp-range=192.168.1.50,192.168.1.150,255.255.255.0,12h
     dhcp-host=(填主机有线网卡的MAC地址,形如XX:XX:XX:XX:XX:XX),192.168.1.55
    
  6. 设置开机启动

    修改/etc/rc.local,添加第2、4两步的命令。rc.local默认是root权限,不用sudo。

然后还需要配置主机支持网络唤醒,以下介绍ubuntu系统的设置。

  1. 安装ethtool

    sudo apt-get install ethtool

  2. 开启有线网卡的wol

    sudo ethtool -s eth0 wol g

  3. 修改/etc/init.d/halt的以下内容为no,这样休眠后保持网络接口不被关闭。

    NETDOWN=no

主机使用pm-hibernate进行休眠或者pm-suspend挂起之后,在树莓派上使用wakeonlan命令就可以进行唤醒了,注意ip地址并不是主机的ip地址,而是所处网段的广播地址。因为树莓派和主机所处的网段可能不一样。

wakeonlan -i 192.168.1.255 mac地址

另外需要注意的是,主机同时连上了无线网和有线网,如果家里路由器进行端口转发的话,主机的服务因为网关的问题会无法外网访问。这时需要用以下命令删掉有线网关:

$ sudo route del default gw 192.168.1.1

参考链接:

  1. 【树莓派】在Raspbian下将wifi中继为有线网络:https://blog.csdn.net/wr132/article/details/78986190
  2. 实战Ubuntu远程开机 (Wake on Lan):https://www.linuxidc.com/Linux/2012-07/64696.htm
  3. 解决Linux下同时使用有线和无线网络时,网络连接的优先级问题:<https://blog.csdn.net/qq547276542/article/details/78713893

上一篇     下一篇