TopGit
Đánh giá repo GitHub

frp reverse proxy

FTopGit review image for fatedier/frp
Review by Topgit.dev for fatedier/frp, with GitHub repository stats and README context.
Nhận định nhanh

frp: Đưa Dịch Vụ Cục Bộ Ra Ngoài Một Cách An Toàn frp xứng đáng với danh tiếng là một công cụ đắc lực cho việc xuyên NAT. Việc tách biệt frps và frpc cho phép bạn có một điểm cuối công cộng được kiểm soát, trong khi dịch vụ thực tế vẫn nằm trong mạng riêng. Các đội ngũ chú trọng bảo mật sẽ đánh giá cao TLS mặc định từ v0.50.0 và tùy chọn xác thực OIDC cho các môi trường của tổ chức lớn. Chế độ TCP bí mật (STCP) đặc biệt hữu ích khi bạn muốn đưa một dịch vụ ra ngoài cho một số client cụ thể, sử dụng khóa chia sẻ trước thay vì mở cổng cho toàn bộ thế giới. Hãy dùng frp nếu bạn cần tunneling đáng tin cậy, có thể cấu hình mà không cần đăng ký SaaS. Bỏ qua nếu bạn muốn hosting không cần cấu hình — ngrok xử lý sự đánh đổi đó với ít linh hoạt hơn nhưng thiết lập nhanh hơn.

Sao
★ 108.5k
Fork
⑂ 15.2k
Người đóng góp
👥 143
Ngôn ngữ
Go
Giấy phép
Apache-2.0
Chủ đề
Mobile
Cập nhật
Aug 2026
Trang chủ
GitHub

Hiểu về Chức Năng Cốt Lõi của frp

Hiểu về Chức Năng Cốt Lõi của frp frp là một reverse proxy viết bằng Go, tạo tunnel lưu lượng từ một máy chủ công cộng (frps) đến một client (frpc) đang chạy trong mạng riêng phía sau NAT hoặc tường lửa. Không như các SSH tunnel đòi hỏi quyền truy cập shell, frp duy trì các tunnel liên tục mà bạn cấu hình một cách khai báo, hỗ trợ các chế độ TCP, UDP, HTTP, HTTPS và P2P. Nó xử lý việc xuyên NAT bằng cách duy trì kết nối frpc-to-frps luôn hoạt động để lưu lượng truy cập bên ngoài có thể đến được các dịch vụ cục bộ của bạn.

Các Khả Năng Chính của frp

  • Hỗ trợ đa giao thức: TCP, UDP, HTTP, HTTPS, cộng với các chế độ P2P (XTCP cho truyền trực tiếp giữa các client, STCP cho truy cập bằng khóa chia sẻ trước)
  • Mã hóa TLS được bật mặc định từ v0.50.0, với hỗ trợ chứng chỉ tùy chỉnh cho dashboard
  • Xác thực qua token chia sẻ hoặc OIDC (luồng OpenID Connect Client Credentials) cho các nhà cung cấp định danh của tổ chức
  • Dashboard tích hợp trên frps hiển thị trạng thái và thống kê proxy, với khả năng xuất dữ liệu cho Prometheus
  • Quản lý proxy động qua giao diện web hoặc API mà không cần khởi động lại frpc
  • Giao diện quản trị client tại localhost để kiểm tra và cập nhật cấu hình đang chạy
  • Thay thế biến môi trường trong file cấu hình, cộng với khả năng include file để định nghĩa proxy theo module
  • Hệ thống plugin để đưa Unix domain socket, file tĩnh và dịch HTTPS sang HTTP ra ngoài
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Ví Dụ Cấu Hình frp Thực Tế

Luồng cơ bản bao gồm viết cấu hình TOML (YAML và JSON cũng được hỗ trợ), khởi động frps trên máy chủ công cộng, sau đó frpc trong mạng LAN. Ví dụ, để đưa SSH ra ngoài: đặt bindPort = 7000 trên frps, và trên frpc cấu hình serverAddr, serverPort, cùng với ánh xạ proxy TCP localPort 22 sang remotePort 6000. Khi đang chạy, SSH đến IP công cộng trên cổng 6000 sẽ đến được máy trong mạng LAN của bạn. Với các dịch vụ HTTP, cấu hình vhostHTTPPort trên frps và sử dụng customDomains trong định nghĩa proxy. Truy cập http://{serverAddr}:7500 để xem dashboard (tài khoản mặc định admin/admin).

Điểm mạnh

  • Hơn 108 nghìn sao trên GitHub — đã được kiểm chứng trong thực tế với cộng đồng lớn và được duy trì tích cực
  • Linh hoạt về giao thức: TCP, UDP, HTTP, HTTPS, cộng với các chế độ P2P cho truyền dữ liệu nhạy cảm về băng thông
  • Hỗ trợ mã hóa TLS và xác thực OIDC cho các môi trường có yêu cầu bảo mật nghiêm ngặt
  • Không phụ thuộc vào hạ tầng đám mây — bạn kiểm soát máy chủ, dữ liệu không bao giờ chạm vào SaaS bên thứ ba
  • Triển khai nhẹ với một binary duy nhất và định dạng cấu hình đơn giản

Tình Trạng Phát Triển Hiện Tại và Tầm Nhìn V2

  • V2 đang trong giai đoạn phát triển nhưng chưa có ngày phát hành — tác giả viện dẫn thời gian bị chia nhỏ và liên tục bị gián đoạn, và sẽ không tương thích ngược với v1
  • Chế độ P2P XTCP phụ thuộc vào STUN và có thể thất bại với NAT đối xứng hoặc một số tường lửa của tổ chức, đòi hỏi phải quay về STCP
  • Độ sâu cấu hình có thể cao cho các trường hợp sử dụng đơn giản so với các công cụ tunneling SaaS
  • Không có sẵn tính sẵn sàng cao hoặc cân bằng tải giữa nhiều instance frps
  • Cảnh báo nhầm từ phần mềm diệt virus trên frpc đòi hỏi phải thêm vào danh sách tin cậy thủ công trên một số hệ thống

Khám Phá Các Giải Pháp Reverse Proxy Khác

[ngrok](https://topgit.com/ngrok) — tùy chọn SaaS không cần cấu hình, thiết lập nhanh hơn nhưng ít quyền kiểm soát hơn và cần gói trả phí cho domain tùy chỉnh và tunnel liên tục[Cloudflare Tunnel](https://topgit.com/cloudflare-tunnel) — có gói miễn phí, tích hợp với mạng lưới Cloudflare và nền tảng Zero Trust[localtunnel](https://topgit.com/localtunnel) — mã nguồn mở nhưng không ổn định cho môi trường sản xuấtSSH reverse tunnels — không cần phần mềm bổ sung nhưng khó quản lý ở quy mô lớn và ít tính năng hơn

Ai Được Lợi Nhất Khi Sử Dụng frp?

Các dev có VPS hoặc máy chủ công cộng cần truy cập đáng tin cậy, liên tục vào các dịch vụ cục bộ mà không cần cấu hình port forwarding trên router. Các đội bảo mật đánh giá cao tích hợp OIDC để gắn quyền truy cập tunnel với nhà cung cấp định danh của họ. Những người đam mê homelab đưa các dịch vụ tự host ra ngoài được lợi từ việc tránh được sự phức tạp của dynamic DNS và port forwarding. Các đội làm kiểm thử tích hợp webhook tránh được các chu kỳ triển khai lại lên cloud. Nếu bạn cần không cần cấu hình hoặc không có máy chủ công cộng, tùy chọn SaaS như ngrok sẽ nhanh hơn.

Câu Hỏi Thường Gặp về frp

frp hỗ trợ những giao thức nào để tunneling?

frp hỗ trợ TCP, UDP, HTTP và HTTPS cho proxy tiêu chuẩn. Nó cũng cung cấp STCP (TCP bí mật) cho truy cập bằng khóa chia sẻ trước và XTCP cho các kết nối P2P giữa các client bỏ qua máy chủ frps.

frp có an toàn không và xử lý bảo mật như thế nào?

Mã hóa TLS được bật mặc định từ v0.50.0. frp hỗ trợ xác thực bằng token và OIDC để tích hợp định danh của tổ chức. Chế độ STCP yêu cầu khóa chia sẻ trước, và lưu lượng giữa frpc và frps có thể được mã hóa độc lập với TLS của transport.

frp có thể dùng cho môi trường sản xuất không?

frp có khả năng sản xuất cho các triển khai ổn định nơi bạn kiểm soát hạ tầng máy chủ. Cộng đồng có các công ty sử dụng nó trong sản xuất, nhưng tính sẵn sàng cao giữa nhiều instance frps đòi hỏi cấu hình thủ công.

frp hỗ trợ những định dạng file cấu hình nào?

Từ v0.52.0, frp hỗ trợ TOML, YAML và JSON. Định dạng INI không còn được dùng nữa và sẽ bị loại bỏ. Các tính năng mới chỉ hướng đến ba định dạng được hỗ trợ.

frp xử lý xác thực giữa client và máy chủ như thế nào?

frp hỗ trợ xác thực dựa trên token, nơi cả frps và frpc chia sẻ cùng một bí mật, và OIDC (OpenID Connect Client Credentials) để tích hợp với các nhà cung cấp định danh của tổ chức.

frp có hỗ trợ kết nối P2P để truyền dữ liệu trực tiếp không?

Có, chế độ XTCP thiết lập các kết nối trực tiếp giữa các client frpc sử dụng STUN để xuyên NAT. Nó cần một máy chủ frps để điều phối nhưng dữ liệu bỏ qua máy chủ đó. XTCP có thể thất bại trên NAT đối xứng, và sẽ quay về STCP.

Vấn đề mà nó giải quyết

Việc đưa các dịch vụ cục bộ chạy trong mạng riêng, phía sau NAT hoặc tường lửa ra internet thường đòi hỏi cấu hình router phức tạp, mở cổng (port forwarding) thủ công, hoặc cần một địa chỉ IP công cộng tĩnh. Điều này gây khó khăn cho việc kiểm thử webhook, truy cập homelab từ xa, hay chia sẻ môi trường demo mà không cần triển khai lên cloud.

Các trường hợp sử dụng tốt nhất

  • Đưa các webhook phát triển cục bộ ra các dịch vụ bên ngoài trong quá trình kiểm thử tích hợp
  • Truy cập các dịch vụ homelab (như NAS, dashboard nhà thông minh) từ bên ngoài mạng LAN của bạn
  • Chia sẻ môi trường demo cục bộ với khách hàng hoặc các bên liên quan mà không cần triển khai lên cloud
  • Gỡ lỗi từ xa các ứng dụng di động giao tiếp với backend cục bộ
  • Chuyển file P2P giữa các máy phía sau các NAT riêng biệt bằng chế độ XTCP
  • Chạy nhiều dịch vụ SSH trên cùng một cổng thông qua tcpmux HTTP Connect multiplexing

Cách cài đặt / dùng thử

Tải các binary đã biên dịch sẵn cho hệ điều hành và kiến trúc của bạn từ trang releases trên GitHub. Bạn cần hai máy: một máy có IP công cộng chạy frps, và một máy trong mạng LAN chạy frpc. Trên máy chủ, đặt binary frps và file cấu hình. Trên client, đặt binary frpc và cấu hình trỏ đến địa chỉ công cộng của máy chủ. Lưu ý rằng một số phần mềm diệt virus có thể nhầm frpc là mã độc vì nó tạo reverse proxy — bạn có thể cần thêm vào danh sách tin cậy để tránh bị cách ly.

Repo liên quan

Nguồn & ghi công

Repository: fatedier/frp | Stars: 108,546 | Language: Go | License: Apache-2.0 | Source: https://github.com/fatedier/frp

Dữ liệu GitHub · đồng bộ lần cuối 6 thg 8, 2026Đánh giá bởi Henry
Về TopGit