I am trying to get some basic IPv6 connectivity working with Docker Toolbox and VirtualBox.
I add the following arguments when the VM is created:
--engine-opt ipv6=true \
--engine-opt fixed-cidr-v6="d0c::/64" \
I add the following to bootlocal.sh on the VM: ip -6 addr add F00:FACE::101/64 dev eth1
I edit the VirtualBox Adapter on Windows and add an IPv6 address: F00:FACE::100
I observe the following:
- I can ping F00:FACE::100 from the VM
- I can ping F00:FACE::101 from Windows
I launch a Docker container based on ubuntu and install various packages.
Now I observe the following:
I can ping6 F00:FACE::101 (VM) from the container
I can ping 192.168.99.1 (Windows) from the container.
I CANNOT ping6 F00:FACE::100 (Windows) from the container
In Wireshark I can see that the source address of ipv4 pings is 192.168.99.100.
But interestingly I see that the source address of ipv6 pings is d0c::242:ac11:2 – my container’s IP address.
Is there something required in iptables to get this to work?
Is the problem that Windows doesn’t know how to route a response back to d0c::242:ac11:2?
Update: I do the following on Windows:
netsh interface ipv6 add route d0c::/64 26 F00:FACE::101
I can now access Windows from inside a container. Is it necessary to do this? Or is there some IP masquerade that should be going on. Seems I don’t have to do this for IPv4.
Thanks for any help!