FRP
FRP port guide: reverse proxy tunnels on port 7000
Understand how Fast Reverse Proxy connects frpc clients to frps, which ports need to be reachable, and how to avoid turning tunnels into an unmanaged public edge.
- Default port
- 7000
- Protocol
- TCP
- Primary use
- Reverse proxy tunneling
What is the FRP port?
FRP, or Fast Reverse Proxy, is a tunneling tool that exposes services behind NAT or firewalls through a public frps server. The default frps bind port is commonly TCP 7000, which frpc clients use to connect, authenticate, and register tunnel mappings.
Port 7000 is commonly the frps control port
frpc clients usually connect to the public frps server on the bind_port, often TCP 7000, before publishing TCP, UDP, HTTP, HTTPS, or other proxy types.
Published services may use separate ports
The FRP control port is not always the user-facing service port. HTTP, HTTPS, TCP, UDP, dashboard, and plugin listeners can each need different firewall rules.
How FRP works
FRP has a server side called frps and a client side called frpc. frps runs on a machine with a reachable public address. frpc runs near the private service, connects outward to frps, authenticates, and asks frps to expose a local service through a configured proxy.
This model is useful when a home lab, branch office, device, test environment, or private network service needs temporary or controlled external access. It also means frps becomes an internet-facing edge, so tokens, TLS, ACLs, logs, and service scoping matter as much as the port itself.
FRP ports: 7000, vhost ports, dashboard ports, and proxy ports
TCP 7000 is commonly used as the frps bind_port, where frpc establishes the control connection. HTTP and HTTPS reverse proxy mode may use vhost_http_port and vhost_https_port, often 80 and 443. TCP and UDP proxy mappings can expose custom remote ports that users connect to directly.
FRP can also expose a dashboard, metrics endpoint, or admin interface depending on configuration. Those management ports should not be treated like public application ports. Restrict them to trusted IPs, VPN, localhost, or private networks.
When FRP should be open
Open the frps bind port when trusted frpc clients need to register tunnels from private networks. Open user-facing remote ports only for the services you intentionally publish, such as a web app preview, SSH access through a controlled tunnel, a webhook receiver, or a game server.
Do not expose broad port ranges or management interfaces just because FRP makes it easy. Each remote port is a public entry point to something behind the tunnel, and each mapping should have an owner, purpose, access policy, and removal date if it is temporary.
Before opening FRP
Before allowing port 7000, decide which clients may connect, which proxy types are allowed, which remote ports can be registered, and whether traffic should use TLS. Review authentication tokens or OIDC settings, client naming, and whether privilege escalation through arbitrary remote ports is possible.
A port checker can confirm whether the frps bind port or a published remote port is reachable, but it cannot prove that FRP authentication, route ownership, or backend service security is correct. Validate both the tunnel control path and the exposed application behavior.
How to run FRP on Linux, Windows, and cloud servers
On a cloud server, run frps with a fixed public IP or stable DNS name, allow only the required bind port and published service ports, and keep dashboard or admin access private. Put HTTP and HTTPS traffic behind normal TLS and host-based routing where possible.
On Linux or Windows clients, run frpc as a service near the private application. Configure local_ip, local_port, proxy type, remote_port or custom domain, and credentials carefully. Avoid reusing the same token across unrelated environments.
If FRP is used for production-like access, add process supervision, log retention, monitoring, certificate renewal, and change control. A tunnel that starts as a convenience can become critical infrastructure faster than expected.
- Control path: frpc clients must reach frps on the configured bind_port, often TCP 7000.
- Service path: users must reach the specific remote ports, HTTP vhost ports, or HTTPS vhost ports you publish.
- Management path: dashboard, metrics, and admin endpoints should stay private or tightly allowlisted.
- Security path: use strong auth, TLS where appropriate, scoped remote ports, logs, and clear ownership for every tunnel.
How to test FRP port 7000
Start with an external port check against the public frps hostname or IP and port 7000. If it is open, frpc clients may be able to reach the control listener. Then check frps logs and frpc logs to confirm authentication, proxy registration, and heartbeat status.
Next, test the published service itself. For HTTP or HTTPS tunnels, use curl or a browser against the public domain. For TCP tunnels, connect to the configured remote port with the real client. A healthy control port does not guarantee that the backend application or remote port mapping is working.
Common FRP troubleshooting cases
If port 7000 is closed, frps may not be running, may be bound to localhost, or may be blocked by the host firewall or cloud security group. If frpc cannot connect, also check DNS, server_addr, bind_port, TLS settings, token mismatch, and network egress rules on the client side.
If the control connection works but the service is unreachable, inspect remote_port conflicts, vhost domain routing, HTTP Host headers, local service listeners, NAT on the frpc side, and frps allow_ports policy. Many FRP issues happen after the tunnel is registered, not at the initial port check.
Security checklist for FRP
Treat frps as a public gateway. Use strong authentication, rotate tokens, restrict allowed ports, disable unused proxy types, protect dashboards, and log client connections and proxy registrations. Do not expose internal admin tools through FRP without an additional authentication layer.
For sensitive services, place FRP behind a VPN, identity-aware proxy, mTLS, firewall allowlist, or reverse proxy with rate limiting. Review active tunnels regularly and remove mappings that no longer have a clear owner or business purpose.
Frequently asked questions
What port does FRP use?
frps commonly uses TCP port 7000 as the bind_port for frpc control connections. Published services may use other remote ports, HTTP vhost ports, HTTPS vhost ports, or UDP mappings depending on configuration.
Is port 7000 the same as the public service port?
Not always. Port 7000 is often the FRP control port. Users may connect to a different remote port, domain, HTTP port, or HTTPS port that frps exposes for the actual tunneled service.
Is it safe to expose FRP to the internet?
It can be safe only with intentional controls. Use strong auth, TLS where appropriate, scoped ports, private management endpoints, logging, and an access layer for sensitive services.
Why is port 7000 open but my FRP tunnel does not work?
The control listener may be reachable while authentication, TLS, remote port policy, vhost routing, local service reachability, or frpc configuration is failing. Check both frps and frpc logs.