Skip to content

HOWTO on Route64 for IPv6 TunnelBroker set up#1147

Open
pljones wants to merge 1 commit into
jamulussoftware:next-releasefrom
pljones:route64-ipv6-setup
Open

HOWTO on Route64 for IPv6 TunnelBroker set up#1147
pljones wants to merge 1 commit into
jamulussoftware:next-releasefrom
pljones:route64-ipv6-setup

Conversation

@pljones

@pljones pljones commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Short description of changes

Provides a step by step guide to setting up an IPv6 tunnel into an IPv4 only host.

Context: Fixes an issue? Related issues

Adds a Knowledge Base article.

Status of this Pull Request

Still working on the last hop.

All working now.

What is missing until this pull request can be merged?

Inbound isn't working yet.

All working now. Guide field-tested by @dtinth - thanks!

Does this need translation?

No translation for Knowledge Base.

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I'm sure that this Pull Request goes to the correct branch

Comment thread wiki/en-no-translate/route64-ipv6-setup.md Outdated
Comment thread wiki/en-no-translate/route64-ipv6-setup.md Outdated
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
@pljones pljones force-pushed the route64-ipv6-setup branch 2 times, most recently from 06a493d to f1ab34b Compare June 7, 2026 16:49
@pljones

pljones commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

I stuck the Affero licence on when I was about to put this in jamulussoftware/jamulus docs/ -- do we license the wiki differently? (I'm happy with a CC BY-SA 4.0)

@pljones pljones force-pushed the route64-ipv6-setup branch from f1ab34b to 0e52cc3 Compare June 7, 2026 17:00
@ann0see

ann0see commented Jun 7, 2026

Copy link
Copy Markdown
Member

I think it's some CC license: https://creativecommons.org/licenses/by-sa/4.0/deed.en

@pljones pljones force-pushed the route64-ipv6-setup branch 2 times, most recently from 4196949 to 49ea4f3 Compare June 7, 2026 17:13
@pljones

pljones commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

We might want to make the Wiki licence more clearly explained -- the link for "I've verified that this Pull Request follows the general code principles" goes to the jamulussoftware/jamulus contribution guidelines, which don't really talk about the Wiki.

@pljones pljones marked this pull request as ready for review June 7, 2026 17:16
@pljones pljones force-pushed the route64-ipv6-setup branch from 49ea4f3 to 111f45d Compare June 7, 2026 17:21

@ann0see ann0see left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH - it looks more like a better fit for the knowledgebase to me. This means it should be put into the _posts folder

@pljones

pljones commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

Ah! OK, I'll git mv it.

  • Done.

@pljones pljones force-pushed the route64-ipv6-setup branch from 111f45d to 444fc9c Compare June 7, 2026 17:36

@ann0see ann0see left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a header like in the other files

---
layout: post
title: "..."
heading: "..."
author: "pljones"
lang: "en"
---

Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
@pljones pljones force-pushed the route64-ipv6-setup branch 3 times, most recently from 22512e6 to 505cdaa Compare June 9, 2026 18:00
@pljones

pljones commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

https://jamuluswebsite.drealm.info/kb/index.html has the preview of the rendered site.

@pljones pljones force-pushed the route64-ipv6-setup branch 2 times, most recently from 5eb9a9c to 3654f34 Compare June 9, 2026 18:17
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md Outdated
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md
Comment thread _posts/2026-06-07-Route64-IPv6-Setup.md
@pljones pljones force-pushed the route64-ipv6-setup branch from 3654f34 to 48c7a6b Compare June 9, 2026 18:37

## 3. Check Your Router/Modem

The following presumes you currently have _no existing IPv6 usage on your LAN_

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The following presumes you currently have _no existing IPv6 usage on your LAN_
This section presumes you currently have _no existing IPv6 usage on your LAN_

```
If you see RAs from anything other than your server, disable IPv6 on the router.

- **Firewall** — ensure the router passes through UDP on the Wireguard port

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Firewall** — ensure the router passes through UDP on the Wireguard port
- **Firewall** — ensure the router passes UDP traffic through on the Wireguard port

I'm not sure what this means. How does a router pass through UDP?


## 7. Suppress SLAAC Address on the Server

The server will autoconfigure an EUI-64 address from the RA it sends to the LAN.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The server will autoconfigure an EUI-64 address from the RA it sends to the LAN.
The server will autoconfigure an EUI-64 address using the RA it sends to the LAN.

(I don't know anything about this topic.)

## 7. Suppress SLAAC Address on the Server

The server will autoconfigure an EUI-64 address from the RA it sends to the LAN.
This causes source address selection problems (services reply from the wrong address).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This causes source address selection problems (services reply from the wrong address).
This causes problems when selecting source addresses, because services reply from the wrong address.

sudo systemctl enable nftables
```
You probably want to get familiar with the content of `/etc/nftables.conf`.
I find it vastly easier to edit the file and reload the service than to use `nft` commands for ongoing maintenance.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
I find it vastly easier to edit the file and reload the service than to use `nft` commands for ongoing maintenance.
For ongoing maintenance, I find it much easier to edit the file and reload the service than to use `nft` commands.

```
You probably want to get familiar with the content of `/etc/nftables.conf`.
I find it vastly easier to edit the file and reload the service than to use `nft` commands for ongoing maintenance.
In fact, I keep a copy under version control then copy it over the original when I commit.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In fact, I keep a copy under version control then copy it over the original when I commit.
In fact, I keep a copy under version control and copy it over the original when I commit.

You probably want to get familiar with the content of `/etc/nftables.conf`.
I find it vastly easier to edit the file and reload the service than to use `nft` commands for ongoing maintenance.
In fact, I keep a copy under version control then copy it over the original when I commit.
So long as I avoid completely locking myself out with a bad ruleset, this works well for me.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
So long as I avoid completely locking myself out with a bad ruleset, this works well for me.
This works well so long as I avoid locking myself out with a bad ruleset.

I find it vastly easier to edit the file and reload the service than to use `nft` commands for ongoing maintenance.
In fact, I keep a copy under version control then copy it over the original when I commit.
So long as I avoid completely locking myself out with a bad ruleset, this works well for me.
(Remember to check the ruleset with `sudo nft -c list ruleset` before applying, to catch syntax errors and

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
(Remember to check the ruleset with `sudo nft -c list ruleset` before applying, to catch syntax errors and
(Always enter `sudo nft -c list ruleset` to check the ruleset before applying, to catch syntax errors and

to not set a default IPv6 route
- `MinRtrAdvInterval 5` / `MaxRtrAdvInterval 10` — send RAs frequently enough that
clients don't lose their default route between advertisements
- `RDNSS` — provides IPv6 DNS servers; without this Android won't use IPv6 for name resolution

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `RDNSS` — provides IPv6 DNS servers; without this Android won't use IPv6 for name resolution
- `RDNSS` — provides IPv6 DNS servers; without this Android won't use IPv6 for name resolution.

- `AdvDefaultLifetime 1800` — critical for Android; too short a lifetime causes Android
to not set a default IPv6 route
- `MinRtrAdvInterval 5` / `MaxRtrAdvInterval 10` — send RAs frequently enough that
clients don't lose their default route between advertisements

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
clients don't lose their default route between advertisements
clients don't lose their default route between advertisements.

```

Notes:
- `AdvDefaultLifetime 1800` — critical for Android; too short a lifetime causes Android

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `AdvDefaultLifetime 1800` — critical for Android; too short a lifetime causes Android
- `AdvDefaultLifetime 1800` — critical for Android! If the lifetime is too short, Android won't set a default IPv6 route.

- Ensure `AdvDefaultLifetime` is at least 1800 in radvd.conf
- Ensure the router/modem is NOT sending Router Advertisements
(check with `sudo tcpdump -i en0 -v "icmp6 and dst ff02::1"`)
- Toggle WiFi off/on on the phone after changing radvd config

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Toggle WiFi off/on on the phone after changing radvd config
- Toggle WiFi off/on on the phone after changing radvd config.


### Android not getting default IPv6 route
- Ensure `AdvDefaultLifetime` is at least 1800 in radvd.conf
- Ensure the router/modem is NOT sending Router Advertisements

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ensure the router/modem is NOT sending Router Advertisements
- Ensure the router/modem is NOT sending Router Advertisements.

Check the FORWARD chain allows `en0 → wg0`.

### Android not getting default IPv6 route
- Ensure `AdvDefaultLifetime` is at least 1800 in radvd.conf

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ensure `AdvDefaultLifetime` is at least 1800 in radvd.conf
- Ensure `AdvDefaultLifetime` is at least 1800 in radvd.conf.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants