OK, issue is the ipv6 support. If ipv6 is disabled, and I call with an ipv6, ClientHost is the gateway not the true IP. To fix that:
networks:
frontend:
enable_ipv6: true
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
- subnet: 2001:db8:2::/64