I should be able to have a router with a ipv4 network and multiple ipv6 networks without losing access to the ip4 network. The ip6 network should be reachable via port natting on the ip4 IP
I.E I have three networks on my router, two on ipv6
1000:2000:3000:4001::1/64
1000:2000:3000:4002::1/64
192.168.0.1/24
the ipv6 only server on
1000:2000:3000:4001::10
should cope with sending a packet to
1000:2000:3000:4002::10
By routing it via the router
It should also transparently convert a target of 192.168.0.3 to ::ffff:c0a8:3 and send via the gateay.
The router should then convert it to 192.168.0.3, with a source of 192.168.0.1, and maintaining a NAT state so return traffic goes back to 1000:2000:3000:4001::10
If there's a service that 1000:2000:3000:4001::10 needs to expose, the router can do a dst-nat on say 192.168.0.1 port 80 and forward to 1000:2000:3000:4001::10 port 80
That way you can comfortably deploy ipv6 wherever possible and not have to worry about ipv4 other than at the router, where you just have the ipv4 subnet
Likewise my ipv6 network can reach 209.216.230.240 by running ipv6 across my network until it comes to a device with an ipv4 address, where it gets natted. Just like it runs across my private rfc19xx ipv4 range before srcnatting at the edge of my network.
IPv6 works best when all addresses are globally routable (whether firewalled off or not). We're all so used to RFC1918 that we forget it was an ugly kludge that fundamentally broke how the internet was meant to work. IPv6 is the fix for that breakage: the address of every individual device can actually mean the same thing everywhere on the internet, as it was meant to be. L3 routing can be stateless again.
The primary intent of IPv6 is to replace IPv4, not coexist with it. Coexistence is transitory and not worth optimizing for over the future of the internet when V4 is dead.
As for nat being a cludge, lets assume I have a simple small office network with two independent ISPs. Normally I want to send half my users out of ISP1 and half out of ISP2.
If ISP2 fails, I want to send them all out of ISP1, OK there's less bandwidth to go round, but better than having no bandwidth for half my users.
How do I do that with ipv6 without natting (assuming I'm not large enough to be running my own AS and peering with two different providers)
I don't have easy access to multiple V6-PD enabled providers to test this theory, and as someone with quite the neck beard I really don't know how I feel about ceeding this level of control to endpoints. But also, I'm not sure I hate it either.
Oh and don't forget link-local and a ula prefix for your local addressing requirements for pinters and whatnot that shouldn't be using dynamic discovery.
That basically doesn't work with real clients. They'll do dumb stuff like use address from provider A to send through the router advertising addresses from provider B. And take forever to do anything in response to prefixes that are advertised as no longer usable or simply no longer advertised.
V6 devices are expected to understand that and do the right thing, but Windows (10) doesn't, Linux was worse, and I don't remember what Android did and I didn't get around to testing FreeBSD, and that's all the OSes I have.
If you've got experience otherwise, I'd love to know, one of these days I need to setup IPv6 again, but what I'd really like to do is too much work, so I'm IPv4 only for the foreseeable future.
The notion that every endpoint has a globally unique address, with prefixes coming down from some upstream provider is just fundamentally incompatible with how IPv4 networks are designed today.