However, in my container (an https server) I see the source IP as [fd00:6a4f:a007:15da::1]. However, I would expect to see the actual source IP since “masq=false”. This works fine in IPv4 but appears to be broken in IPv6.
To close this out, there is some good background on userland-proxy at [1], which is the the service that handles port forwards to containers. Basically it masks the remote IP in several cases, including the case where incoming traffic is DNAT’d into the port forward. This was my case.
To work around this, simply DNAT to the container IP and port, ignoring the port forward. This can make it a little more complex to have to look up the container IP and write the ip6tables rule, but it preserves the remote IP.