Multiple headless services pointing at same ip across different namespaces, istio proxy picks random one

I have a bunch of headless services in different namespaces pointing at an external ip.

If I curl the service name from a namespace with the fqdn of the service in that namespace, istio-proxy gives a log which indicates that it is in fact using a completely different service, i.e. I might be in ns1 and do

curl s.ns1.svc.cluster.local

But in istio-proxy, I’ll see logs indicating it went to s.ns2.svc.cluster.local.

In fact, if I curl the external ip directly, it still manages to produces a log for s.ns2.svc.cluster.local.

Is this as expected? It is creating a problem for me, because I have a destination rule in each namespace which handles requests from things inside that namespace, to the service defined in that namespace, i.e. I have a destination rule in ns1 which would handle requests to s.ns1.svc.cluster.local but as my requests go to s.ns2.svc.cluster.local, they do nothing.