Windows

Bật/tắt máy tính từ xa bằng Wake-on-LAN: cẩm nang triển khai từng bước

Tác giả

Administrator

Ngày đăng

Một chiếc máy tính đang tắt tưởng như là khối kim loại vô tri, nhưng card mạng của nó vẫn còn điện chờ và vẫn đang nghe ngóng. Bài viết này là cẩm nang triển khai từng bước một hệ thống bật/tắt máy tính Windows từ xa qua Wake-on-LAN — chạy ổn định, không phải mở cổng ra Internet, và dùng được cả khi nhà mạng cấp IP sau CGNAT.

Mọi địa chỉ IP, tên máy và địa chỉ MAC trong bài đều là giá trị mẫu.

Nguyên lý hoạt động

Máy tính khi tắt vẫn còn một dòng điện chờ nuôi card mạng. Card nằm im nghe ngóng, thấy đúng gói tin đặc biệt gọi là magic packet — 6 byte FF rồi lặp lại địa chỉ MAC của chính nó 16 lần — thì kích nguồn cho máy khởi động. Đó là toàn bộ Wake-on-LAN: không phần mềm nào chạy trên máy đang tắt, việc này do phần cứng card mạng làm.

Điểm mấu chốt: magic packet là gói quảng bá ở lớp 2, chỉ lan trong phạm vi một mạng LAN. Router không định tuyến gói quảng bá ra Internet. Nghĩa là một máy chủ đặt ngoài Internet không thể tự bắn gói đánh thức vào LAN văn phòng. Cách giải quyết: đặt một chương trình nhỏ (agent) trên một máy luôn bật trong LAN; agent chủ động gọi ra máy chủ vài giây một lần để hỏi có lệnh gì không, nhận lệnh rồi bắn gói đánh thức ngay trong LAN.

Sơ đồ hệ thống




Mọi kết nối đều do máy bên trong LAN chủ động gọi ra. Máy chủ không bao giờ gọi ngược vào mạng nội bộ, nên không phải mở cổng, không cần IP tĩnh, chạy được cả sau CGNAT của nhà mạng.

Ba vai trò máy xuất hiện xuyên suốt bài, mỗi khối lệnh đều ghi rõ chạy trên máy nào:

Vai trò

Là máy nào

MÁY ĐÍCH

Máy Windows cần bật/tắt từ xa

MÁY AGENT

Máy luôn bật, cùng dải mạng với máy đích

MÁY CHỦ

Nơi chạy phần mềm quản lý

Phần 00 — Chuẩn bị

Cần có

Yêu cầu

Máy đích

Windows 10/11, cắm dây mạng (Wi-Fi không dùng được), quyền Administrator

Máy agent

Luôn bật 24/7, cùng dải mạng với máy đích, có Python 3.9+, mở được địa chỉ máy chủ bằng trình duyệt

Tài khoản

Tài khoản quản trị trên hệ thống

Máy agent không được là máy đích — máy đang tắt không tự đánh thức chính nó. Văn phòng không có thiết bị nào chạy 24/7 thì phải bổ sung một mini PC hoặc Raspberry Pi.

Bộ giá trị mẫu dùng xuyên suốt bài (triển khai thật thì thay đồng loạt):

Thông tin

Giá trị mẫu

Lấy ở đâu

Địa chỉ máy chủ

http://100.100.10.20:8000

Địa chỉ đang dùng để vào hệ thống

Máy agent

192.168.10.9 · NAS Synology

Thiết bị luôn bật trong LAN

Máy đích

PC-VANPHONG-01 · 192.168.10.50

Bước 1.3, đặt IP cố định ở bước 1.4

MAC máy đích

AA:BB:CC:11:22:33

Bước 1.3 — getmac /v, card Ethernet

Broadcast của LAN

192.168.10.255

Dải 192.168.10.x/24 → đổi số cuối thành 255

Tài khoản Windows

nhanvien

Chỉ cần khi bật chức năng tắt máy (phần 5)

Phần 01 — Máy đích Windows

Phần hay sai nhất. Bấm nút mà máy không lên thì 90% nguyên nhân nằm ở đây chứ không phải phần mềm.

1.1 BIOS/UEFI

Khởi động, bấm Del hoặc F2. Máy ASUS bấm thêm F7 để vào Advanced Mode. Tìm mục APM Configuration:

Mục trong BIOS

Đặt

Power On By PCI-E/PCI (hoặc Wake on LAN / Resume by PCI-E)

Enabled

ErP Ready (chế độ siêu tiết kiệm điện)

Disabled

Deep Sleep / Deep Sx

Disabled

ErP Ready là thủ phạm thầm lặng. Nó cắt sạch dòng điện chờ nuôi card mạng khi máy tắt. Bật nó thì gói đánh thức gửi tới cũng vô ích, dù mọi thứ khác đều đúng.

1.2 Tắt Fast Startup — bắt buộc

Windows mặc định coi lệnh Shut down là một dạng ngủ đông, và ở trạng thái đó card mạng bị cắt điện chờ. Đây là nguyên nhân số một của hiện tượng "hôm qua bật được, hôm nay không".

MÁY ĐÍCH  PowerShell quyền Administrator

bash
powercfg /h off # tắt hibernate, kéo theo tắt Fast Startup
powercfg /devicequery wake_armed # phải liệt kê tên card Ethernet

Lệnh thứ hai không thấy card Ethernet thì mở Device Manager → card mạng → Properties: tab Power Management tích Allow this device to wake the computerOnly allow a magic packet…; tab Advanced đặt Wake on Magic Packet = Enabled (card Intel có thêm Shutdown Wake-On-Lan — cũng bật).

1.3 Lấy địa chỉ MAC

MÁY ĐÍCH  CMD hoặc PowerShell

bash
getmac /v # lấy dòng có Connection Name là Ethernet
ipconfig # ghi lại IPv4 Address của card đó

Chỉ lấy MAC của card Ethernet. Bỏ qua dòng Wi-Fi, Bluetooth, Tailscale hay VirtualBox — những card đó không đánh thức máy được.

1.4 Đặt IP cố định

Vào router, mục DHCP Reservation (có nơi gọi Address Reservation / Static DHCP), gán IP cố định cho MAC vừa lấy. Không làm bước này thì vẫn bật máy được, nhưng cột trạng thái hay hiện "Chưa rõ" và lệnh tắt máy sẽ gửi nhầm địa chỉ.

Phần 02 — Khai điểm mạng và lấy token

Một điểm mạng là một mạng LAN. Mỗi chi nhánh khai một điểm mạng riêng, mỗi điểm một agent.

MÁY CHỦ  SSH

bash
cd /root/ntcom_quote_system
bash deploy/backup.sh # sao lưu trước cho chắc
git pull
venv/bin/python manage.py migrate # tạo bảng + nhóm quyền
venv/bin/python manage.py collectstatic --noinput
systemctl restart ntcom # BẮT BUỘC: gunicorn không tự nạp lại mã

Trên web vào mục Điểm mạng, thêm điểm mạng mới:

Ô

Điền

Tên điểm mạng

Văn phòng chính

vp-chinh — không dấu, không khoảng trắng

Địa chỉ broadcast

192.168.10.255 — không chắc thì để 255.255.255.255

Cách gửi lệnh bật

Qua agent trong LAN

Nhịp hỏi việc của agent

10 giây

Lưu xong, trang hiện token của điểm mạng và các nút tải file agent. Token là chìa khoá điều khiển toàn bộ máy của điểm mạng đó: không gửi qua nhóm chat, không chụp màn hình gửi ra ngoài. Nghi lộ thì cấp lại token rồi cập nhật lại agent.ini.

Phần 03 — Cài agent

Trước khi bắt đầu, mở trình duyệt ngay trên máy agent và vào địa chỉ máy chủ — không vào được thì xử lý mạng trước, cài agent cũng vô ích.

Agent trên Windows

Cài Python từ python.org, khi cài nhớ tích "Add python.exe to PATH". Nên chọn Install for all users — Python cài riêng cho một tài khoản thì tác vụ chạy nền dưới tài khoản SYSTEM sẽ không tìm thấy.

MÁY AGENT  PowerShell quyền Administrator

bash
New-Item -ItemType Directory -Force C:\ProgramData\ntcom-wol
Move-Item $HOME\Downloads\ntcom_wol_agent.py C:\ProgramData\ntcom-wol\ -Force
Move-Item $HOME\Downloads\cai-dat-windows.ps1 C:\ProgramData\ntcom-wol\ -Force
cd C:\ProgramData\ntcom-wol
notepad agent.ini # Notepad hỏi tạo file mới → Yes

Nội dung agent.ini:

plaintext
[server]
url = http://100.100.10.20:8000
token = DÁN_TOKEN_TỪ_TRANG_ĐIỂM_MẠNG
probe_interval = 60
log_file = C:\ProgramData\ntcom-wol\wol-agent.log
verify_tls = yes

MÁY AGENT  chạy thử rồi cho chạy nền

bash
dir # phải thấy CẢ 3 file: .py, .ps1, agent.ini
python ntcom_wol_agent.py --config agent.ini --once --verbose
# Chạy thử sạch lỗi thì cài chạy nền (tác vụ lúc khởi động, tài khoản SYSTEM):
Set-ExecutionPolicy -Scope Process Bypass -Force
.\cai-dat-windows.ps1 -Url "http://100.100.10.20:8000" -Token "TOKEN"
Get-ScheduledTask -TaskName "NTCOM WoL Agent" | Select TaskName, State

Hai lệnh Set-ExecutionPolicy và .\cai-dat-windows.ps1 là hai dòng riêng, Enter sau mỗi dòng. Dán dính thành một dòng sẽ báo "A positional parameter cannot be found".

Agent trên NAS Synology (DSM)

Bật SSH: DSM → Control Panel → Terminal & SNMP → tích Enable SSH service. Cài Python: DSM → Package Center → Python 3 → Install.

Tạo thư mục chia sẻ tên ntcom-wol ở gốc volume (Control Panel → Shared Folder → Create). Dùng thư mục chia sẻ, không tạo trong home — thư mục trong home thuộc riêng một tài khoản DSM, trong khi tác vụ nền chạy bằng root. Không biết NAS dùng volume nào: File Station → chuột phải thư mục → Properties, dòng Location ghi rõ; hoặc SSH gõ ls -d /volume*.

MÁY AGENT  SSH vào NAS

bash
ssh admin@192.168.10.9 # tài khoản admin của DSM
sudo -i # mọi lệnh phần này chạy bằng root

Kiểm tra thiết bị TUN — làm trước, đỡ mất buổi. Nếu máy chủ nằm trong mạng riêng ảo (Tailscale/WireGuard), NAS phải có card mạng ảo thật sự. Thiếu nó thì phần mềm VPN chạy chế độ userspace: chính tiến trình VPN nói chuyện được, còn mọi chương trình khác trên NAS thì không.

MÁY AGENT  kiểm tra và tạo TUN

bash
ip addr show tailscale0 # "does not exist" = đang thiếu TUN
ls -l /dev/net/tun # không có file = đang thiếu TUN
# Nếu thiếu, tạo TUN rồi khởi động lại gói VPN:
find /lib/modules -name 'tun*' # lấy đường dẫn thật của module
insmod /lib/modules/tun.ko
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 0666 /dev/net/tun
synopkg restart Tailscale
sleep 15 && ip addr show tailscale0 # giờ phải thấy địa chỉ của mạng riêng ảo

Module nạp bằng insmod mất sau mỗi lần NAS khởi động lại — phải tạo tác vụ Boot-up để nạp lại.

MÁY AGENT  tạo cấu hình và chạy thử

bash
cd /volume1/ntcom-wol
chmod +x synology-start.sh
cat > agent.ini <<'HET'
[server]
url = http://100.100.10.20:8000
token = DÁN_TOKEN_TỪ_TRANG_ĐIỂM_MẠNG
probe_interval = 60
log_file = /volume1/ntcom-wol/wol-agent.log
verify_tls = yes
HET
chmod 600 agent.ini
python3 ntcom_wol_agent.py --config agent.ini --once --verbose
# Không có lệnh python3: ls -d /var/packages/Python3*/target/bin/python3

Cho chạy nền bằng ba tác vụ trong DSM → Control Panel → Task Scheduler, tất cả User: root:

Tên tác vụ

Kiểu

Nội dung

NTCOM TUN – boot

Triggered Task → Boot-up

insmod /lib/modules/tun.ko · mkdir -p /dev/net · mknod /dev/net/tun c 10 200 · chmod 0666 /dev/net/tun · sleep 5 · synopkg restart Tailscale

NTCOM Agent – boot

Triggered Task → Boot-up

sleep 30 · sh /volume1/ntcom-wol/synology-start.sh

NTCOM Agent – giữ sống

Scheduled Task, lặp mỗi giờ

sh /volume1/ntcom-wol/synology-start.sh

Tác vụ lặp là lưới an toàn, chạy bao nhiêu lần cũng vô hại: script tự thoát ngay nếu agent đang sống, chỉ dựng lại khi tiến trình đã chết. Nếu DSM chỉ cho lặp theo giờ thì nhớ đặt Last run time = 23:00, để 00:00 là nó chỉ chạy đúng một lần lúc nửa đêm.

Agent trên Linux

MÁY AGENT  bash

bash
sudo mkdir -p /opt/ntcom-wol && cd /opt/ntcom-wol
sudo cp ~/ntcom_wol_agent.py .
sudo tee agent.ini >/dev/null <<'HET'
[server]
url = http://100.100.10.20:8000
token = DÁN_TOKEN_TỪ_TRANG_ĐIỂM_MẠNG
probe_interval = 60
log_file = /opt/ntcom-wol/wol-agent.log
verify_tls = yes
HET
sudo chmod 600 agent.ini
sudo python3 ntcom_wol_agent.py --config agent.ini --once --verbose

MÁY AGENT  chạy nền bằng systemd

bash
sudo cp ~/ntcom-wol-agent.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now ntcom-wol-agent
journalctl -u ntcom-wol-agent -f # xem log trực tiếp

Agent trên macOS

macOS không kèm sẵn Python đầy đủ. Chạy python3 --version; nếu hệ thống mời cài Command Line Tools thì đồng ý, hoặc cài Python từ python.org / Homebrew rồi sửa đường dẫn trong file plist.

MÁY AGENT  Terminal

bash
sudo mkdir -p /opt/ntcom-wol && cd /opt/ntcom-wol
sudo cp ~/Downloads/ntcom_wol_agent.py .
sudo tee agent.ini >/dev/null <<'HET'
[server]
url = http://100.100.10.20:8000
token = DÁN_TOKEN_TỪ_TRANG_ĐIỂM_MẠNG
probe_interval = 60
log_file = /opt/ntcom-wol/wol-agent.log
verify_tls = yes
HET
sudo chmod 600 agent.ini
sudo python3 ntcom_wol_agent.py --config agent.ini --once --verbose

MÁY AGENT  chạy nền bằng launchd

bash
sudo cp ~/Downloads/com.ntcom.wol-agent.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/com.ntcom.wol-agent.plist
sudo launchctl bootstrap system /Library/LaunchDaemons/com.ntcom.wol-agent.plist
tail -f /opt/ntcom-wol/wol-agent.out # xem log
# Gỡ bỏ: sudo launchctl bootout system/com.ntcom.wol-agent

Vào System Settings → Energy/Battery, tắt chế độ ngủ của máy agent. Mac ngủ là agent ngừng hỏi việc, bấm nút không ai nghe.

Nghiệm thu phần 3: mở trang Điểm mạng, badge phải chuyển sang "Agent đang trực" trong vòng 30 giây và giữ xanh. Xanh một lát rồi đỏ lại nghĩa là mới chỉ chạy --once, chưa cài phần chạy nền.

Phần 04 — Khai báo máy đích

Ô

Điền

Điểm mạng

Điểm vừa tạo ở phần 2

Tên máy

PC-VANPHONG-01

Địa chỉ MAC

AA:BB:CC:11:22:33

Địa chỉ IP

192.168.10.50 — IP đã đặt cố định ở bước 1.4

Hệ điều hành

Windows

Cổng WoL

9

Cách tắt máy

Để "Không cho tắt từ xa" — bật ở phần 5

Cổng dò trạng thái

0 — hệ thống tự chọn

Lưu xong, cuối trang Sửa máy hiện dòng ID máy. Ghi lại con số đó — phần 5 cần đúng số này.

MÁY ĐÍCH  thử bật thật

bash
shutdown /s /t 0 # tắt bằng lệnh, KHÔNG giữ nút nguồn

Đợi 10 giây cho card mạng vào chế độ chờ, rồi bấm nút Bật trên web. Máy phải lên trong 5–60 giây.

MÁY AGENT  không lên thì bắn thử trực tiếp, bỏ qua máy chủ

bash
python3 ntcom_wol_agent.py --test-wake AA:BB:CC:11:22:33 --broadcast 192.168.10.255

Lệnh này chạy được mà máy vẫn im thì gói đánh thức đã rời máy agent đúng cách — lỗi nằm ở máy đích, quay lại phần 1 kiểm tra BIOS và Fast Startup.

Phần 05 — Bật chức năng tắt máy từ xa

Tuỳ chọn. Bật máy là việc của phần cứng, còn tắt máy cần đăng nhập được vào Windows — dùng SSH bằng khoá, không dùng mật khẩu, để máy chủ không phải giữ bí mật nào.

MÁY ĐÍCH  bật OpenSSH Server, PowerShell quyền Administrator

bash
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Set-Service -Name sshd -StartupType Automatic
Start-Service sshd
# Quy tắc tường lửa thường đã có sẵn -> kiểm tra trước khi tạo, tránh báo trùng
if (-not (Get-NetFirewallRule -Name sshd -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -Name sshd -DisplayName "OpenSSH Server" -Enabled True `
-Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
}
Enable-NetFirewallRule -Name sshd

Khoá riêng ở lại máy agent, không đi đâu cả.

MÁY AGENT  tạo khoá — Synology / Linux / macOS

bash
ssh-keygen -t ed25519 -f /volume1/ntcom-wol/id_ed25519 -N ''
cat /volume1/ntcom-wol/id_ed25519.pub # chép CẢ dòng này

MÁY AGENT  tạo khoá — nếu agent chạy Windows

bash
ssh-keygen -t ed25519 -f C:\ProgramData\ntcom-wol\id_ed25519 -N '""'
type C:\ProgramData\ntcom-wol\id_ed25519.pub

Windows dùng hai file khoá khác nhau tuỳ tài khoản, đặt nhầm là bị từ chối mà không báo gì thêm. Khối lệnh dưới tự chọn đúng file.

MÁY ĐÍCH  cài khoá công khai, PowerShell quyền Administrator

bash
$user = "nhanvien"
$khoa = 'ssh-ed25519 AAAA...dán cả dòng vừa chép...'
$admin = [bool](Get-LocalGroupMember -Group "Administrators" |
Where-Object { $_.Name -like "*\$user" })
if ($admin) {
$f = 'C:\ProgramData\ssh\administrators_authorized_keys'
Set-Content -Path $f -Value $khoa -Encoding ascii
icacls $f /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
icacls $f /setowner "BUILTIN\Administrators"
} else {
New-Item -ItemType Directory -Force "C:\Users\$user\.ssh" | Out-Null
$f = "C:\Users\$user\.ssh\authorized_keys"
Set-Content -Path $f -Value $khoa -Encoding ascii
icacls $f /inheritance:r /grant "${user}:F" /grant "SYSTEM:F"
}
Restart-Service sshd
icacls $f # CHỈ được có Administrators và SYSTEM
Get-Content $f -Encoding Byte -TotalCount 4 # 239 187 191 = dính BOM, phải ghi lại

Hai cái bẫy của bước này. Một: dùng -Encoding utf8 thì PowerShell chèn ba byte BOM vô hình vào đầu file, sshd đọc không ra khoá — luôn dùng ascii. Hai: chỉ cần danh sách quyền còn sót một tài khoản người dùng riêng lẻ (kể cả tài khoản đó là admin), sshd coi file quá hở và từ chối.

MÁY AGENT  thử lại

bash
ssh -i /volume1/ntcom-wol/id_ed25519 -o BatchMode=yes \
-o StrictHostKeyChecking=accept-new nhanvien@192.168.10.50 "echo OK"

In ra OK thì vào web: Sửa máy → Cách tắt máy = SSH, Tên đăng nhập = tài khoản vừa thử. Rồi bổ sung khoá vào agent.ini trên máy agent:

bash
# Số sau dấu hai chấm là ID MÁY THẬT lấy ở cuối trang Sửa máy,
# KHÔNG phải số trong ví dụ. Sai số là agent coi như không có khoá.
[machine:1]
ssh_key = /volume1/ntcom-wol/id_ed25519

Đường dẫn khoá tính trên máy agent. Cuối cùng khởi động lại agent, rồi thử nút Tắt.

Phần 06 — Điều khiển qua Telegram

Tuỳ chọn. Bot không thay thế web: nó ghi lệnh vào cùng hàng đợi, cùng nhật ký, cùng agent — chỉ là thêm một lối vào ngay trong khung chat.

Tạo bot: trên Telegram nhắn @BotFather → gõ /newbot → đặt tên hiển thị và username → BotFather trả về token dạng 123456789:AAxxxxx…

MÁY CHỦ  khai token

bash
cd /root/ntcom_quote_system
echo 'TELEGRAM_BOT_TOKEN=123456789:AAxxxxx...' >> .env
systemctl restart ntcom
# Chạy thử — phải in ra "Bot @tên_bot đã sẵn sàng", rồi Ctrl+C để dừng
venv/bin/python manage.py telegram_bot

MÁY CHỦ  cho bot chạy nền

bash
sed -e 's#/opt/ntcom_quote_system#/root/ntcom_quote_system#g' \
-e 's#^User=ntcom#User=root#' -e '/^Group=/d' \
deploy/ntcom-telegram.service > /etc/systemd/system/ntcom-telegram.service
systemctl daemon-reload
systemctl enable --now ntcom-telegram
systemctl is-enabled ntcom-telegram # phải là: enabled
systemctl is-active ntcom-telegram # phải là: active
journalctl -u ntcom-telegram -f

Bot dùng long polling — nó gọi ra api.telegram.org chứ không chờ ai gọi vào, nên máy chủ không cần tên miền công khai và không mở thêm cổng nào. Cùng một lý lẽ với agent trong LAN.

Liên kết tài khoản: trên web vào mục Telegram, bấm Tạo mã liên kết (mã sống 10 phút, dùng một lần), rồi nhắn cho bot /dangky MÃ_VỪA_LẤY.

Lệnh

Bot trả về

/may

Danh sách máy kèm nút Bật, Tắt, Khởi động lại, Kiểm tra

/trangthai

Tóm tắt máy nào đang bật, máy nào đang tắt

/dangky &lt;mã&gt;

Liên kết tài khoản — chỉ làm một lần

Nút Tắt chỉ hiện khi máy đã khai Cách tắt máy ở phần 5. Khai xong nhớ nhắn lại /may — tin nhắn cũ giữ nguyên bộ nút của lúc nó được gửi, Telegram không tự vẽ lại.

Về bảo mật: bot chỉ nghe những tài khoản Telegram đã liên kết; người lạ dò ra tên bot nhắn tới chỉ nhận được câu hướng dẫn. Quyền tính theo tài khoản hệ thống đã liên kết — rút một người khỏi nhóm quản trị là Telegram của họ hết tác dụng ngay. Lệnh tắt và khởi động lại có một bước xác nhận, vì nút trên điện thoại rất dễ chạm nhầm.

Phần 07 — Nghiệm thu

Đủ các mục dưới đây mới coi là bàn giao được:

  • Đăng nhập bằng tài khoản có quyền → thấy menu điều khiển máy từ xa
  • Trang Điểm mạng hiện "Agent đang trực" và giữ xanh liên tục
  • Tắt máy đích rồi bấm Bật → máy lên trong 60 giây
  • Cột trạng thái tự chuyển sang "Đang bật" trong vòng 1 phút
  • Trang Nhật ký ghi đúng người bấm, thời điểm, kết quả
  • Khởi động lại máy agent → badge tự xanh lại, không cần ai đụng vào
  • Khởi động lại máy đích rồi tắt lại → vẫn bật được (BIOS đã lưu đúng)
  • Nếu dùng Telegram: nhắn /may cho bot → hiện danh sách máy kèm nút bấm
  • Đã bàn giao: ai được cấp quyền, gỡ quyền ở đâu, gọi ai khi sự cố

Phần 08 — Sự cố thường gặp

Hiện tượng

Nguyên nhân

Xử lý

Nhật ký ghi "đã gửi magic packet" mà máy vẫn im

Fast Startup còn bật, hoặc BIOS chưa mở Wake-on-LAN / ErP Ready còn bật

Phần 1.1 và 1.2. Tắt máy bằng lệnh rồi thử lại, đừng giữ nút nguồn

Badge "Agent mất kết nối" sau khi vừa xanh một lát

Mới chỉ chạy --once, chưa cài phần chạy nền

Làm nốt bước cài dịch vụ nền

Agent trên NAS báo timed out khi gọi máy chủ

Thiếu /dev/net/tun → VPN chạy userspace, chương trình khác không ra được

Phần 3 mục TUN. Dấu hiệu: tailscale ping chạy được nhưng curl thì không

Permission denied (publickey) khi tắt máy

Sai file khoá, khoá dính BOM, quyền file quá rộng, hoặc agent.ini khai sai ID máy

Phần 5. Chạy tay ssh -i … "echo OK" để tách bạch lỗi khoá với lỗi cấu hình

Sửa agent.ini xong vẫn không có tác dụng

Bản agent cũ đọc cấu hình một lần lúc khởi động

Cập nhật agent, hoặc khởi động lại agent

Nút Tắt mờ trên web, không hiện trên Telegram

Máy chưa khai Cách tắt máy

Phần 5. Khai xong nhớ nhắn lại /may

Cột trạng thái luôn "Chưa rõ"

Máy chưa khai IP, IP bị đổi, hoặc tường lửa chặn hết cổng dò

Đặt DHCP reservation; hoặc khai Cổng dò trạng thái = 3389 nếu đã bật Remote Desktop

PowerShell báo "is not recognized" hoặc "No such file"

Đứng sai thư mục, hoặc file chưa tải về

cd vào đúng thư mục và chạy dir kiểm tra file trước khi gọi lệnh

Máy lên nhưng dừng ở màn hình khoá đòi PIN

PIN của Windows Hello chỉ dùng được khi ngồi trước máy

Bật Remote Desktop trên máy đích, đăng nhập từ xa bằng mật khẩu (không phải PIN)

Nguyên tắc gỡ rối: luôn tách bạch lỗi hệ thống với lỗi máy đích bằng lệnh --test-wake chạy ngay trên máy agent. Lệnh đó chạy được nghĩa là toàn bộ phần mềm đã làm xong việc của nó.

Tên mục trong BIOS và tuỳ chọn driver thay đổi theo hãng và đời máy — đối chiếu tài liệu của chính model thiết bị trước khi áp dụng. Mọi IP, tên máy và địa chỉ MAC trong bài đều là giá trị mẫu.

Bài viết hữu ích?Bình luận0

Bình luận(0)

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến!

Để lại bình luận

Zalo