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)
Xuyên cổng
Bài viết này giới thiệu chức năng「Xuyên cổng」của bảng điều khiển — ánh xạ cổng ứng dụng trên máy chủ xuyên NAT (không có IP công cộng) sang cổng công cộng của máy chủ bảng điều khiển, để người dùng bên ngoài truy cập được.
Hiểu trong một câu
Máy chủ của bạn nấp trong mạng nội bộ (không có IP công cộng), trên đó chạy một trang web hoặc ứng dụng, người bên ngoài không truy cập được. Xuyên cổng chính là「mở một cổng công cộng trên máy chủ bảng điều khiển, rồi vận chuyển truy cập từ bên ngoài qua đường hầm mã hóa đến cổng ứng dụng trên máy chủ nội bộ của bạn」. Kết quả: người bên ngoài truy cập IP máy chủ bảng điều khiển:cổng cũng bằng truy cập ứng dụng trên máy chủ nội bộ của bạn.
Giới thiệu chức năng
Với máy chủ không có IP công cộng được đưa vào qua「Vận hành xuyên NAT」, các ứng dụng trên nó (như Navidrome nghe nhạc, Nextcloud lưu trữ đám mây, Memos ghi chú) không thể được truy cập từ bên ngoài. Xuyên cổng ánh xạ các cổng ứng dụng này sang cổng của máy chủ bảng điều khiển (có IP công cộng), để người dùng bên ngoài truy cập qua「IP máy chủ bảng điều khiển:cổng」.
Trường hợp áp dụng
- Trên máy chủ xuyên NAT có chạy ứng dụng Web, muốn cho bên ngoài truy cập
- Lộ dịch vụ của thiết bị mạng nội bộ ra mạng công cộng
- Cung cấp một lối vào công cộng cho trang web, API, bảng điều khiển trên thiết bị không có IP công cộng
Nguyên lý (dữ liệu chảy thế nào)
Người dùng bên ngoài → Cổng công cộng máy chủ bảng điều khiển (vd :9117) → Đường hầm mã hóa → Cổng ứng dụng trên máy chủ xuyên NAT (vd :9117)
Lưu lượng bên ngoài trước tiên đến máy chủ bảng điều khiển (nơi duy nhất có IP công cộng), rồi qua một đường hầm ngược mã hóa đến thiết bị mạng nội bộ, cuối cùng rơi vào cổng ứng dụng thực sự đang chạy trên thiết bị.
Kênh thống nhất (mọi thiết bị, không cần chọn thủ công):
| Loại thiết bị | Kênh chuyển tiếp | Giải thích |
|---|---|---|
| Máy chủ Linux (không có IP công cộng) | Đường hầm ngược 4433 (mã hóa AES-256-GCM) | Luồng byte TCP nguyên gốc, nhanh và ổn, hỗ trợ nhiều kết nối đồng thời |
| Thiết bị Android/Termux | Đường hầm ngược 4433 (mã hóa AES-256-GCM) | Đi cùng đường hầm mã hóa với thiết bị Linux, ổn định và không phát sinh chi phí thêm |
Bảng điều khiển thống nhất đi qua đường hầm ngược 4433, khi tạo xuyên cổng không cần quan tâm kênh bên dưới, cũng không phải chọn thủ công.
> Bổ sung: Quản lý hệ thống của thiết bị Android/Termux (thực thi lệnh, terminal, tệp) đi qua kênh ổn định SocketIO; nhưng xuyên cổng thống nhất đi qua đường hầm ngược 4433, hai bên làm việc riêng, không ảnh hưởng lẫn nhau.
Cách sử dụng
1. Đảm bảo thiết bị đích đã được đưa vào qua「Vận hành xuyên NAT」(Agent đang trực tuyến)
2. Mở「Xuyên cổng」, nhấn「Thêm xuyên cổng」
3. Chọn máy chủ xuyên NAT (Agent), điền:
- Cổng lắng nghe: cổng công cộng của máy chủ bảng điều khiển (dùng cho truy cập bên ngoài), ví dụ
9117 - Cổng đích: cổng ứng dụng trên máy chủ xuyên NAT, ví dụ
8080
4. Sau khi tạo, bên ngoài có thể truy cập http://IP máy chủ bảng điều khiển:cổng lắng nghe
Ví dụ
Giả sử IP công cộng của máy chủ bảng điều khiển là 203.0.113.10, bạn có một chiếc Raspberry Pi trong mạng nội bộ đang chạy Navidrome (lắng nghe 4533):
- Cổng lắng nghe điền
4533 - Cổng đích điền
4533 - Sau khi tạo, người dùng bên ngoài truy cập
http://203.0.113.10:4533là mở được Navidrome trên Raspberry Pi
Giới hạn tài nguyên
| Giới hạn | Giá trị |
|---|---|
| Số kênh chuyển tiếp tối đa mỗi Agent | 32 kênh |
| Số Agent tối đa toàn bảng điều khiển | 64 Agent |
Vượt quá sẽ tự động từ chối kết nối mới, không ảnh hưởng đến các xuyên cổng đang chạy.
Lưu ý
1. Tường lửa đám mây: tường lửa đám mây / nhóm bảo mật của máy chủ bảng điều khiển cần cho qua cổng lắng nghe tương ứng, nếu không bên ngoài không truy cập được.
2. Phiên bản Agent: chuyển tiếp cổng không phải SSH (khác 22) yêu cầu máy chủ xuyên NAT đã cài Agent bản mới (bản cũ chỉ hỗ trợ chuyển tiếp cổng 22). Nếu cần chuyển tiếp cổng khác, hãy cài lại Agent.
3. Agent trực tuyến: xuyên cổng phụ thuộc vào việc Agent duy trì trực tuyến. Khi Agent ngoại tuyến thì xuyên cổng bị gián đoạn, sau khi kết nối lại sẽ tự động khôi phục.
4. Khởi động lại bảng điều khiển tự khôi phục: sau khi dịch vụ bảng điều khiển khởi động lại, xuyên cổng tự động khôi phục (kích hoạt khi Agent kết nối lại).
5. Dịch vụ đích trên Android cần hỗ trợ đồng thời: dịch vụ đích bị xuyên cổng trên Android (như python3 -m http.server) nếu là đơn luồng và bật keep-alive, khi cùng một kết nối chưa đóng sẽ chặn các yêu cầu tiếp theo. Nên dùng dịch vụ đích đa luồng, hoặc đảm bảo kết nối được đóng kịp thời.
Tài liệu liên quan
- Vận hành xuyên NAT — trước tiên đưa thiết bị không có IP công cộng vào bảng điều khiển
- Chuyển tiếp cổng — chuyển tiếp cổng truyền thống cho máy chủ có IP công cộng (khác biệt giữa hai bên xem bên dưới)
Xuyên cổng vs Chuyển tiếp cổng (chọn thế nào)
| Xuyên cổng (bài này) | Chuyển tiếp cổng | |
|---|---|---|
| Máy chủ áp dụng | Không có IP công cộng (máy chủ xuyên NAT) | Có IP công cộng riêng |
| Cách thực hiện | Đường hầm ngược | DNAT của tường lửa hệ thống |
| Vị trí chuyển tiếp | Máy chủ bảng điều khiển | Ngay trên máy chủ đích |
| Cần Agent | Có | Không |
Một câu: không có IP công cộng thì dùng xuyên cổng, có IP công cộng thì dùng chuyển tiếp.