<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ghazi Alchammat</title>
    <description>The latest articles on DEV Community by Ghazi Alchammat (@galchammat).</description>
    <link>https://dev.to/galchammat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3742600%2F7302653b-39b2-48a8-a9ba-90a2b46345ed.jpeg</url>
      <title>DEV Community: Ghazi Alchammat</title>
      <link>https://dev.to/galchammat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/galchammat"/>
    <language>en</language>
    <item>
      <title>Accessing Servers Behind Strict Firewalls Using Cloudflare</title>
      <dc:creator>Ghazi Alchammat</dc:creator>
      <pubDate>Sun, 22 Feb 2026 23:06:42 +0000</pubDate>
      <link>https://dev.to/galchammat/accessing-servers-behind-strict-firewalls-using-cloudflare-46pp</link>
      <guid>https://dev.to/galchammat/accessing-servers-behind-strict-firewalls-using-cloudflare-46pp</guid>
      <description>&lt;h1&gt;
  
  
  Notes on Using Cloudflare Tunnel
&lt;/h1&gt;

&lt;p&gt;I’ve been using Cloudflare Tunnel in a few different setups.&lt;/p&gt;

&lt;p&gt;One use case is remote development. I run &lt;code&gt;cloudflared&lt;/code&gt; on my machine and expose SSH through a tunnel. The server establishes an outbound connection to Cloudflare. Access is controlled through Cloudflare Access with OTP.&lt;/p&gt;

&lt;p&gt;Cloudflare also provides browser-based SSH. From a phone, including an iPhone, I can open Safari, authenticate, and obtain a terminal session directly in the browser. No separate SSH client is required in that scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSH Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    A[Local Machine] --&amp;gt; B[cloudflared]
    B --&amp;gt; C[Cloudflare Edge]
    C --&amp;gt; D["Access Policy (OTP)"]
    D --&amp;gt; E[Browser SSH Session]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The local machine maintains the outbound tunnel. Authentication is handled at the edge before a session is established.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposing Web Services
&lt;/h2&gt;

&lt;p&gt;I have also used Cloudflare Tunnel to expose small web services from networks where I do not control public IP configuration. The machine connects outward to Cloudflare, and traffic is routed back through that connection.&lt;/p&gt;

&lt;p&gt;This allows a static site or internal tool to be reachable without managing NAT rules or dynamic DNS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    U[User] --&amp;gt; DNS[Cloudflare DNS]
    DNS --&amp;gt; Edge[Cloudflare Edge]
    Edge --&amp;gt; Tunnel[Cloudflare Tunnel]
    Tunnel --&amp;gt; Service[Local Web Service]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Replacing Tailscale in Some Cases
&lt;/h2&gt;

&lt;p&gt;For personal use, this has replaced Tailscale in cases where I only need secure access to a single machine or service. Instead of maintaining a private mesh network, access is enforced through Cloudflare’s identity layer.&lt;/p&gt;

&lt;p&gt;This is not a universal replacement for private networking, but for individual services it simplifies the setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Kubernetes Pairing
&lt;/h2&gt;

&lt;p&gt;Cloudflare Tunnel can also be paired with Kubernetes. A cluster can sit behind a tunnel, with ingress routed through Cloudflare while pods remain private inside the cluster. The Kubernetes API server and internal services can be placed behind Access policies.&lt;/p&gt;

&lt;p&gt;I have not deployed that configuration yet, but the pattern follows the same outbound tunnel model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Cloudflare Tunnel provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outbound-only connectivity&lt;/li&gt;
&lt;li&gt;Identity-gated access (OTP / Access policies)&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;DNS and TLS integration at the edge&lt;/li&gt;
&lt;li&gt;A practical way to expose services from constrained networks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For remote access and lightweight hosting, it simplifies infrastructure without requiring direct exposure of the underlying system.&lt;/p&gt;

</description>
      <category>cloudflare</category>
      <category>networking</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
