Docker abuses IPv4 NAT to create a private network for containers. Ports opened by containers are by default not available from the public internet and need to be mapped/forwarded explicitly.
When IPv6 is enabled for Docker, all of that goes out of the window and what's worse is that there is NO indication about this at all to the user.
Docker should use a stateful packet filter to mirror a similar setup with IPv6, i.e.:
- Block access to Docker's IPv6 network from the outside world by default
- Port numbers explicitly configured as exposed by a container can then be used to let through traffic to specific IP/port combinations to containers
- There should probably be an option to fully expose a container if that is desired
Of course there are some limitations as well: as there is no NAT, there is no way to remap ports. But that should not a serious issue in practice because after all every container gets its own address.
Docker abuses IPv4 NAT to create a private network for containers. Ports opened by containers are by default not available from the public internet and need to be mapped/forwarded explicitly.
When IPv6 is enabled for Docker, all of that goes out of the window and what's worse is that there is NO indication about this at all to the user.
Docker should use a stateful packet filter to mirror a similar setup with IPv6, i.e.:
Of course there are some limitations as well: as there is no NAT, there is no way to remap ports. But that should not a serious issue in practice because after all every container gets its own address.