docker 容器的 IPv6 数据包似乎来自 docker 网络网关的 IPv4

IPv6 packets to docker container appear to come from IPv4 of docker network gateway

我在 Docker 容器中有一个 HTTP 服务器 运行。我需要能够在此容器中记录请求,包括它们的源 IP,但所有通过 IPv6 的数据包似乎都来自 Docker 网络网关的 IPv4 地址。

这最初是有道理的,因为 Docker 网络没有启用 IPv6,所以我假设 Docker 自动转换为 IPv4,但在网络上启用 IPv6 后,我看不到任何变化。这可能意味着我配置有误,但我似乎无法弄清楚。

我的网络配置如下(Portainer创建):

    {
        "Name": "aais",
        "Id": "2823152591e7f437244623ba46f66aff7eacba2e92942fbcf681f2f145fff783",
        "Created": "2021-01-11T21:52:27.632515156Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                },
                {
                    "Subnet": "fd00:1255:2111::/48",
                    "Gateway": "fd00:1255:2111::1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "6931497b76e36992c1ec9d2c6fadf4ed8492f8d7dd1bb4b01b2796f0e5204969": {
                "Name": "caddy",
                "EndpointID": "be6bb2824a3f7c5ddb73ec45c5b37d7c439a461a65d00759e7eab68edb49548c",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": "fd00:1255:2111::2/48"
            }
        },
        "Options": {
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "false",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

我最终使用了一个半临时解决方案,即:

https://github.com/robbertkl/docker-ipv6nat

这使得在 docker 中配置 IPv6 变得更加简单。然而,类似的功能预计很快就会出现 Docker,正如跟踪者:

所以这应该是任何未来用户的首选解决方案。