<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <atom:link href="https://cryptostorm.is/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <title>cryptostorm blog</title>
    <link>https://cryptostorm.is/blog/</link>
    <description/>
    <lastBuildDate>Fri, 26 Jun 2026 20:02:41 -0500</lastBuildDate>
    <item>
      <title>Fully post-quantum OpenVPN (without OpenSSH tunneling)</title>
      <link>https://cryptostorm.is/blog/pq-openvpn2</link>
      <image/>
      <description>&lt;h2 data-start="225" data-end="289" class=""&gt;&lt;img src="https://cryptostorm.is/blog/images/id.jpg" alt="" width="476" height="268" style="display: block; margin-left: auto; margin-right: auto; transform: scaleY(-1);"&gt;&lt;/h2&gt;
&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Table of contents&lt;/h2&gt;
&lt;ol data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; list-style: upper-roman; font-size: 18px; font-weight: 400;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Introduction/TLDR&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Post-quantum key exchanges in OpenVPN&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Windows client v4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a name="I"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;Introduction/TLDR&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;In our &lt;a href="https://cryptostorm.is/blog/pq-openvpn#IV" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;post-quantum OpenVPN&lt;/a&gt; post, we said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For true &lt;strong&gt;post-quantum security&lt;/strong&gt;, the key exchange would also need a PQC algorithm (like ML-KEM). We will have to wait for OpenVPN to officially add support for those before we can use them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;OpenVPN added PQC support in version 2.7.0, so if you have that (or newer) and OpenSSL 3.5.0 (or newer) then a hybrid post-quantum TLS key exchange will be used when you connect to cryptostorm. That means the gap mentioned in the older post is closed for clients using a recent enough OpenVPN/OpenSSL.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;You can see it in the OpenVPN log at:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; background-color: #ffffff; text-align: left;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;Control Channel: TLSv1.3, cipher TLSv1.3 TLS_CHACHA20_POLY1305_SHA256, peer certificate: 521 bits ECsecp521r1, signature: ecdsa-with-SHA512, peer signing digest/type: ecdsa_secp521r1_sha512 ECDSA, key agreement: &lt;strong&gt;X25519MLKEM768&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;That &lt;strong&gt;X25519MLKEM768&lt;/strong&gt; part means the TLS key exchange is using a hybrid of the classical X25519 ECDH algorithm and the post-quantum ML-KEM-768 algorithm.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The short version is: our ML-DSA-87 OpenVPN instances now have post-quantum authentication and a post-quantum hybrid key exchange. The secp521r1, Ed25519, Ed448, and RSA instances can also use the same hybrid key exchange when the client's OpenVPN/OpenSSL is new enough, though their certificate/authentication side is still whatever that instance uses.&lt;/p&gt;
&lt;hr data-start="1244" data-end="1247" class=""&gt;
&lt;p&gt;&lt;a name="II"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;Post-quantum key exchanges in OpenVPN&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The previous &lt;a href="https://cryptostorm.is/blog/pq-openvpn" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;post-quantum OpenVPN&lt;/a&gt; post was mostly about ML-DSA-87 certificates. That was useful because it meant the server authentication side could use a post-quantum signature algorithm, but the TLS key exchange was still classical.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;OpenSSL 3.5 added support for PQC algorithms like ML-KEM, ML-DSA, and SLH-DSA, and its default TLS keyshares include X25519MLKEM768. OpenVPN 2.7.x can make use of that when it is built against a new enough OpenSSL.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;That matters because the key exchange is the part that agrees on the temporary symmetric keys used for the VPN session. With X25519MLKEM768, an attacker would have to break both sides of the hybrid agreement to recover the key exchange: the classical X25519 side and the ML-KEM-768 side.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The data channel is still encrypted with normal symmetric ciphers like AES-256-GCM or ChaCha20-Poly1305, depending on the instance/client settings. That is fine; post-quantum VPN work is mostly about replacing the asymmetric parts first, because those are the parts Shor's algorithm threatens. AES-256 still has a large security margin even in the usual Grover's algorithm discussion.&lt;/p&gt;
&lt;hr data-start="1244" data-end="1247" class=""&gt;
&lt;p&gt;&lt;a name="III"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;Windows client v4&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;We also rewrote our Windows client.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The old "widget" did its job for a long time, but it started as a single Perl script and slowly accumulated years of fixes, feature additions, Windows compatibility workarounds, and UI tweaks. The new one is still Perl/Tkx, but the code has been split into smaller modules and most of the client-side logic was rewritten.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The visible changes are the ones most users will care about:&lt;/p&gt;
&lt;ul style="box-sizing: inherit; margin: 0px 0px 1.66667em 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;newer server selection UI;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;newer OpenVPN/OpenSSL builds, so the client can use the hybrid post-quantum key exchange described above;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Xray/REALITY support, so OpenVPN UDP or TCP can be wrapped in something that looks much closer to normal HTTPS traffic;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;the stunnel HTTPS and SSH tunneling are still there for networks where those work better;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;better TAP adapter handling, and updated TAP drivers for Windows 7 and newer Windows systems;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;a more careful killswitch and IPv6 leak-blocking path;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;no more bundled DNSCrypt since the client doesn't use DNS anymore;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;DNS leak protection, ad-blocking DNS, and TunnelCrack protection options;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;more translations (English, Japanese, Swedish, Italian, Russian, Chinese, Persian, Arabic, German, French, Dutch, Finnish, and Spanish) and a new language selection UI on the main window;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;post-connect checks for client updates and server-list updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Xray is probably the biggest transport change. Our older HTTPS obfuscation used stunnel, which works for TCP OpenVPN but doesn't help with UDP OpenVPN or WireGuard. Xray/REALITY can carry UDP or TCP payloads through a TLS-looking outer connection, which makes it a better fit for the current network setup described in the &lt;a href="https://cryptostorm.is/blog/xray" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Xray post&lt;/a&gt;.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;This client currently uses the latest OpenVPN TAP drivers. DCO support, and possibly WireGuard support, will come later. For now the goal was to get the new OpenVPN/OpenSSL/Xray stack working across the widest set of Windows systems we still care about, including Windows 7 32-bit. &lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The Windows client download is at &lt;a href="https://cryptostorm.is/windows#widget" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;https://cryptostorm.is/windows#widget&lt;/a&gt;.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The source code is at &lt;a href="https://github.com/cryptostorm/cstorm_widget" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;https://github.com/cryptostorm/cstorm_widget&lt;/a&gt;.&lt;/p&gt;
&lt;hr data-start="1244" data-end="1247" class=""&gt;</description>
      <pubDate>Fri, 26 Jun 2026 18:30:16 -0500</pubDate>
      <guid isPermaLink="false">4503fea71a1a982dc97ca6bb941f87c0</guid>
    </item>
    <item>
      <title>DNS over HTTPS</title>
      <link>https://cryptostorm.is/blog/doh</link>
      <image/>
      <description>&lt;p&gt;&lt;img src="https://cryptostorm.is/blog/images/doh.png" width="146" height="162" alt="" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Table of contents&lt;/h2&gt;
&lt;ol data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; list-style: upper-roman; font-size: 18px;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Age verification laws and other bad ideas&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#IV" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Other news&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a name="I"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Introduction&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;We've added public DNS-over-HTTPS endpoints to the network.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;DNS-over-HTTPS, usually shortened to DoH, is exactly what it sounds like: DNS queries sent through HTTPS instead of the usual plaintext DNS protocol. In plain terms, that means the part of your browser that asks "what IP does this domain point to?" can be sent inside the same kind of encrypted HTTPS connection your browser already uses for websites.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;This does not make a browser private by itself. It does not fix canvas fingerprinting, WebGL fingerprinting, timezone leaks, language/header uniqueness, geolocation APIs, bad extensions, hostile JavaScript, or all the other browser-shaped garbage that gets used for tracking. It only changes how DNS lookups are done.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;But DNS still matters. Plain DNS is easy for ISPs, captive portals, schools, workplaces, public WiFi networks, and national firewalls to log, redirect, poison, block, or otherwise tamper with. DoH wraps those lookups in HTTPS, so on the wire it looks like ordinary HTTPS traffic to the DoH hostname. That's useful on networks where DNS is being manipulated, and it's also useful in browsers because it can prevent browser-side DNS leaks where the browser or one of its APIs would otherwise resolve names outside the VPN/DNS path you expected.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The endpoints are:&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;strong&gt;Ad/tracker-blocking:&lt;/strong&gt;&lt;br&gt;&lt;code&gt;https://public.deepdns.net/dns-query-ts&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://cryptostorm.is/dns-query-ts&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://cryptostorm.nu/dns-query-ts&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://SERVER.cstorm.is/dns-query-ts&lt;/code&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;strong&gt;Unfiltered:&lt;/strong&gt;&lt;br&gt;&lt;code&gt;https://public.deepdns.net/dns-query&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://cryptostorm.is/dns-query&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://cryptostorm.nu/dns-query&lt;/code&gt;&lt;br&gt;&lt;code&gt;https://SERVER.cstorm.is/dns-query&lt;/code&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Replace &lt;code&gt;SERVER&lt;/code&gt; with any of the hostnames listed at the bottom of &lt;a href="https://cryptostorm.is/wireguard" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/wireguard&lt;/a&gt; or in &lt;a href="https://cryptostorm.nu/nodes.txt" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.nu/nodes.txt&lt;/a&gt;, such as &lt;code&gt;paris.cstorm.is&lt;/code&gt;, &lt;code&gt;austria.cstorm.is&lt;/code&gt;, &lt;code&gt;belgium.cstorm.is&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;There are also additional DoH-capable hostnames in the OpenVPN configs generated at &lt;a href="https://cryptostorm.is/configs/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/configs/&lt;/a&gt; and in the configs on GitHub at &lt;a href="https://github.com/cryptostorm/conf/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://github.com/cryptostorm/conf/&lt;/a&gt;. We're not listing them directly here because in some places DNS censorship (probably) is done by crawling public pages like this one, then feeding the discovered domains into blocklists. If the obvious endpoints get blocked somewhere, the less-obvious hostnames in the configs may still work.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The &lt;code&gt;/dns-query&lt;/code&gt; endpoint is the normal unfiltered resolver. The &lt;code&gt;/dns-query-ts&lt;/code&gt; endpoint goes to a different resolver that blocks ad/tracker hosts using the Pro++ list from &lt;a href="https://github.com/hagezi/dns-blocklists" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;HaGeZi's DNS blocklists&lt;/a&gt;.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If something breaks, use the unfiltered endpoints. DNS-based blocking is useful, but DNS blocklists are blunt instruments. Some sites load login pages, payment processors, videos, comments, or images from domains that also appear on tracking lists. That's the tradeoff. Using both DNS-based blocking and browser-based blocking is usually better than relying on only one layer, but the unfiltered endpoint is there for the cases where the blocklist gets in the way.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;These endpoints have actually existed for a while. We didn't announce them before because DNSCrypt already existed on our side, and DNSCrypt solves some problems better than DoH. DoH still depends on the WebPKI/CA system. If a domain expires or a CA makes a bad decision, someone else can theoretically get a valid certificate for a name and run a service there. DNSCrypt doesn't work that way; the resolver identity is tied to the DNSCrypt server public key, so taking over the domain name alone isn't enough.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;So DNSCrypt is still preferable if you're already using DNSCrypt, especially with Anonymized DNSCrypt relays. Our implementation is described at &lt;a href="https://cryptostorm.is/blog/anondns" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/blog/anondns&lt;/a&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;But DoH has one large advantage: it is easy. No extra DNSCrypt client is needed. Most people can paste a URL into their browser's secure DNS settings and be done with it. That's enough of a benefit to make these public.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Opening them publicly also adds more ordinary resolver traffic to the same PowerDNS recursor backends used by VPN clients and our public DNSCrypt servers. More mixed DNS traffic means more background noise around the resolver side of the network, which helps VPN users and public resolver users blend into a larger crowd. DNSCrypt users using anonymized relays already get stronger separation, but more noise on the recursors still doesn't hurt.&lt;/p&gt;
&lt;p&gt;&lt;a name="II"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="line-height: 1.2; box-sizing: inherit; clear: both; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Instructions&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Pick one endpoint first. For most people, start with:&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;code&gt;https://public.deepdns.net/dns-query-ts&lt;/code&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If a site breaks, switch to:&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;code&gt;https://public.deepdns.net/dns-query&lt;/code&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you're using the VPN service and you often connect to the same server, you would get faster DNS lookups if you use that server's DoH endpoint.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Chrome / Chromium&lt;/h3&gt;
&lt;ol style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; font-size: 18px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;Open Chrome's menu, then go to &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Go to &lt;strong&gt;Privacy and security&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Open &lt;strong&gt;Security&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Scroll to &lt;strong&gt;Use secure DNS&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Enable it.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Choose the custom/provider option.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Paste the DoH URL, for example:&lt;br&gt;&lt;code&gt;https://public.deepdns.net/dns-query-ts&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you're using Chrome because you need a Chromium-based browser, consider using &lt;a href="https://github.com/uazo/cromite" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;Cromite&lt;/a&gt; instead. It's a Chromium fork with built-in ad blocking and privacy-focused patches. DoH only changes DNS. It does not fix the rest of the browser fingerprinting/tracking surface.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Firefox&lt;/h3&gt;
&lt;ol style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; font-size: 18px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;Open Firefox's menu, then go to &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Go to &lt;strong&gt;Privacy &amp;amp; Security&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Scroll down to &lt;strong&gt;DNS over HTTPS&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Choose increased/max protection if you want Firefox to use DoH instead of silently falling back to local DNS.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Choose &lt;strong&gt;Custom&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Paste the DoH URL, for example:&lt;br&gt;&lt;code&gt;https://public.deepdns.net/dns-query-ts&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you're using Firefox mainly because you want a more privacy-friendly browser, also look at &lt;a href="https://librewolf.net/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;LibreWolf&lt;/a&gt;. It's an independent Firefox fork focused on reducing telemetry, tracking, and fingerprinting. DoH only changes DNS; LibreWolf covers a different part of the browser privacy problem, and some protections can be adjusted per-site when needed.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Microsoft Edge&lt;/h3&gt;
&lt;ol style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; font-size: 18px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;Open Edge's menu, then go to &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Go to &lt;strong&gt;Privacy, search, and services&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Scroll down to &lt;strong&gt;Security&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Enable &lt;strong&gt;Use secure DNS&lt;/strong&gt;.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Choose a service provider / custom provider.&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;Paste the DoH URL, for example:&lt;br&gt;&lt;code&gt;https://public.deepdns.net/dns-query-ts&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Also: don't use Edge. There isn't really a privacy-friendly Edge fork in the same way there are privacy-focused Chromium or Firefox forks, because Edge is closed source and Microsoft's browser, so nobody can audit, rebuild, or modify the parts that matter into a sane privacy-friendly browser.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Safari / Apple platforms&lt;/h3&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Safari does not expose a simple "paste custom DoH URL here" setting like Firefox/Chrome/Edge. On Apple platforms, encrypted DNS is usually configured at the OS level using a configuration profile. That means the browser instructions are not as clean, and the exact UI differs between macOS/iOS versions.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you're on macOS/iOS and want to use these DoH endpoints system-wide, create or install a DNS settings profile that points to one of the DoH URLs above. Be careful with random profile generators; configuration profiles can do much more than change DNS, so inspect what you're installing.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;And no, there isn't a privacy-friendly open-source Safari fork either. It's Apple.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Testing&lt;/h3&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;After enabling DoH, restart the browser and test it at &lt;a href="https://cryptostorm.is/leaktest" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/leaktest&lt;/a&gt;. That page checks IP, DNS, and WebRTC leaks using JavaScript. If you have JavaScript disabled, use &lt;a href="https://cryptostorm.is/dnsleaktest/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/dnsleaktest/&lt;/a&gt; instead.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If the test shows your ISP resolver, your browser is probably not using the DoH endpoint you configured, or the browser's DoH mode is set to a fallback/default protection level that still allows local DNS in some cases. Use the stricter/max protection mode if your browser provides one and you want it to use DoH only.&lt;/p&gt;
&lt;p&gt;&lt;a name="III"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="line-height: 1.2; box-sizing: inherit; clear: both; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Age verification laws and other bad ideas&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Since this post is already about DNS privacy, censorship resistance, and who gets to see what you're doing online, we should probably mention the current wave of age/ID verification laws.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;California's AB 1043, Illinois' SB 3977, Brazil's Lei 15.211/2025, and similar laws being pushed elsewhere are all variations on the same theme: make operating systems, app stores, apps, platforms, or developers collect, infer, transmit, or act on age signals so that access can be allowed, denied, filtered, logged, or delegated to some other layer of the stack.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;We're not implementing that, and we're not going to knowingly build on software that does. cryptostorm is a VPN/privacy provider. We encrypt and relay traffic, run resolvers, publish configs, write ugly shell scripts, and try to keep the network from becoming more stupid than necessary. We are not an ID-verification company, a parental-control vendor, or a checkpoint for whether someone is allowed to use their own computer.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Our servers currently run Arch Linux. There's been discussion in the Arch community about these laws, but as of this writing there doesn't appear to be a final project-wide stance. That's understandable; volunteer Linux distributions are not built like Apple, Google, Microsoft, or Meta. They usually don't have centralized user accounts, compliance departments, ID pipelines, state-specific activation flows, or a pile of lawyers waiting around to interpret every new legislative attempt to shove identity into the operating system.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Artix is on our short list if this becomes a real problem for Arch. Artix is Arch-based, rolling-release, and systemd-free. That last part is a bonus. systemd has had a long history of security problems and overreach, and plenty of people have had unkind things to say about it, including Linus Torvalds. PID 1 should be boring. A lot of modern Linux decided it should be an everything daemon instead.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;There are also several long Reddit threads collecting bill text, model-bill language, lobbying disclosures, and state-by-state comparisons. The short version is that a lot of these proposals look less like "protect the children" and more like "move liability away from the platforms with the largest child-safety exposure, push the burden onto app stores, developers, and OS vendors, then let whoever controls the age-verification infrastructure become unavoidable."&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;See:&lt;/p&gt;
&lt;ul style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; font-size: 18px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="https://www.reddit.com/r/archlinux/comments/1rk3qdb/any_response_from_the_arch_devs_about_california/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;Arch discussion about California/etc. age verification&lt;/a&gt; (&lt;a href="https://web.archive.org/web/20260429004143/https://www.reddit.com/r/archlinux/comments/1rk3qdb/any_response_from_the_arch_devs_about_california/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;archive.org mirror&lt;/a&gt;)&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="https://www.reddit.com/r/linux/comments/1rmhxk1/i_pulled_the_actual_bill_text_from_5_state_age/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;linux thread comparing bill text from multiple states&lt;/a&gt; (&lt;a href="https://web.archive.org/web/20260311012345/https://www.reddit.com/r/linux/comments/1rmhxk1/i_pulled_the_actual_bill_text_from_5_state_age/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;archive.org mirror&lt;/a&gt;)&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="https://www.reddit.com/r/LinusTechTips/comments/1rsn1tm/it_appears_meta_is_heavily_lobbying_for_linux_age/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;thread on lobbying/model-bill language around Linux/OS age checks&lt;/a&gt; (&lt;a href="https://web.archive.org/web/20260316183339/https://www.reddit.com/r/LinusTechTips/comments/1rsn1tm/it_appears_meta_is_heavily_lobbying_for_linux_age/" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;archive.org mirror&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The implementation problem is obvious to anyone who has actually used Linux for more than ten minutes. Who is the "OS provider" for an Arch ISO mirrored by volunteers? What about derivatives? What about a tarball? What about a VPS image? What about containers? What about source builds? What about an offline installer? What about a router image? What about a single-user rescue ISO? What about a server that has no human-facing app store and no concept of a child account?&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The answer is that the people writing these laws either don't know, don't care, or know exactly what they're doing and are fine with breaking smaller/free/open systems because the compliance model was designed around large centralized platforms.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;So our policy is simple: no age verification, no ID verification, no age-signal APIs, no "upload your documents to prove you're allowed to use the internet", and no software stack changes that would turn our servers into part of that system. If a distribution we depend on goes in that direction, we'll move.&lt;/p&gt;
&lt;p&gt;&lt;a name="IV"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="line-height: 1.2; box-sizing: inherit; clear: both; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Other news&lt;/h2&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Lifetime tokens&lt;/h3&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;As of this blog post, there are 21 unsold lifetime tokens left. The live counter on &lt;a href="https://cryptostorm.is/#section5" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/#section5&lt;/a&gt; has the current number. Once those are sold, the option to buy new lifetime tokens will be removed from the site.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;This does not affect existing lifetime tokens. Existing lifetime tokens are still lifetime tokens. On the backend they have to be represented as a number because computers don't understand "lifetime", so they're set to 73 years, which was the global average life expectancy when that value was chosen.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The only change is that once the remaining lifetime tokens are gone, new ones won't be available for purchase. The reason is simple: server invoices continue forever, and lifetime tokens are a one-time payment. Over long enough timelines, the shorter-duration tokens are what keep the network paid for.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;We've done this before years ago, and they may come back again someday, but they will not be part of the annual Black Friday through Cyber Monday half-off sale, or any other possible sale before that. $250 is too cheap for lifetime access. Every other token duration will still be in the sale like usual.&lt;/p&gt;
&lt;h3 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.35rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Windows client&lt;/h3&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;We're still working on the next Windows client release at &lt;a href="https://cryptostorm.is/windows#widget" target="_blank" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;" rel="noopener"&gt;https://cryptostorm.is/windows#widget&lt;/a&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The client is essentially our custom OpenVPN GUI, and the next build switches away from the now-unsupported Wintun adapter toward DCO/TAP, adds Xray support, and includes better/more translations. It also has a lot of UI cleanup already done, including a new server dropdown list with country flags and mouseover effects, and instant language switching without restarting the program.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;It's closer to a rewrite than a normal update, so it's taking longer than usual. Most of the UI work and a lot of the new code is already done, but we still need to finish the DCO/TAP update, Xray support, and the remaining rewrite work. WireGuard support is being considered too, but that will probably wait until the next major release since it needs a lot more testing, and the official WireGuard client already works fine.&lt;/p&gt;</description>
      <pubDate>Wed, 29 Apr 2026 00:43:27 -0500</pubDate>
      <guid isPermaLink="false">1e8011f999a89d9f1a32ac8213280a57</guid>
    </item>
    <item>
      <title>Server-side multihop</title>
      <link>https://cryptostorm.is/blog/ssmultihop</link>
      <image/>
      <description>&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;&lt;img src="https://cryptostorm.is/blog/images/potato.png" alt="an image of a potato, because I couldn't think of an image for server-side multihop" width="215" height="153" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/h2&gt;
&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Table of contents&lt;/h2&gt;
&lt;ol data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; list-style: upper-roman; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Technical details&lt;/a&gt; &lt;a href="https://cryptostorm.is/blog/xray#III-II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a name="I" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Introduction&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; background-color: #ffffff;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;We added a new server-side multihop feature that's much easier to use and faster than the client-side multihop described on &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;&lt;a href="https://cryptostorm.is/multihop" target="_blank" rel="noopener"&gt;https://cryptostorm.is/multihop&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;(OpenVPN) and &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;&lt;a href="https://cryptostorm.is/blog/multihopping-wireguard" target="_blank" rel="noopener"&gt;https://cryptostorm.is/blog/multihopping-wireguard&lt;/a&gt; (WireGuard)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; background-color: #ffffff;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;Client-side multihop is useful because it works with any &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px;"&gt;provider, so you don't have to entirely trust a single one, but it's also slow because you're creating two VPN tunnels on your end, increasing your routing table exponentially with every hop (unless you're using namespaces or virtual machines). It's also very difficult to set up on non-PC devices.&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;&lt;span style="font-size: 18px;"&gt;Server-side multihop means the VPN server creates the second tunnel for you and forwards your traffic through it, so from your end (client-side), only a single VPN tunnel is needed. The servers are also in data centers that generally have much faster speeds than most residential ISPs, so it's faster than client-side multihopping. It also works on any device that has a web browser (and supports WireGuard or OpenVPN).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name="II" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Instructions&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;Simply connect to the VPN as you normally would, then go to &lt;a href="http://10.31.33.7/multihop" target="_blank" rel="noopener"&gt;http://10.31.33.7/multihop&lt;/a&gt; in your web browser.&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;img src="https://cryptostorm.is/blog/images/mh.png" alt="mh screenshot 1" width="424" height="389" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;Select the new server for the second hop then click the "Enable multihop" button. The internet should instantly see your new IPv4 and IPv6 address in the region of whichever server you selected.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;To turn it off or switch servers, click the "Disable multihop" button:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;img src="https://cryptostorm.is/blog/images/mh2.png" alt="mh screenshot 2" width="438" height="402" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;And it will revert back to your original exit IP(s). As the yellow text says, please don't use high-traffic applications since this doubles the servers' bandwidth for your VPN session(s). &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;Also, port forwarding will only apply to the first hop, not the second. And like with port forwarding, server-side multihop entries are removed when you disconnect from the VPN (immediately for OpenVPN, after 20 minutes for WireGuard). &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;Also, &lt;a href="https://cryptostorm.is/blog/port-striping-v3#IV" target="_blank" rel="noopener"&gt;/changemyip&lt;/a&gt; must be set to the default exit IP before you can use this multihop, and vice-versa, multihop must be disabled to use /changemyip. That's because using both simultaneously can lead to weird combinations like IPv6 is multihopped, but IPv4 is through Tor, and it's difficult to revert that correctly.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name="III" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Technical details&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Once server-side multihop is enabled, the entry server creates a per-destination WireGuard path to the chosen second-hop server, rewrites the client’s source addresses onto an internal overlay, and policy-routes only that rewritten traffic into the second hop. The second server then NATs that overlay traffic out through one of its normal exit IPs. Coordination between the two servers happens over a private inter-server control plane carried inside a separate WireGuard mesh, so the backend calls can use plain HTTP since the transport is already encrypted and authenticated by WireGuard, and VPN clients (and the internet) can't reach that control-plane network.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;One small note: every IP involved in this process is an internal address. These include the client’s internal VPN address, randomized internal session addresses used between servers, and the internal addresses used for the server control plane. The user’s real IP address is never part of this process and never appears in the multihop routing path.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The first step is creating the encrypted transport path between the entry server and the selected second-hop server. The function below is the actual logic that ensures the interface exists and configures the peer. Each possible destination gets its own WireGuard interface. The interface name and listening port are derived from a numeric identifier assigned to each server, which keeps everything deterministic across the entire network and avoids port collisions.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;ensure_remote_if(){
  local remote_slug="$1" remote_pub="$2" remote_ip="$3" remote_oct="$4"
  local ifn port pk

  ifn="wg0mh-r${remote_oct}"
  port="$(( PER_REMOTE_PORT_BASE + remote_oct ))"
  pk="$(read_private_key)"

  if ! ip link show "$ifn" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then
    ip link add dev "$ifn" type wireguard
    ip link set dev "$ifn" up
  fi

  wg set "$ifn" \
    listen-port "$port" \
    private-key &amp;lt;(echo "$pk") \
    peer "$remote_pub" \
    endpoint "${remote_ip}:${BASE_PORT}" \
    persistent-keepalive 25 \
    allowed-ips "0.0.0.0/0,::/0"
}
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Once that encrypted path exists, the entry server assigns the session a temporary internal address. These addresses exist only between the two servers and are never visible (or reachable) to the user. They allow traffic from one specific client to be redirected without affecting anyone else connected to the same server.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;alloc_session_v4(){
  local oct="$1"
  local host ip

  for attempt in $(seq 1 400); do
    host="$(shuf -i 2-254 -n1)"
    ip="10.1.${oct}.${host}"

    if ! grep -Rqs "^SESSION_V4=${ip}$" "$STATE_DIR"; then
      echo "$ip"
      return
    fi
  done
}
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The client’s traffic is then rewritten so that packets appear to originate from this temporary session address. Only the selected client’s packets are rewritten. Other users connected to the same entry server continue using the normal routing path.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;add_snat_v4(){
  local ns="$1" src="$2" to="$3"

  if [[ "$ns" == "ovpn" ]]; then
    iptables -t nat -I POSTROUTING 1 \
      -s "${src}/32" \
      -m comment --comment "mhop:${src}" \
      -j SNAT --to-source "${to}"
  else
    ip netns exec "$ns" iptables -t nat -I POSTROUTING 1 \
      -s "${src}/32" \
      -m comment --comment "mhop:${src}" \
      -j SNAT --to-source "${to}"
  fi
}
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;With the client now rewritten onto the internal overlay, policy routing ensures that only that client’s traffic is sent through the second-hop tunnel. A dedicated routing table is created and rules are added that match only the temporary session address.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;policy_add(){
  # table, session_v4, session_v6, remote_endpoint_v4, mh_if
  local table="$1" s4="$2" s6="$3" remote_ep="$4" ifn="$5"
  local dev via
  read -r dev via &amp;lt; &amp;lt;(route_get_v4 "$remote_ep")

  # Prevent recursion: force traffic to the WG endpoint itself via main route.
  if [[ -n "${via:-}" ]]; then
    ip route replace table "$table" "${remote_ep}/32" via "$via" dev "$dev" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || true
  else
    ip route replace table "$table" "${remote_ep}/32" dev "$dev" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || true
  fi

  ip rule add pref "$MH_PRIO_V4" from "${s4}/32" table "$table" 2&amp;gt;/dev/null || true
  ip route replace table "$table" default dev "$ifn" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || true

  if [[ -n "$s6" ]]; then
    ip -6 rule add pref "$MH_PRIO_V6" from "${s6}/128" table "$table" 2&amp;gt;/dev/null || true
    ip -6 route replace table "$table" default dev "$ifn" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || true
  fi
}
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;After the entry server finishes preparing its side, it tells the destination server to activate the second half of the path. This request is sent to a backend endpoint over the internal server mesh. The request itself is plain HTTP, but the transport is inside WireGuard so it is already encrypted and authenticated. Since VPN clients cannot route to this internal network, the backend is unreachable from the outside world.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;control_url_for_octet(){
  local oct="$1"
  echo "http://${CONTROL_NET_PREFIX}.${oct}/mh-backend"
}

resp="$(curl -fsS --max-time 8 \
  --data-urlencode "op=start" \
  --data-urlencode "a_slug=${this_slug}" \
  --data-urlencode "session_ip=${session_v4}" \
  --data-urlencode "session_ip6=${session_v6}" \
  "$url")"
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;When the second server receives the request, it installs NAT rules that translate the internal session address into one of its normal exit IPs. From that point onward the traffic path is: client → entry server → encrypted inter-server tunnel → exit server → internet.&lt;/p&gt;
&lt;pre style="background: #000; color: #e6e6e6; padding: 14px; font-size: 14px; line-height: 1.45; overflow: auto;"&gt;backend_add_snat_v4(){
  local session_ip="$1"
  local exit exit_ip pr
  exit="$(pick_exit_v4)"
  exit_ip="${exit%:*}"
  pr="${exit#*:}"

  # UDP
  iptables -w -t nat -I POSTROUTING 1 -s "${session_ip}/32" -p udp -m udp --dport 1:65535 \
    -m comment --comment "mhop:${session_ip}" \
    -j SNAT --to-source "${exit_ip}:${pr}"

  # TCP
  iptables -w -t nat -I POSTROUTING 1 -s "${session_ip}/32" -p tcp -m tcp --dport 1:65535 \
    -m comment --comment "mhop:${session_ip}" \
    -j SNAT --to-source "${exit_ip}:${pr}"

  # ICMP
  iptables -w -t nat -I POSTROUTING 1 -s "${session_ip}/32" -p icmp \
    -m comment --comment "mhop:${session_ip}" \
    -j SNAT --to-source "${exit_ip}"

  echo "$exit_ip:$pr"
}
&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Source port range restrictions apply here too (the 'pr' variable in the above code), so the Port Shadowing protections described on &lt;a href="https://cryptostorm.is/blog/port-striping-v3#I-I" target="_blank" rel="noopener"&gt;https://cryptostorm.is/blog/port-striping-v3#I-I&lt;/a&gt; won't be affected by this server-side multihop.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Earlier versions of this system used HTTPS over the public internet for the backend coordination between servers. That design was still secure — the HTTPS used post-quantum ciphers and the backend endpoint name was intentionally difficult to guess — but it still meant exposing an endpoint to the public internet. Even though the backend only accepted POST requests and validated all inputs, a determined attacker could still attempt to discover the endpoint and flood it with requests.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Rather than maintain IP-based ACLs or additional authentication layers between dozens of servers running identical scripts, the system now uses a dedicated WireGuard control-plane mesh. Each server has a lightweight interface that connects to every other server. Even with forty peers this consumes negligible resources, while completely removing the need to expose backend endpoints to the public internet.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Some other parts of the infrastructure still use internal HTTPS endpoints with custom certificate authorities and strict IP-based ACLs. Those endpoints are already limited to specific internal systems and use post-quantum TLS, which is sufficiently secure for their purposes. They could also be migrated onto this mesh though.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 1.66667em 0px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;WireGuard itself is not post-quantum secure yet, but that is acceptable here because the control-plane traffic does not contain any sensitive information. The requests only coordinate session state between servers and never include user identities or real client IP addresses. Even in a hypothetical future where WireGuard’s cryptography could be broken, the traffic crossing this mesh wouldn't reveal anything useful about users.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Mar 2026 20:39:39 -0500</pubDate>
      <guid isPermaLink="false">3ad2b387ce0bdb46ee96dbffbae48876</guid>
    </item>
    <item>
      <title>Xray (w/VLESS+REALITY) support added</title>
      <link>https://cryptostorm.is/blog/xray</link>
      <image/>
      <description>&lt;h2 data-start="225" data-end="289" class=""&gt;&lt;img src="https://cryptostorm.is/blog/images/xray.jpg" width="313" height="317" alt="" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/h2&gt;
&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Table of contents&lt;/h2&gt;
&lt;ol data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; list-style: upper-roman; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Introduction/TLDR&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Instructions&lt;/a&gt;
&lt;ul style="box-sizing: inherit; padding: 0px 0px 0px 1em; margin: 0px 0px 0px 1em; list-style: upper-roman;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II-I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II-II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Windows/Linux/Mac&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Technical details&lt;/a&gt;
&lt;ul style="box-sizing: inherit; padding: 0px 0px 0px 1em; margin: 0px 0px 0px 1em; list-style: upper-roman;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III-I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;The CSXRAY app&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#III-II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;The server-side Xray&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a name="I" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Introduction/TLDR&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; background-color: #ffffff; text-align: left;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;We added &lt;a href="https://xtls.github.io/en/" target="_blank" rel="noopener"&gt;Xray&lt;/a&gt; support to the network. &lt;/span&gt;&lt;/span&gt;In contrast to &lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;the &lt;a href="https://cryptostorm.is/blog/https-tunnels" target="_blank" rel="noopener"&gt;stunnel-based HTTPS obfuscation&lt;/a&gt; we’ve been using for years, Xray’s &lt;a href="https://github.com/XTLS/REALITY" target="_blank" rel="noopener"&gt;REALITY&lt;/a&gt; mode is capable of mimicking what a normal browser handshake looks like — right down to the &lt;a href="https://github.com/salesforce/ja3" target="_blank" rel="noopener"&gt;JA3&lt;/a&gt; fingerprint and the general traffic profile that accompanies it, which is useful if you’re behind one of those networks that actively tries to identify and interfere with VPN usage.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; background-color: #ffffff; text-align: left;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;Xray also works with WireGuard (and UDP OpenVPN), while stunnel only works with TCP OpenVPN.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span&gt;The &lt;/span&gt;Xray config generator is at &lt;a href="https://cryptostorm.is/xray/" target="_blank" rel="noopener"&gt;https://cryptostorm.is/xray/&lt;/a&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;&lt;span style="font-size: 18px;"&gt;We also made an Android Xray app, available at:&lt;br&gt;&lt;a href="https://cryptostorm.is/xray/app-latest.apk"&gt;https://cryptostorm.is/xray/app-latest.apk&lt;/a&gt; [&lt;a href="https://cryptostorm.is/xray/app-latest.apk.txt" target="_blank" rel="noopener"&gt;sig&lt;/a&gt;] &lt;br&gt;&lt;/span&gt;&lt;span style="font-size: 18px;"&gt;(source code at &lt;a href="https://github.com/cryptostorm/CSXRAY" target="_blank" rel="noopener"&gt;https://github.com/cryptostorm/CSXRAY&lt;/a&gt;)&lt;/span&gt;&lt;span style="font-size: 18px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;&lt;span style="font-size: 18px;"&gt;Port 8443 will give you better speeds, so you should use that if your network allows it and it doesn't make your traffic too unusual. If you must use another port, anything from 1-65535 should work (excluding 5061, 5062 and 5063), though it won't be as fast since it has to go through the haproxy/SNI routing described on &lt;a href="https://cryptostorm.is/blog/port-striping-v3" target="_blank" rel="noopener"&gt;https://cryptostorm.is/blog/port-striping-v3&lt;/a&gt;. Port 443 is the default since that's the standard HTTPS port.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name="II" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Instructions&lt;/h2&gt;
&lt;p&gt;&lt;a name="II-I" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;Android&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span&gt;First, setup WireGuard following the instructions on &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;&lt;a href="https://cryptostorm.is/android#wg" target="_blank" rel="noopener"&gt;&lt;span style="color: #4a90e2; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;https://cryptostorm.is/android#wg&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;(don't connect yet). You should have the cs-* configs imported into WireGuard.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18px;"&gt;&lt;/span&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Next, download and install &lt;a href="https://cryptostorm.is/xray/app-latest.apk"&gt;https://cryptostorm.is/xray/app-latest.apk&lt;/a&gt; [&lt;a href="https://cryptostorm.is/xray/app-latest.apk.txt" target="_blank" rel="noopener"&gt;sig&lt;/a&gt;] [&lt;a href="https://github.com/cryptostorm/CSXRAY" target="_blank" rel="noopener"&gt;source&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="1216" data-end="1507" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Most Android web browsers will ask for permission to install applications the first time you download an &lt;code data-start="1317" data-end="1323"&gt;.apk&lt;/code&gt;. It’s safe to allow it for the install, but after installation it’s generally a good idea to turn that permission &lt;em data-start="1438" data-end="1448"&gt;back off&lt;/em&gt; so the browser can't install anything else in the future.&lt;/p&gt;
&lt;p data-start="1216" data-end="1507" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;After the app is installed, open it and: &lt;/p&gt;
&lt;p&gt;&lt;img src="https://cryptostorm.is/blog/images/CSXRAY_main.gif" alt="" width="241" height="520" style="float: right; max-width: 40%; height: auto;"&gt;&lt;/p&gt;
&lt;ol data-start="1537" data-end="1866"&gt;
&lt;li data-start="1554" data-end="1694"&gt;
&lt;p data-start="1557" data-end="1694" style="word-break: keep-all; white-space: normal; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Choose the server you want to use.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1554" data-end="1694"&gt;&lt;span style="word-break: keep-all; white-space: normal; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Change the port, if needed.&lt;/span&gt;&lt;/li&gt;
&lt;li data-start="1756" data-end="1866"&gt;
&lt;p data-start="1759" data-end="1866" style="word-break: keep-all; white-space: normal; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Tap &lt;strong data-start="1763" data-end="1777"&gt;Start Xray&lt;/strong&gt;.&lt;br&gt;The status indicator near the middle will show a blue icon and:&lt;br&gt;"Xray is running (waiting for traffic)"&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="1868" data-end="1901" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Next, open the WireGuard app:&lt;/p&gt;
&lt;ol&gt;
&lt;li data-start="1906" data-end="2030" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Edit the &lt;code data-start="1915" data-end="1921"&gt;cs-…&lt;/code&gt; config for the same server you selected in the Xray app.&lt;br&gt;(&lt;code data-start="1996" data-end="2007"&gt;cs-austria&lt;/code&gt;, cs-dallas, etc.)&lt;/li&gt;
&lt;li data-start="2031" data-end="2091"&gt;
&lt;p data-start="2034" data-end="2091" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;In the WireGuard config editor, tap &lt;strong data-start="2070" data-end="2090"&gt;All Applications&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2092" data-end="2236"&gt;
&lt;p data-start="2095" data-end="2236" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;In that app exclusion list, &lt;strong data-start="2122" data-end="2148"&gt;exclude the CSXRAY app&lt;/strong&gt;.&lt;br data-start="2149" data-end="2152"&gt;(This is required to prevent a recursive routing loop)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2237" data-end="2283"&gt;
&lt;p data-start="2240" data-end="2283" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Back in the config editor, set the &lt;strong data-start="2248" data-end="2260"&gt;Endpoint&lt;/strong&gt; to:&lt;br&gt;&lt;strong&gt;127.0.0.1:31338&lt;/strong&gt;&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="2284" data-end="2325"&gt;
&lt;p data-start="2287" data-end="2325" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Save, then connect WireGuard normally.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you switch back to the CSXRAY app, you should now see a green status icon with "Xray is forwarding WireGuard traffic" next to that, as well as RX (received bytes) and TX (sent bytes) counters in the top right.&lt;/p&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;✔️Your WireGuard traffic should now appear as ordinary browser-looking HTTPS traffic.✔️&lt;/p&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;You can now close this app the same way you would the WireGuard app. Both will run in the background until you re-open the app and tap stop/disconnect.&lt;/p&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Note: &lt;strong&gt;Don't&lt;/strong&gt; enable the "Block connections without VPN" option in your Android settings. That would prevent this app from working because then only the WireGuard app would be allowed, but WireGuard is forwarding to Xray, so Xray needs to be allowed too. There's no Android option to "Block connections without VPN &lt;em&gt;except for this one app&lt;/em&gt;", so it has to be disabled.&lt;/p&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Also, the app has built-in translations for: English, Russian (Русский), Chinese (中文), Japanese (日本語), Swedish (Svenska), Persian (فارسی), and Arabic (العربية). Tap the U.S. flag in the upper right to bring up the language selection menu.&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p data-start="2327" data-end="2475" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;And of course, the most important feature: &lt;strong&gt;Dark&lt;/strong&gt;/&lt;strong&gt;light &lt;/strong&gt;mode&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cryptostorm.is/blog/images/CSXRAY_blinky.gif" alt="" width="170" height="367" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name="II-II" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;Windows/Linux/Mac&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-start="370" data-end="584" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;First, setup WireGuard following the instructions for your platform on &lt;a href="https://cryptostorm.is/#section6" target="_blank" rel="noopener"&gt;https://cryptostorm.is/#section6&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://cryptostorm.is/#section6" target="_blank" rel="noopener"&gt;&lt;/a&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;&lt;br&gt;(just don't connect to anything yet). &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="370" data-end="584" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Next, download v2rayN from the releases page: &lt;a href="https://github.com/2dust/v2rayN/releases" target="_blank" rel="noopener"&gt;https://github.com/2dust/v2rayN/releases&lt;/a&gt;&lt;br data-start="453" data-end="456"&gt;(Choose the version appropriate for your system. &lt;br&gt;On Windows, the "desktop" zip builds are the simplest: unzip then run v2rayN.exe)&lt;/p&gt;
&lt;p data-start="586" data-end="609" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Once v2rayN is running:&lt;/p&gt;
&lt;ol data-start="611" data-end="1772"&gt;
&lt;li data-start="611" data-end="681"&gt;
&lt;p data-start="614" data-end="681" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Go to the Xray config generator page: &lt;a href="https://cryptostorm.is/xray/" target="_blank" rel="noopener"&gt;https://cryptostorm.is/xray/&lt;/a&gt;&lt;/p&gt;
&lt;a href="https://cryptostorm.is/xray/" target="_blank" rel="noopener"&gt; &lt;/a&gt;&lt;/li&gt;
&lt;li data-start="683" data-end="805"&gt;
&lt;p data-start="686" data-end="805" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Select the server you want to use.&lt;br data-start="720" data-end="723"&gt;(For faster speeds, use port &lt;strong data-start="796" data-end="804"&gt;8443 &lt;/strong&gt;if it's allowed on your network&lt;strong data-start="796" data-end="804"&gt;)&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="807" data-end="895"&gt;
&lt;p data-start="810" data-end="895" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Click &lt;strong data-start="816" data-end="831"&gt;SHOW CONFIG&lt;/strong&gt;, then click &lt;strong data-start="844" data-end="852"&gt;Copy&lt;/strong&gt; to place the config in the clipboard.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="897" data-end="1047"&gt;
&lt;p data-start="900" data-end="1047" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Switch back to v2rayN and click the main window once then press:&lt;br&gt;&lt;strong&gt;Ctrl + V&lt;/strong&gt; &lt;br&gt;and v2rayN will automatically import the config.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1049" data-end="1326"&gt;
&lt;p data-start="1052" data-end="1201" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;A new entry will appear in the list.&lt;br data-start="1088" data-end="1091"&gt;&lt;strong data-start="1094" data-end="1110"&gt;Double-click&lt;/strong&gt; that entry then click &lt;strong data-start="1166" data-end="1177"&gt;Confirm&lt;/strong&gt; to actually start Xray.&lt;img src="https://cryptostorm.is/blog/images/v2rayN.gif" width="668" height="401" alt=""&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1328" data-end="1449"&gt;
&lt;p data-start="1331" data-end="1419" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Once running, v2rayN should show a "listening UDP on 127.0.0.1:31337" somewhere in the output.&lt;br&gt;That means Xray is ready.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1451" data-end="1573"&gt;
&lt;p data-start="1454" data-end="1573" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Now switch back to WireGuard and edit the config &lt;br&gt;(for the &lt;em data-start="1514" data-end="1520"&gt;same&lt;/em&gt; server you selected when generating the Xray config).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1575" data-end="1716"&gt;
&lt;p data-start="1578" data-end="1716" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Find the line that begins with:&lt;br data-start="1609" data-end="1612"&gt;Endpoint = something.cstorm.is:443&lt;br data-start="1649" data-end="1652" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;and change it to:&lt;br data-start="1695" data-end="1698"&gt;&lt;strong&gt;Endpoint = 127.0.0.1:31337&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1718" data-end="1772"&gt;
&lt;p data-start="1721" data-end="1772" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Save the WireGuard config then activate it as usual.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="1774" data-end="1892" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Your traffic flow is now:&lt;br data-start="1799" data-end="1802"&gt;WireGuard → local Xray → REALITY/VLESS → server → WireGuard → normal routing.&lt;/p&gt;
&lt;p data-start="1894" data-end="2022" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;Instead of WireGuard traffic, anyone monitoring will see only ordinary HTTPS (TLSv1.3) browser-looking traffic.&lt;/p&gt;
&lt;p&gt;&lt;a name="win11" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;Windows 11 users&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="background-color: #ffffff; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px;"&gt;An exclusion needs to be added to the Windows Firewall in order for Xray to reach the internet:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;Go to the start menu and open: Firewall &amp;amp; Network Protection&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;On that screen, click "Allow an app through firewall", then in the next window click "Change settings", then "Allow another app". &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-size: 18px;"&gt;Browse and select your xray.exe file, which is in \v2rayN-windows-64&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 18px; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;"&gt;\bin\xray\ (wherever you unzipped v2rayN).&lt;/span&gt;&lt;span style="background-color: #ffffff; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name="III" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Technical details&lt;/h2&gt;
&lt;p&gt;&lt;a name="III-I" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;The CSXRAY app&lt;/strong&gt;&lt;/h3&gt;
&lt;p style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;On Android, the CSXRAY app is just a GUI wrapper for &lt;a href="https://github.com/XTLS/Xray-core" target="_blank" rel="noopener"&gt;Xray-core&lt;/a&gt;. It doesn't use Android’s &lt;a href="https://developer.android.com/reference/android/net/VpnService" target="_blank" rel="noopener" style="font-family: sans-serif; font-size: 16px;"&gt;vpnService API&lt;/a&gt;&lt;span style="color: #000000; font-family: sans-serif; font-size: 16px;"&gt;&lt;/span&gt; as most Xray apps do because this app is meant to run alongside another VPN client. All it does is start Xray with a dokodemo-door inbound listening on 127.0.0.1:31338, and displays status changes coming from a few small patches we added to Xray-core (which simply notify the UI when Xray is idle, receiving traffic, or shutting down).&lt;/p&gt;
&lt;p style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;In the main CSXRAY app window, the gear icon in the top left will display the current Xray config. It's read-only unless you choose 'Custom IP' in the server selection list. That's mostly for people who want to use this app with their own (non-cryptostorm) VPN/Xray servers. There's a basic config editor in there that only does simple JSON syntax validation, but otherwise just feeds whatever JSON config you give directly into Xray-core, so all the default inbounds/outbounds are supported (As of v25.10.15, inbounds: dokodemo-door, HTTP, Shadowsocks, SOCKS, Trojan, VLESS, VMess, WireGuard, Outbounds: Blackhole, DNS, Freedom [alias: direct], HTTP, Loopback, Shadowsocks, Socks, Trojan, VLESS, VMess, WireGuard). &lt;/p&gt;
&lt;p style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The app ships with a built-in list of server IPs so that DNS can be avoided. Those IPs are updated automatically over HTTPS endpoints that are on all of the servers, and it downloads the updates through the same REALITY connection the user's WireGuard traffic will use. This means the app does not leak out of the tunnel to check for updates, and it does not introduce any additional traffic patterns. Update checks are rate-limited (never more than once per hour) and jittered with randomized 60–80 minute intervals, specifically to avoid periodic beacons.&lt;/p&gt;
&lt;p data-start="1557" data-end="1604" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;When running, the traffic flow looks like this:&lt;/p&gt;
&lt;p data-start="1606" data-end="1761" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;WireGuard app → 127.0.0.1 (dokodemo-door inbound on the client) → REALITY/VLESS → server-side Xray → forwards to the entry IP as raw WireGuard packets → routed normally.&lt;/p&gt;
&lt;p&gt;&lt;a name="III-II" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 style="text-align: center;"&gt;&lt;strong&gt;The server-side Xray&lt;/strong&gt;&lt;/h3&gt;
&lt;p data-start="1763" data-end="2422" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The server-side Xray instance runs inside its own network namespace. This prevents it from interfering with the main routing tables and firewall rules, and ensures that obfuscated traffic terminates in a controlled environment. After de-obfuscation, packets are forwarded into the entry/default namespace where the &lt;a href="https://cryptostorm.is/blog/port-striping-v3" target="_blank" rel="noopener"&gt;port striping rules&lt;/a&gt; identifies WireGuard handshakes and assigns each session to one of several exit namespaces.&lt;/p&gt;
&lt;p data-start="2424" data-end="2812" style="color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;To anyone observing on-path (either locally or upstream), the only visible traffic is a normal TLSv1.3 connection on whichever port you chose, with handshake characteristics that resemble a browser rather than a VPN.&lt;/p&gt;</description>
      <pubDate>Fri, 21 Nov 2025 17:12:42 -0600</pubDate>
      <guid isPermaLink="false">1492b23431fe07e33d744fdcf8c823a8</guid>
    </item>
    <item>
      <title>Fully post-quantum OpenVPN w/OpenSSH tunneling</title>
      <link>https://cryptostorm.is/blog/pq-openssh</link>
      <image>https://cryptostorm.is/blog/images/tunnel-upsidedown.jpg</image>
      <description>&lt;h2 data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Table of contents&lt;/h2&gt;
&lt;ol data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; padding: 0px; margin: 0px 0px 1.66667em 1.66667em; list-style: upper-roman; font-size: 18px; font-weight: 400;"&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#I" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;Fully post-quantum OpenVPN w/OpenSSH tunneling&lt;/a&gt;&lt;/li&gt;
&lt;li style="box-sizing: inherit;"&gt;&lt;a href="#II" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; background-color: transparent; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;DNS ad/tracker blocking vulnerability fixed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#III" data-darkreader-inline-color="" data-darkreader-inline-bgcolor="" style="box-sizing: inherit; color: #df003b; text-decoration-line: underline; transition: 0.25s ease-in-out;"&gt;What's next?&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a name="I"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;Fully post-quantum OpenVPN w/OpenSSH tunneling&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;We tweeted this a few weeks ago, but most people probably don't know what this means:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;W&lt;/span&gt;&lt;span style="text-align: center;"&gt;e added support for post-quantum key exchanges to our SSH tunneling/obfuscation.&lt;br&gt;OpenVPN can't do PQ KEX yet, but with this you can add a PQ layer on top of your OpenVPN (TCP) traffic.&lt;br&gt;This requires a recent OpenSSH/OpenSSL version.&lt;br&gt;&lt;/span&gt;&lt;span style="text-align: center;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;So we thought we'd do a quick blog post explaining it.&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;&lt;/span&gt;&lt;span style="text-align: center;"&gt;In &lt;a href="https://cryptostorm.is/blog/pq-openvpn"&gt;https://cryptostorm.is/blog/pq-openvpn&lt;/a&gt; we explain how OpenSSL 3.5.0 allows us to use post-quantum algorithms with OpenVPN, but like it says on that page:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;In these new ML-DSA-87 OpenVPN instances, only authentication is post-quantum. The key exchange and encryption still rely on classical algorithms&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;That means the new ML-DSA-87 instances only protect against quantum impersonation attacks (&lt;a href="https://en.wikipedia.org/wiki/Spoofing_attack" target="_blank" rel="noopener"&gt;spoofing&lt;/a&gt;/&lt;a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack" target="_blank" rel="noopener"&gt;MitM&lt;/a&gt;). To be fully post-quantum, OpenVPN needs to officially add support for post-quantum key exchanges. The key exchange is where the server (and client) agree on which symmetric keys to use to actually encrypt your traffic (AES-256-GCM in our newer ML-DSA-87 instances). &lt;/span&gt;&lt;span style="text-align: center;"&gt;Those keys are rotated every 20 minutes for &lt;a href="https://en.wikipedia.org/wiki/Forward_secrecy" target="_blank" rel="noopener"&gt;perfect forward secrecy&lt;/a&gt;, but they use classical algorithms, so they're still susceptible to quantum attacks. &lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;OpenVPN might not support post-quantum key exchanges yet, but OpenSSH already does (since 2024). &lt;br&gt;In our SSH tunneling server-side config we have this line which tells OpenSSH which key exchange algorithms the server allows:&lt;/span&gt;&lt;/p&gt;
&lt;pre style="overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 14px; line-height: 1.5; padding: 12px; background-color: #1e1e1e; color: #d4d4d4; border: 1px solid #333; border-radius: 6px; word-break: break-word; white-space: nowrap; overflow-x: auto;"&gt;&lt;span style="text-align: center;"&gt;KexAlgorithms &lt;strong&gt;mlkem768x25519-sha256,sntrup761x25519-sha512&lt;/strong&gt;,curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256&lt;/span&gt;&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;Those two at the beginning are the new post-quantum algorithms. You can find more information about sntrup761 or ML-KEM-768 on any search engine.&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;What all this means is that if you use our SSH tunneling feature described on &lt;a href="https://cryptostorm.is/blog/ssh-tunnels"&gt;https://cryptostorm.is/blog/ssh-tunnels&lt;/a&gt; then you can have post-quantum key exchanges in that outer SSH layer that encapsulates/obfuscates your OpenVPN traffic, as long as your OpenSSH or PuTTY version is recent. Even with OpenVPN still partially susceptible to post-quantum attacks, that won't matter because all your traffic will appear to be SSH (because it is), and that encrypted traffic &lt;em&gt;is&lt;/em&gt; using post-quantum algorithms for both key exchange and authentication. &lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;Support for post-quantum key exchanges was added to OpenSSH in 9.9, which &lt;a href="https://www.openssh.com/txt/release-9.9" target="_blank" rel="noopener"&gt;https://www.openssh.com/txt/release-9.9&lt;/a&gt; says was released on 2024-09-19. That means if your OpenSSH version is 9.9 or newer, then you can make use of these post-quantum features in our SSH tunneling. Most Windows users are &lt;/span&gt;&lt;span style="text-align: center;"&gt;probably &lt;/span&gt;&lt;span style="text-align: center;"&gt;going to use PuTTY instead of OpenSSH to start an SSH tunnel (because it's easier), and &lt;/span&gt;according to &lt;a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/ml-kem.html" target="_blank" rel="noopener"&gt;https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/ml-kem.html&lt;/a&gt;, they added post-quantum key exchange support in version 0.83, so if you have that or newer, then you can do a fully post-quantum tunnel.&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;And just a reminder: SSH tunneling on our network only works with the OpenVPN TCP configs. It doesn't work with OpenVPN UDP or WireGuard (yet). Also, with OpenSSH, you can verify that the SSH session is using these new post-quantum algorithms by running the command(s):&lt;/p&gt;
&lt;pre style="overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 14px; line-height: 1.5; padding: 12px; background-color: #1e1e1e; color: #d4d4d4; border: 1px solid #333; border-radius: 6px; word-break: break-word; white-space: nowrap; overflow-x: auto;"&gt;[df@b ~]$ ssh -v -D 127.0.0.1:1080 sshtunnel@paris.cstorm.is 2&amp;gt;&amp;amp;1 | grep "kex: algorithm"&lt;br&gt;debug1: kex: algorithm: mlkem768x25519-sha256&lt;br&gt;sshtunnel@paris.cstorm.is's password:&lt;/pre&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;If you see &lt;strong&gt;mlkem768x25519-sha256&lt;/strong&gt; or &lt;span style="text-align: center;"&gt;&lt;strong&gt;sntrup761x25519-sha512 &lt;/strong&gt;&lt;/span&gt;in that debug1: kex: algorithm: line, then you know it's using a post-quantum algorithm for the key exchange.&lt;/p&gt;
&lt;p&gt;&lt;a name="II"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;DNS ad/tracker blocking vulnerability fixed&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;I ran into this a few weeks ago when I was using an Android phone with the VPN turned on and the &lt;/span&gt;&lt;span style="text-align: center;"&gt;ad/tracker blocking DNS service enabled (see &lt;a href="https://cryptostorm.is/ts"&gt;https://cryptostorm.is/ts&lt;/a&gt;)&lt;/span&gt;&lt;span style="text-align: center;"&gt;. I was using an app that had some of those embedded Google ads, which normally gets blocked by our ad/tracker blocking DNS, but for some reason, a few ads were still getting through occasionally.&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;The problem ended up being a small window (~5 seconds) where ad/tracker hosts weren't being blocked correctly because the PowerDNS Recursor the ad/tracker blocking uses was in the process of restarting, because it has to restart whenever it updates to the latest ad/tracker host lists from &lt;a href="https://github.com/hagezi/dns-blocklists/?tab=readme-ov-file#proplus"&gt;https://github.com/hagezi/dns-blocklists/?tab=readme-ov-file#proplus&lt;/a&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;To close that small window, I changed our current DNS setup of 2 PowerDNS Recursors (one ad/tracker blocking, one unfiltered) so that for the ad/tracker blocking one &lt;a href="https://www.dnsdist.org/index.html" target="_blank" rel="noopener"&gt;dnsdist&lt;/a&gt; is used instead to balance between two separate ad/tracker blocking PowerDNS Recursor instances. The purpose of dnsdist here is that it has the ability to drain all connections from one of those recursors so that they go to the 2nd one, then with no clients using the 1st one, it can safely be restarted. Once it's done, dnsdist does the opposite, it drains all connections to the 2nd one and sends everyone to the 1st one so that the 2nd one can be gracefully restarted. This completely closes that ~5 second window.&lt;/p&gt;
&lt;p&gt;&lt;a name="III"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 style="box-sizing: inherit; clear: both; line-height: 1.2; margin: 1.424em 0px 0.624295em; font-size: 1.75rem; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background-color: #ffffff; text-align: left;"&gt;What's next?&lt;/h2&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;We started working on adding Xray support to the network a few months ago. That will allow our clients to obfuscate their VPN traffic so that it looks like HTTPS traffic, but unlike &lt;a href="https://cryptostorm.is/blog/https-tunnels"&gt;stunnel in our current HTTPS obfuscation&lt;/a&gt; setup, Xray better mimics the HTTPS that a real browser would generate (same &lt;a href="https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/" target="_blank" rel="noopener"&gt;JA3 hashes&lt;/a&gt; and all), and it works with WireGuard (and OpenVPN UDP, and technically OpenVPN TCP too but that would be slow).&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;It's actually implemented on the servers now and tests with &lt;a href="https://github.com/2dust/v2rayN" target="_blank" rel="noopener"&gt;v2rayN&lt;/a&gt; on Windows/Linux/Mac have succeeded, but we haven't announced it yet because we're still testing on mobile devices and something might change later in the server-side setup. &lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;We couldn't find an existing Android Xray app that exposes the specific features of &lt;a href="https://github.com/XTLS/Xray-core" target="_blank" rel="noopener"&gt;https://github.com/XTLS/Xray-core&lt;/a&gt; that we needed (dokodemo-door inbound, reality outbound), so we started working on our own Android app. All the existing apps did a local SOCKS proxy or a full &lt;a href="https://developer.android.com/reference/android/net/VpnService" title="https://developer.android.com/reference/android/net/VpnService" target="_blank" rel="noopener"&gt;VpnService&lt;/a&gt; style VPN, which won't work in our Xray setup. The idea is that the user would have WireGuard already installed and loaded with cryptostorm configs like normal, then they start our app, which starts an xray instance listening on 127.0.0.1:31337 and connects to whichever server they want to connect to. Then once Xray is running, they switch back to the WireGuard app and edit the config for the server they want to connect to (has to be the same as the one they selected in our app), then they change the Endpoint to 127.0.0.1:31337, and they use WireGuard's built-in app exclusion feature to exclude our app from WireGuard's VPN. That app exclusion is required, otherwise a recursive routing loop would occur when WireGuard tries to send our Xray traffic through the VPN.&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;At the moment, it looks something like this (in Android Studio):&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;&lt;img src="data:image/png;base64,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" alt="" width="401" height="739" style="display: block; margin-left: auto; margin-right: auto;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;The core code is pretty much done now, we've got it routing everything correctly, Wireshark/tcpdump show the device is sending out TLSv1.3 "HTTPS" traffic. Now we just need to tweak the UI a bit and clean up some other things that aren't related to Xray (like something that auto-updates the server list, but only after you connect to the VPN). It uses hard-coded IPs since our entry IPs don't change often, and that avoids having to do DNS resolution. There's also a "Custom IP" option in the server list dropdown menu that might be useful to people who want to do their own WireGuard+Xray setup using their own servers. &lt;/span&gt;&lt;/p&gt;
&lt;p style="box-sizing: inherit; margin: 0px 0px 1.66667em; color: #1f1f1f; font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;"&gt;&lt;span style="text-align: center;"&gt;We're probably still a month or two away from releasing this though. Of course, we plan on releasing the source code once it's finished.&lt;/span&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 11 Aug 2025 00:27:50 -0500</pubDate>
      <guid isPermaLink="false">bed104eaf31852f410c92b045468b85f</guid>
    </item>
  </channel>
</rss>
