In 2026 T-Mobile gives me an IPv6 /64 without prefix delegation

bradpeabody1 pts0 comments

GitHub - bradleypeabody/myispsucksv6: Linux daemon to fix missing IPv6 prefix delegation for certain ISPs (e.g. certain Tea-Mobile and Etientee services) · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

bradleypeabody

myispsucksv6

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>3 Commits<br>3 Commits

cmd/myispsucksv6

cmd/myispsucksv6

examples

examples

internal

internal

.gitignore

.gitignore

DOC.md

DOC.md

LICENSE

LICENSE

README.md

README.md

SCOPE.md

SCOPE.md

go.mod

go.mod

go.sum

go.sum

View all files

Repository files navigation

myispsucksv6

IPv6 has been a standard for over 25 years. DHCPv6 prefix delegation has been an RFC since 2003. And yet here we are — major US carriers handing out a single /64 via SLAAC and calling it a day, as if nobody behind their gateway might want to actually route packets. This tool exists because some of us refuse to NAT our way out of a problem that shouldn't exist.

myispsucksv6 is an NDP proxy daemon with dynamic prefix tracking for home routers behind ISPs that assign IPv6 via SLAAC but don't offer DHCPv6 prefix delegation (T-Mobile Home Internet, AT&T Internet Air, Verizon 5G Home, etc.).

The problem

Some ISPs give a single /64 on your WAN interface via SLAAC. You have a Linux router between the modem and your LAN. You want LAN clients to get real, routable IPv6 addresses — no NAT — but the ISP prefix changes over time and the prefix can't be delegated.

The existing tool for this is ndppd, which proxies NDP so your upstream gateway believes your LAN devices live on the WAN interface. It works, but it assumes a static prefix. When T-Mobile renumbers you, everything breaks until you manually reconfigure ndppd, your router's LAN address, and your RA daemon.

myispsucksv6 fixes that.

The right solution is for carriers to offer DHCPv6 prefix delegation — sadly, some simply don't, for no good reason anyone has been able to explain.

What it does

Watches the upstream interface for global IPv6 prefix changes via netlink

Automatically updates its NDP proxy rules when the prefix changes

Assigns/updates the router's own address on the LAN interface (::1)

Sends Router Advertisements (with Prefix Information and RDNSS) on LAN interfaces — no radvd or dnsmasq RA config needed

Fires optional hook scripts on prefix change (for nftables reload, etc.)

What it does not do: run DHCPv6, or touch your firewall.

Quick start

1. Build and install

Requires Go 1.22+:

git clone https://github.com/bradleypeabody/myispsucksv6<br>cd myispsucksv6<br>mkdir -p bin<br>go build -o bin/myispsucksv6 ./cmd/myispsucksv6<br>install -m 755 bin/myispsucksv6 /usr/local/bin/myispsucksv6

2. Configure

cp examples/myispsucksv6.jsonc /etc/myispsucksv6.jsonc

Edit /etc/myispsucksv6.jsonc and set your interface names:

"global": {<br>"log_level": "info"<br>},<br>"upstream": [<br>"interface": "enp1s0", // WAN interface — change this<br>"debounce_seconds": 5,<br>"proxy": [<br>"to_interface": "enp2s0", // LAN interface — change this<br>"lan_host_suffix": "::1"

This tells myispsucksv6 to:

Watch enp1s0 for a global unicast IPv6 prefix

Proxy NDP from enp1s0 to/from enp2s0

Keep ::1 on enp2s0

Send Router Advertisements on enp2s0 so LAN clients auto-configure via SLAAC

3. Install the systemd unit

cp examples/myispsucksv6.service /etc/systemd/system/<br>systemctl daemon-reload<br>systemctl enable --now myispsucksv6

Check that it's running:

systemctl status myispsucksv6<br>journalctl -u myispsucksv6 -f

That's it. LAN clients should start receiving Router Advertisements and configuring IPv6 addresses within a few seconds.

Troubleshooting

LAN clients aren't getting IPv6 addresses.

Check that the upstream interface has a global unicast address:

ip -6 addr show dev enp1s0 scope global

If it only shows scope link, your ISP hasn't assigned a prefix yet — check your WAN connection.

NDP proxy isn't responding to Neighbor Solicitations.

Check the daemon has the capabilities it needs:

journalctl -u myispsucksv6 | grep -i...

myispsucksv6 prefix ipv6 interface router delegation

Related Articles