当前位置: 首页>>技术教程>>正文


远程打开我的Ubuntu服务器?

,

问题描述

我家里有一个Ubuntu服务器(16.10),想知道当我不在家里时是否可以远程打开它?

我设置了Wake-On-LAN,但是只有当我使用与我的Ubuntu服务器连接到同一网络的另一台计算机时,这似乎才起作用。

有关让WOL远程工作的任何想法?

最佳办法

首先,开机时计算机正在运行Ubuntu的事实与Wake-on-LAN(WOL)功能无关。

其次,WOL使用具有特定格式的以太网帧。

第三,以太网帧不会路由到本地网段之外。对于Internet,中间网络甚至可能根本不使用以太网。

第二点和第三点的结果是,为了将WOL请求发送到网络上的计算机,您需要从本地网段上的另一个系统发送WOL请求。无法通过Internet直接发出WOL请求。

当然,您可以执行what CyberFonic suggests之类的操作,并在本地网段上使用小型low-power系统来发出WOL请求。但是在那种情况下,WOL请求实际上是由本地网段上的另一个系统发出的;您恰好通过Internet访问该系统。

次佳办法

我和你的情况相似。使用Ubuntu 16.04 LTS作为Web服务器。

服务器和Raspberry Pi均通过以太网电缆连接到路由器。

RPi连续运行。我已经安装并配置了fail2ban以提高安全性。路由器配置为允许从Internet到RPi的SSH访问。当我要启动电源不足的IBM服务器时。我通过SSH连接(实际上是mosh)到RPi并运行以下Python程序:

""" Send a WoL packet to the specified MAC address
    NB: Won't work on OS/X.  The AF_PACKET is specific to Linux.
        Needs to be run with sudo.
"""
import socket

PREAMBLE = bytearray((0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF))

# Need to configure the following for the correct MAC of the target
MAC = bytearray((0x00, 0x14, 0x85, 0xa1, 0x43, 0xde))

pkt = PREAMBLE + 16*MAC
sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)

# Configure the correct interface name
sock.bind(('enp2s1', 0))

sock.sendall(pkt)
sock.close()

如果没有静态IP地址,则可能需要配置dynDNS或类似名称以及您的域地址。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11182.html,未经允许,请勿转载。