Chuyên mục
Network

Wake On LAN – Mở máy tính PC từ xa sử dụng Raspberry Pi và Python

Bài viết này mình sẽ hướng dẫn cách mình thiết lập hệ thống Wake-on-LAN cho PC ở nhà. Sau khi cài đặt thành công, bạn có thể ra lệnh mở máy tính từ khắp mọi nơi trên thế giới có kết nối Internet.

I. Yêu cầu thiết bị

Để có thể thiết lập hệ thống Wake on LAN, bạn cần chuẩn bị các thiết bị như sau

  • Máy tính PC trang bị card mạng hỗ trợ tính năng Wake on LAN (WOL), và đã được kết nối vào mạng nội bộ.
  • 1 em Raspberry Pi nằm cùng mạng nội bộ với PC. Bạn cũng có thể dùng máy ảo nếu không có sẵn Raspberry Pi. Pi hoặc máy ảo phải được mở 24/7 để bạn có thể truy cập bất cứ lúc nào.

II. Kích hoạt tính năng WOL trên PC

Bạn cần phải cấu hình kích hoạt tính năng WOL trong BIOS và trong Windows 10. Nếu bạn dùng mainboard ASUS, xem hướng dẫn ở đây: How to set and enable WOL(Wake On Lan) function in BIOS

Nếu dùng mainboard của hãng khác, bạn Google là sẽ biết cách mở tính năng WOL trong BIOS. Còn cách cấu hình trong Windows 10 thì thao tác y hệt như trong bài viết hướng dẫn ở trên của ASUS

Tiếp theo bạn cần sử dụng một máy tính khác trong nhà để thử nghiệm tính năng Wake On LAN có hoạt động chưa. Mình dùng Macbook Pro và gõ lệnh wakeonlan để gửi yêu cầu mở máy tính đến PC thông qua MAC Address của card mạng trên PC.

wakeonlan FF-FF-FF-FF-FF-FF

Bạn cần thay FF-FF-FF-FF-FF-FF bằng MAC Address tương ứng của PC. Để biết MAC Address, gõ lệnh ipconfig /all trong Command Prompt để xem

ipconfig /all

Physical Address hiện ra trong kết quả trả về chính là MAC Address của PC.

Sau khi chắc chắn PC đã có thể được mở từ xa bằng tính năng Wake On LAN, bạn mới tiếp tục bước III.

III. Cài đặt trên Raspberry Pi

Cách gõ lệnh wakeonlan chỉ có thể thực hiện mỗi khi mình ngồi trên Macbook. Nếu sử dụng điện thoại, iPad hay máy tính khác, mình phải tìm phương án khác.

Để tối ưu việc mở PC từ xa mỗi khi cần, mình sẽ tận dụng em Raspberry Pi 1 đang chạy AdGuard Home chặn quảng cáo, đảm nhận thêm nhiệm vụ làm WOL server. Mỗi khi mình truy cập vào 1 địa chỉ web được cấu hình sẵn trên Rapsberry Pi, nó sẽ tự động gửi gói tin WOL magic packet ra mạng nội bộ để mở PC từ xa.

Nhờ vậy mình có thể ra lệnh mở PC từ bất kỳ thiết bị nào trong nhà. Thao tác đơn giản chỉ là cần mở trình duyệt và truy cập vào 1 đường link là xong.

Raspberry Pi mình đang dùng là bản Model B+ đời đầu tiên, hệ điều hành Raspberry Pi OS Lite.

1. Cài đặt Bottle web-framework

Để tạo 1 web server đơn giản, mình sẽ sử dụng Bottle – một web-framework nhỏ gọn dành cho Python.

cd $HOME
mkdir wol
cd wol
wget https://bottlepy.org/bottle.py

Tạo thêm 1 file khác có tên wol.py

nano wol.py

Nhập vào nội dung như sau

# Load libraries
from bottle import route, run, template
from wakeonlan import send_magic_packet

# Handle http requests to the root address
@route('/')
def index():
 return 'Ngon lành!'

# Handle http requests to /subdir
@route('/wol')
def wol():
 send_magic_packet('FF-FF-FF-FF-FF-FF')
 return 'WOL!'

run(host='0.0.0.0', port=8888)

Cài đặt wakeonlan

sudo pip install wakeonlan

Chạy thử

python wol.py

Mở trình duyệt truy cập vào địa chỉ http://192.168.0.5:8888/ , nếu thấy hiện ra chữ Ngon lành! nghĩa là script Python đã chạy thành công.

192.168.0.5 là địa chi IP nội bộ của Raspberry Pi mình đang sử dụng. Bạn cần thay đổi thành địa chỉ IP tương ứng của thiết bị ở nhà.

Tiếp theo, mình cho tắt PC, và dùng máy tính khác trong nhà truy cập vào http://192.168.0.5:8888/wol.

  • Nếu thấy PC tự động mở lên lại, bạn đã thiết lập thành công.
  • Nếu PC vẫn không có bất kỳ phản hồi nào, bạn đã làm sai bước nào đó ở trên và cần kiểm tra lại.

2. Tạo service cho script Python

Mình sẽ tạo 1 service dành riêng cho script Python này để nó luôn tự động chạy mỗi khi Raspberry Pi khởi động. Tránh trường hợp ở nhà cúp điện, Rapsberry Pi tắt rồi sau đó khi mở lên lại, WOL server không còn hoạt động khiến mình không thể điều khiển mở PC được nữa.

cd /etc/systemd/systemsudo
nano wol.service

Nhập vào nội dung sau và lưu lại. Lưu ý bạn cần đổi lại đường dẫn đến thư mục đang lưu file wol.py

[Unit]
Description=WOLService
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/python /home/thuanbui/wol/wol.py
Restart=on-abort
[Install]
WantedBy=multi-user.target

Gõ tiếp các lệnh sau để kích hoạt service

sudo chmod 644   /etc/systemd/system/wol.service
chmod +x /home/thuanbui/wol/wol.py
sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service

Bạn có thể dụng các câu lệnh sau để quản lý wol service

# Check status
sudo systemctl status wol.service
# Start service
sudo systemctl start wol.service
# Stop service
sudo systemctl stop wol.service
# Check service's log
sudo journalctl -f -u wol.service

Sau khi hoàn thành bước này, bạn đã có thể yêu cầu mở PC từ bất kỳ máy tính / điện thoại nào khác trong nhà bằng cách sử dụng trình duyệt và truy cập vào http://192.168.0.5:8888/wol

IV. Mở PC từ khắp mọi nơi

Nếu muốn ra lệnh mở PC khi không có ở nhà, cách đơn giản và bảo mật nhất là sử dụng VPN. Bạn cần làm thêm các bước sau

  1. Cài đặt VPN Server lên Rapsberry Pi sử dụng script PiVPN, hoặc lên máy ảo sử dụng script WireHole-UI.
  2. Mỗi khi cần mở PC từ xa, bạn sử dụng app WireGuard Client trên máy tính, điện thoại kết nối vào VPN Server ở nhà.
  3. Sau khi kết nối thành công, bạn đã có thể truy cập vào địa chỉ IP nội bộ của Raspberry Pi để ra lệnh mở PC.

Hướng dẫn đến đây là hết. Chúc bạn cài đặt thành công.

 

Nguồn: [GUIDE] Switch your PC from anywhere in the world with an OK Google command (using a RaspberryPi and wake on LAN) : googlehome (reddit.com),thuanbui

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *