frp is a fast reverse proxy written in Go that enables users to expose local servers behind NAT or firewall restrictions to the internet. The repository is classified across multiple networking domains including reverse proxy, NAT traversal, service exposure, tunneling, remote access, firewall bypass, network proxy, TCP/UDP proxy, secure connection, and intranet access.
The core functionality of frp centers on two main components: frps, the server component that runs on a machine with a public IP address, and frpc, the client component that runs on machines behind NAT or firewall restrictions. The tool supports TCP and UDP protocols as well as HTTP and HTTPS, allowing requests to be forwarded to internal services via domain names. Additionally, frp offers a P2P connect mode for direct peer-to-peer connections. The architecture diagram and example usage documentation demonstrate deployment scenarios such as accessing computers in LAN networks via SSH, exposing multiple SSH services through the same port using TCP multiplexing, and accessing internal web services with custom domains.
The project's feature set is extensive and includes configuration management through TOML files with support for environment variables and split configurations across multiple files. frp provides both a server dashboard and client admin UI for management purposes. Authentication mechanisms include token-based authentication and OIDC authentication. The tool supports encryption and compression, TLS connections, hot-reloading of frpc configuration, bandwidth limiting per proxy, TCP stream multiplexing, KCP protocol support, QUIC protocol support, connection pooling, load balancing, and service health checks. Additional capabilities include HTTP host header rewriting, custom HTTP headers, real IP detection, HTTP X-Forwarded-For support, proxy protocol support, HTTP basic authentication for web services, custom subdomain names, URL routing, TCP port multiplexing, port range mapping, client plugins, server manage plugins, SSH tunnel gateway functionality, and virtual networking through VirtualNet.
Version 2 is envisioned as a modernized four-layer and seven-layer proxy similar to Envoy, built on cloud-native principles influenced by Kubernetes and ServiceMesh architecture. The project maintains compatibility considerations and acknowledges that modules such as configuration management, permission verification, certificate management, and API management require modernization. frp is supported by sponsors including JetBrains and Recall.ai, and the project accepts contributions while maintaining its open-source nature.