Tài liệu
Bắt đầu nhanh + mô tả chức năng của từng phần, từng thiết bị (đang tiếp tục cập nhật)
Vận hành xuyên NAT
Bài viết này giới thiệu chức năng「Vận hành xuyên NAT」của bảng điều khiển — đưa máy chủ không có IP công cộng vào bảng điều khiển.
Hiểu trong một câu
Với thiết bị không có IP công cộng (máy trong mạng nội bộ, thiết bị sau NAT, điện thoại Android), bạn không thể từ bên ngoài「chủ động kết nối vào」. Vận hành xuyên NAT để những thiết bị này chủ động「kết nối ra」 đến máy chủ bảng điều khiển, sau đó bạn có thể thao tác chúng như máy chủ thông thường.
Giới thiệu chức năng
Với thiết bị hoàn toàn không có địa chỉ truy cập được từ mạng công cộng (máy trong mạng nội bộ, thiết bị sau NAT, điện thoại Android…), không thể kết nối SSH trực tiếp. Vận hành xuyên NAT thông qua đường hầm ngược để những thiết bị này chủ động kết nối đến máy chủ bảng điều khiển, sau đó bạn có thể thao tác chúng như máy chủ thông thường.
Nguyên lý
- Máy chủ bảng điều khiển (có IP công cộng) chạy một dịch vụ đường hầm
- Trên thiết bị đích cài một Agent nhẹ, chủ động「quay số ra」kết nối đến máy chủ bảng điều khiển
- Sau khi kết nối được thiết lập, bảng điều khiển có thể qua đường hầm này SSH ngược về thiết bị đích
> Hiểu đơn giản: thiết bị đích giống như「chủ động gọi điện」đến máy chủ bảng điều khiển, sau khi điện thoại thông, bảng điều khiển có thể qua「đường dây riêng」này điều khiển nó ngược lại.
Trường hợp áp dụng
- Quản lý thiết bị trong mạng nội bộ ở nhà (Raspberry Pi, NAS, router mềm)
- Quản lý VPS giá rẻ không có IP công cộng (máy chủ NAT)
- Quản lý điện thoại Android (môi trường Termux)
Cách sử dụng (ba bước)
1. Mở「Vận hành xuyên NAT」, nhấn「Script cài đặt một cú nhấp」, tạo ra một lệnh độc lập
2. Dán lệnh vào thiết bị đích và chạy một lần (tự động cài Agent + thiết lập tự khởi động cùng máy)
3. Sau khoảng 10 giây, thiết bị đó tự động xuất hiện trên bảng điều khiển, có thể kết nối SSH và dùng mọi chức năng
> Lệnh cài đặt đã được cố ý làm ngắn, để tiện gõ tay khi chưa cài đặt xong:
> - Linux (curl): curl -sSL http://server:5501/i/<token> | sudo bash
> - Termux: curl -sSL http://server:5501/t/<token> | bash
> - Nếu đã là root thì bỏ sudo; Alpine dùng wget -qO- … | sudo bash, BSD dùng fetch -o - … | sudo bash
>
> Vị trí cài đặt: Linux mặc định cài ở /opt/sshe-agent (khi /opt thiếu hoặc không ghi được, script tự quay lui về ~/sshe-agent, không báo lỗi); Termux dùng ~/sshe-agent (khởi động cùng Termux).
>
> Kết nối không mật khẩu: sau khi cài xong, bảng điều khiển dùng khóa đã tiêm sẵn để kết nối không mật khẩu tới thiết bị đó, không phải nhập mật khẩu mỗi lần.
Môi trường Agent hỗ trợ
| Môi trường | Cách cài đặt |
|---|---|
| Linux (apt/yum/dnf/apk) | Script một cú nhấp, tự cài phụ thuộc + tự khởi động bằng systemd |
| Android / Termux | Script chuyên dụng (tự cài Agent + khởi động cùng Termux) |
> ⚠️ Tạm thời không hỗ trợ macOS: các phiên bản macOS khác biệt khá lớn về xác thực SSH, không đảm bảo kết nối ổn định xuyên phiên bản, nên bản này không cung cấp tích hợp xuyên NAT cho macOS. Hãy dùng thiết bị Linux / Termux để tích hợp vận hành xuyên NAT.
Trạng thái trực tuyến của Agent
- Trực tuyến: kết nối đường hầm bình thường, có thể thao tác bất cứ lúc nào
- Ngoại tuyến: thiết bị mất kết nối (tắt máy, mạng đứt, Agent dừng). Bản ghi ngoại tuyến được giữ một thời gian, sau khi kết nối lại sẽ tự động trực tuyến trở lại
> 📌 Phán đoán trên thẻ máy chủ: trạng thái「trực tuyến/ngoại tuyến」của thiết bị xuyên NAT do nhịp tim của Agent quyết định. Sau khi Agent trực tuyến, nó sẽ qua đường hầm thiết lập động kênh SSH để thu thập dữ liệu tình trạng thật (tải/bộ nhớ/ổ đĩa/thời gian hoạt động/pin/nhiệt độ), nhất quán với máy chủ thông thường.
Lưu ý
1. Agent là chương trình duy nhất mà bảng điều khiển cần cài trên thiết bị đích (là ngoại lệ của triết lý「không để lại dấu vết」). Vì thiết bị không có IP công cộng không thể bị kết nối chủ động, chỉ có thể để nó tự kết nối ra.
2. Agent chiếm rất ít tài nguyên (một tiến trình Python + một kết nối dài).
3. Agent dùng đường hầm mã hóa để truyền, thông tin liên lạc an toàn.
4. Nếu IP thiết bị thay đổi hoặc Agent hỏng, chỉ cần chạy lại script cài đặt là khôi phục được.
Quan hệ với Xuyên cổng
Vận hành xuyên NAT phụ trách「đưa thiết bị vào」, Xuyên cổng phụ trách「lộ cổng ứng dụng trên thiết bị ra mạng công cộng」. Hai bên phối hợp: trước tiên dùng vận hành xuyên NAT để đưa thiết bị không có IP công cộng vào, rồi dùng xuyên cổng ánh xạ ứng dụng của nó (như Navidrome, Nextcloud) sang cổng công cộng của máy chủ bảng điều khiển.