cloudflared daemon to create an encrypted outbound connection to Cloudflare’s edge network, allowing you to expose local applications like ticketing systems or documentation wikis to your support team securely. By integrating this with Cloudflare Access, you can enforce identity-based authentication before any traffic reaches your local infrastructure, ensuring that only authorized personnel can interact with sensitive tech support tools while maintaining high performance through optimized routing.
Prerequisites and Environment Setup
Before configuring the tunnel, ensure your local machine or server meets the basic requirements for running the Cloudflare connector. You need a stable internet connection and administrative privileges to install system services. The primary tool is thecloudflared binary, which acts as the bridge between your local network and Cloudflare’s global network.
First, download the appropriate version of cloudflared for your operating system from the official GitHub releases page. For Linux systems, you can typically use package managers like apt or yum, but downloading the static binary offers more control over updates. Once installed, verify the installation by running cloudflared --version in your terminal. You should also have a Cloudflare account with a verified domain, as the tunnel will route traffic through a subdomain of that domain.
It is crucial to understand that Cloudflare Access is not a paid feature; it is included in most plans and allows you to restrict access based on user identity rather than IP address. This distinction is vital for tech support environments where employees may work from various locations. Unlike traditional firewalls that whitelist IPs, Access uses SAML or OIDC providers (like Google Workspace, Microsoft Azure AD, or Okta) to authenticate users before they even reach your local proxy.
Creating the Tunnel
The first technical step is to register a new tunnel with Cloudflare. This process creates a unique identifier for your tunnel and generates credentials that allowcloudflared to connect securely. Run the following command in your terminal:
cloudflared tunnel create my-tech-support-tunnel
This command outputs a Tunnel ID and saves the credentials file to .cloudflared/my-tech-support-tunnel.json. Do not share this file, as it grants full control over the tunnel. Next, you must publish the tunnel to your DNS records. Use the command:
cloudflared tunnel route dns my-tech-support-tunnel support.example.com
Replace support.example.com with the actual subdomain you wish to use. This creates a CNAME record in your Cloudflare DNS zone that points to the tunnel. At this stage, the tunnel exists in Cloudflare’s backend, but no traffic is being routed yet because no rules have been defined.
Configuring the Local Proxy Rules
Now you need to define what traffic gets sent through the tunnel. Create a YAML configuration file namedconfig.yml in the same directory as your credentials file. This file maps incoming requests to your local services. A typical configuration for a tech support proxy might look like this:
tunnel: my-tech-support-tunnel
credentials-file: /path/to/.cloudflared/my-tech-support-tunnel.json
ingress:
- hostname: support.example.com
service: http://localhost:8080
- service: http_status:404
In this example, any request to support.example.com is forwarded to a local web server running on port 8080. The final rule ensures that any unmatched requests return a 404 error instead of failing silently. If you are using a reverse proxy like Nginx or Apache locally, ensure it is configured to listen on localhost and handle SSL termination if necessary, although Cloudflare handles TLS at the edge.
To test the configuration, run:
cloudflared tunnel ingress validate
If the validation passes, start the tunnel service with:
cloudflared tunnel run my-tech-support-tunnel
You should see logs indicating successful connections to Cloudflare’s edge nodes.
Integrating Cloudflare Access
To secure the tunnel, navigate to the Cloudflare Dashboard and select your tunnel under "Zero Trust." Go to the "Access" section and create a new policy. Define who can accesssupport.example.com by selecting your identity provider. For example, you might require all users to have a valid email from your company domain.
Cloudflare Access evaluates these policies before forwarding traffic to your origin. This means that even if someone knows the URL, they cannot reach your local proxy unless they authenticate successfully. This layer of security is essential for tech support tools that may contain customer data or internal diagnostics.
For advanced configurations, you can add additional ingress rules for other internal tools, such as a monitoring dashboard or a ticketing system, each protected by its own Access policy. This modular approach allows you to manage permissions granularly without exposing multiple ports on your firewall.
Troubleshooting Common Issues
If the tunnel fails to start, check the logs for errors related to credential permission issues. The JSON credentials file must be readable only by the user runningcloudflared. On Linux, you can fix this with chmod 600.
If traffic is reaching the tunnel but returning errors, verify that your local service is running and listening on the correct interface. Ensure that no local firewall rules are blocking inbound connections on localhost. Additionally, check Cloudflare’s "Tunnels" dashboard for status indicators; red flags usually indicate connectivity issues or misconfigured DNS records.
Frequently Asked Questions
Can I use Cloudflare Tunnel with services that require SSL?
Yes, Cloudflare terminates SSL at the edge and forwards unencrypted HTTP to your local service by default. If your local application requires HTTPS, you can configure cloudflared to use mutual TLS or terminate SSL locally, though this adds complexity.
Is there a limit to how many tunnels I can run?
Cloudflare allows multiple tunnels per account, but each tunnel consumes resources. For large-scale deployments, consider consolidating services into fewer tunnels to simplify management and reduce overhead.
How do I rotate tunnel credentials?
To rotate credentials, delete the existing tunnel in the Cloudflare dashboard and create a new one. Update the credentials-file path in your config.yml and restart the cloudflared service. This ensures that old compromised credentials are no longer valid.
Can I expose non-HTTP services like SSH via a tunnel?
Yes, Cloudflare Tunnels support TCP, UDP, and SSH protocols. You can configure ingress rules to forward specific ports to local services, enabling secure remote desktop or SSH access without opening firewall ports.
What happens if the local internet connection drops?
The tunnel will go offline, and Cloudflare will stop routing traffic to your origin. However, Cloudflare caches static assets if enabled, so some content may remain available depending on your cache settings. Always monitor tunnel health via the Zero Trust dashboard.