Strolling through Akihabara and getting a global IPv6 address with Starlink + OpenWrt

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hello, I'm Munou.

I finally got a global IP address using Starlink's Bypass mode, something I've been procrastinating on for a long time____.

Strolling through Akihabara

I stopped by a few junk shops, but didn't find anything noteworthy, so I just wandered around.

SSD prices have gone up, haven't they? Since I collect junk PCs, I have dozens of SSDs in the hundreds of GiB range, so I don't need any right now, but I regret not buying TB-class SSDs when they were cheap.

I guess the high semiconductor prices are continuing.

8bf63b43e1b56c78

cd7d763f2e3c1dfc

88bfa08b05b057f8

And then, I thought this might be cheap...

a23ec3f83c3f8d11

Oh?

I looked it up and found:

  • Qualcomm IPQ5018 2Core

  • RAM 512MB

It's a relatively recent model, but it seems to support OpenWrt.
[OpenWrt Wiki] Techdata: Linksys MX2000

I don't really know much about router SoCs anymore, but I figured 2 cores is fine... just going with the flow.
There aren't many routers under 10,000 yen that can run OpenWrt and have 512MB of RAM, so I bought it.

Linksys MX2000

23168c31b4b96c74

e13eeaf0cd541987

Small and cute. It has four RJ45 terminals: three LAN ports and one WAN port.
So, I'm flashing OpenWrt. I was grateful for this article as it summarized everything very simply.
Linksys MX2000 - OpenWrt

I flashed the image from the latest OpenWrt Wiki.
As for writing the sysupgrade image, I simply uploaded and flashed it from the LuCI WebUI.

I did the following to complete the basic setup:

  • Allow SSH only with public keys

  • Deny SSH from the WAN side

  • Tweaked the kernel parameters a bit

  • Re-enabled and configured the Wi-Fi, which was disabled by default

  • Enabled irqbalance

etc.

I had confirmed that there would be plenty of memory headroom with FreeBSD, so the usage was about as expected.

~# free -h
              total        used        free      shared  buff/cache   available
Mem:         442860      203588      180296        2224       58976      186768
Swap:             0           0           0

Once this was done, the minimum setup was complete, so I connected it to the Starlink side, enabled Bypass mode to disable Starlink's router functions, and set it up to use another router—in this case, the MX2000 OpenWrt router.

Distributing IPv6 Addresses

I know IPv4 is impossible due to CGNAT shared addresses, so I won't bother with it.

/etc/config/network

~~omitted~~
config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        list ipaddr '192.168.1.1/24'
        option ip6assign '64'

~~omitted~~
config interface 'wan6'
        option device 'wan'
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'

Now, just check the IPv6 address on the client side as well using the following:

ip -6 addr

I tested it by allowing an HTTP page on a specific port via the IPv6 address on the OpenWrt side, and it worked, so that's it.

The rest is to periodically announce this router's IP address, link it to an AAAA record, and set up a WireGuard server.
This way, for the WireGuard client's server endpoint, you just need to specify the domain linked to the AAAA record to connect to your home WireGuard server.

The benefit of this is that I don't have to worry about bandwidth limits. I currently have a WireGuard server hosted on ConoHa, but the bandwidth is limited to a maximum of 100Mbps. Since it's a Starlink connection, there's no longer a noticeable speed difference anyway...

Actually, the installation was easier than I thought, and I found the operations via the WebUI to be quite easy to perform.
I now understand a bit better why people go out of their way to buy an OpenWrt-compatible router to flash it, rather than just flashing OpenWrt to extend the life of an old router.

Related Posts