Skip to content

add optional IPv6 egress via NAT66 (NETWORK_IPV6=nat)#12

Open
brett wants to merge 1 commit into
pigmonkey:masterfrom
brett:feat/optional-ipv6
Open

add optional IPv6 egress via NAT66 (NETWORK_IPV6=nat)#12
brett wants to merge 1 commit into
pigmonkey:masterfrom
brett:feat/optional-ipv6

Conversation

@brett

@brett brett commented Jul 10, 2026

Copy link
Copy Markdown
Contributor
  • Adds opt-in IPv6 egress: set NETWORK_IPV6=nat in a Migrantfile to give the VM a ULA that the host masquerades to its own IPv6 uplink, mirroring the existing IPv4 NAT.
  • Off by default: without NETWORK_IPV6=nat the VM's IPv6 is still dropped at the FORWARD chain, so nothing changes for existing VMs.
  • Network isolation still applies over IPv6: with NETWORK_ISOLATION on (the default), the VM reaches the internet but not the host or LAN.
  • Refused alongside WireGuard: fwmark policy routing is IPv4-only, so IPv6 would bypass the tunnel — the combination is rejected at startup.
  • Permits ICMPv6 on virbr-migrant so neighbor discovery to the ULA gateway works; without it NAT66 reply traffic dies on host firewalls that accept ICMPv6 only from fe80::/10.
  • migrant ip -6 and migrant status surface the VM's IPv6 (ULA) address, read best-effort from the DHCPv6 lease.
  • Existing installs must recreate the migrant network to gain the IPv6 subnet — documented in the README with a migration walkthrough.

Add an opt-in IPv6 path for VMs. By default a migrant VM still has no
routable IPv6 (dropped at the FORWARD chain); setting NETWORK_IPV6=nat in
a Migrantfile gives the guest a ULA and masquerades it to the host's IPv6
uplink, mirroring the IPv4 NAT. Network isolation still blocks the host
and LAN over IPv6.

- migrant ip -6 and migrant status surface the VM's IPv6 (ULA) address
- refused alongside WireGuard (fwmark routing is IPv4-only, so IPv6 would
  bypass the tunnel)
- NETWORK_IPV6 is validated to nat/off; sample Migrantfiles set off
@brett brett changed the title Optional IPv6 egress via NAT66 (NETWORK_IPV6=nat) add optional IPv6 egress via NAT66 (NETWORK_IPV6=nat) Jul 10, 2026
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.

1 participant