Setting the IPv6 TTL/Hop Limit on FreeBSD


My current wireless service is T-Mobile and I use a unlocked (Google Store edition) Google Pixel 3 running LineageOS. I am a heavy user of tethering, and unlike Sprint (switched pre-merger), T-Mobile checks for the TTL to count for hotspot bandwidth if TTL<=64 (can be bypassed with TTL=65 on a laptop).

My personal laptop happens to run FreeBSD, so I initially thought that setting net.inet.ip.ttl sets both the IPv4 and IPv6 TTL, since at the time I didn’t see a net.inet6.ip6.ttl. Then I got a text that I used 80% of my 3GB hotspot.

Looking further, traceroutes showed that while IPv4 had a TTL of 65, IPv6 had a TTL of 64.

Reading the IPv6 man page, there is a sysctl for IPv6 TTL limit, but it is called “hop limit” instead.

The IPv6 TTL/“hop limit” sysctl is: net.inet6.ip6.hlim.

If you want to bypass the IPv6 hotspot limt (or set the IPv6 TTL), you can add:

net.inet6.ip6.hlim=65

To /etc/sysctl.conf. You can also run:

sysctl net.inet6.ip6.hlim=65

To change the IPv6 TTL on the running system.

Change 65 to whatever you desire, however 65 is good for bypassing tethering limits.

Keep in mind that you still need to set net.inet.ip.ttl for the IPv4 TTL.