<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="https://amrosia.dev/feed_style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <tabi:metadata xmlns:tabi="https://github.com/welpo/tabi">
        <tabi:base_url>https:&#x2F;&#x2F;amrosia.dev</tabi:base_url>
        <tabi:separator>
            •
        </tabi:separator>
        <tabi:about_feeds>This is a web feed, also known as an Atom feed. Subscribe by copying the URL from the address bar into your newsreader. Visit About Feeds to learn more and get started. It&#x27;s free.</tabi:about_feeds>
        <tabi:visit_the_site>Visit website</tabi:visit_the_site>
        <tabi:recent_posts>Recent posts</tabi:recent_posts>
        <tabi:last_updated_on>Updated on $DATE</tabi:last_updated_on>
        <tabi:default_theme>dark</tabi:default_theme>
        <tabi:post_listing_date>date</tabi:post_listing_date>
        <tabi:current_section>networking</tabi:current_section>
    </tabi:metadata><link rel="extra-stylesheet" href="https://amrosia.dev/skins/teal.css?h=bd19e558a52d678a50de" /><title>Segfault diaries - networking</title>
        <subtitle>Welcome to my blog!</subtitle>
    <link href="https://amrosia.dev/tags/networking/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://amrosia.dev/tags/networking/" rel="alternate" type="text/html"/>
    <generator uri="https://www.getzola.org/">Zola</generator><updated>2026-07-26T00:00:00+00:00</updated><id>https://amrosia.dev/tags/networking/atom.xml</id><entry xml:lang="en">
        <title>ISPs hate this simple trick!</title>
        <published>2026-07-26T00:00:00+00:00</published>
        <updated>2026-07-26T00:00:00+00:00</updated>
        <author>
            <name>amrosia</name>
        </author>
        <link rel="alternate" href="https://amrosia.dev/blog/isps-hate-this-simple-trick/" type="text/html"/>
        <id>https://amrosia.dev/blog/isps-hate-this-simple-trick/</id>
        
            <content type="html">&lt;p&gt;ISPs often throttle or block the hotspot feature on phones with unlimited data plans. Share your connection and it gets cut off unless you pay for an upsell.&lt;&#x2F;p&gt;
&lt;p&gt;You don’t have to.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;how-isps-detect-tethering&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#how-isps-detect-tethering&quot; aria-label=&quot;Anchor link for: how-isps-detect-tethering&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
How ISPs detect tethering&lt;&#x2F;h2&gt;
&lt;p&gt;ISPs determine whether a packet came directly from the phone or from a tethered device by checking the &lt;strong&gt;TTL (Time To Live)&lt;&#x2F;strong&gt; value.&lt;&#x2F;p&gt;
&lt;p&gt;TTL is a counter in every IP packet that decreases by 1 each time it passes through a router. Its primary purpose is to prevent infinite routing loops, but it also leaks information about how many hops a packet has taken.&lt;&#x2F;p&gt;
&lt;p&gt;Different operating systems set different default TTL values:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;OS &#x2F; Device&lt;&#x2F;th&gt;&lt;th&gt;Default TTL&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Linux&lt;&#x2F;td&gt;&lt;td&gt;64&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Windows&lt;&#x2F;td&gt;&lt;td&gt;128&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;macOS&lt;&#x2F;td&gt;&lt;td&gt;64&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Android &#x2F; iOS&lt;&#x2F;td&gt;&lt;td&gt;64&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Phones send packets with TTL 64. By the time they reach the ISP, one hop has reduced it to 63 — that’s what the ISP expects from the phone.&lt;&#x2F;p&gt;
&lt;p&gt;Now plug a laptop into the phone’s hotspot. The laptop sends a packet with TTL 64. When it passes through the phone’s router (hotspot), it gets decremented to 63. Then the hop from phone to ISP decrements it again to 62.&lt;&#x2F;p&gt;
&lt;p&gt;The ISP saw TTL 62, not TTL 63. It knows this traffic didn’t originate on the phone. Blocked.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;ttl-bypass&#x2F;blocked.gif&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-fix&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#the-fix&quot; aria-label=&quot;Anchor link for: the-fix&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
The fix&lt;&#x2F;h2&gt;
&lt;p&gt;The fix is straightforward. Set the TTL on your tethered device to &lt;strong&gt;65&lt;&#x2F;strong&gt; instead of 64. The phone decrements it to 64 when forwarding, then the ISP’s first router decrements it to 63 — matching the phone’s own traffic exactly.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;ttl-bypass&#x2F;fix.gif&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;windows&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#windows&quot; aria-label=&quot;Anchor link for: windows&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Windows&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code data-lang=&quot;cmd&quot;&gt;netsh interface ipv4 set global defaultcurhoplimit=65
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;linux&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#linux&quot; aria-label=&quot;Anchor link for: linux&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Linux&lt;&#x2F;h3&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;echo &amp;quot;net.ipv4.ip_default_ttl = 65&amp;quot; | sudo tee -a &#x2F;etc&#x2F;sysctl.conf
sudo sysctl -p
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Both settings persist across reboots.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-about-phones&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#what-about-phones&quot; aria-label=&quot;Anchor link for: what-about-phones&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
What about phones?&lt;&#x2F;h2&gt;
&lt;p&gt;Most phone manufacturers lock down root access, so you can’t change the TTL on the phone itself. If you need to share from a phone you can’t root, use an intermediate device you do control:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;[Your devices] → PC&#x2F;Raspberry Pi hotspot → PC (TTL rewritten to 65) → Phone hotspot → ISP
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The PC connects to the phone’s hotspot as a client and simultaneously serves its own hotspot. It forwards packets between the two interfaces, rewriting TTL to 65 before sending them out to the phone. This way the phone never sees a TTL it wouldn’t generate itself.&lt;&#x2F;p&gt;
</content>
        <summary type="html">ISPs often throttle or block the hotspot feature on phones with unlimited data plans. Share your connection and it gets cut off unless you pay for an upsell.
You don’t have to…</summary>
        </entry>
</feed>
