远程打开我的 Ubuntu 服务器?

远程打开我的 Ubuntu 服务器?

我家里有一台 Ubuntu 服务器(16.10),想知道是否有办法在我出门在外时远程打开它?

我设置了 LAN 唤醒,但这似乎仅在我使用与 Ubuntu 服务器连接到同一网络的另一台计算机时才起作用。

关于让 WOL 远程工作有什么想法吗?

答案1

首先,您的计算机在开机时运行 Ubuntu 与 LAN 唤醒 (WOL) 功能无关。

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

第三,以太网帧不会路由到本地网段之外。就互联网而言,中间网络甚至可能不使用根本没有以太网。

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

当然,你可以做类似的事情Cyber​​Fonic 建议什么并且在本地网段上有一个小型、低功耗的系统,可用于发出 WOL 请求。但这样的话,WOL请求实际上是由本地网段上的另一个系统发出的;你只是碰巧访问系统通过互联网。

答案2

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

服务器和 Raspberry Pi 都通过以太网线连接到路由器。

RPi 持续运行。我已经安装并配置了fail2ban以提高安全性。路由器配置为允许从互联网通过 SSH 访问 RPi。当我想要启动耗电的 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 或类似的内容以及您的域地址。

答案3

对于 WOL,您可以使用端口转发到网络上的另一台设备,各种媒体播放器都具有此功能作为网络可访问选项。

您还可以尝试唤醒环或 IP 电源板,然后将 BIOS 设置为在施加交流电源时启动。有许多 Android/iOS 应用程序可以为此驱动专有的电源点。

如果它是主要品牌服务器,您可能可以购买并安装带外选项(额外的以太网端口和子板)。更高端的 KVM over IP 可能支持远程启动。有几种选择。

为了澄清这一点,多年来我一直在使用 IP-Power 9258 电源板,这些电源板很有用,尽管我并不总是感到高兴。它们可以使用curl(1)(从脚本或PHP仪表板)进行控制。要实现这一点,您必须通过 RDP/VNC 连接到始终在线的工作站(例如 lattepanda),在端口 8081 上运行低规格盒子网络服务器 (Pi),或者通过 VPN 客户端连接。如果你走这条路,你需要能够在“事件”之后处理或抑制 grub 挂起(等待键盘)。但它的优点是,如果其他一切都失败了,还可以重新启动电源。通过 NAT 来完成任务是很常见的。

相关内容