<p>I created two sample application(tcp-server and tcp-client) for checking TCP connection in istio environment. Used the below link to create server and client in g0</p>
<p><a href="https://www.linode.com/docs/guides/developing-udp-and-tcp-clients-and-servers-in-go/" rel="nofollow noreferrer">https://www.linode.com/docs/guides/developing-udp-and-tcp-clients-and-servers-in-go/</a></p>
<p>Deployed the application in kubernetes cluster and tested without istio, it is working fine.</p>
<p>But after installing istio(demo configuration, followed this url to install istio: <a href="https://istio.io/latest/docs/setup/getting-started/" rel="nofollow noreferrer">https://istio.io/latest/docs/setup/getting-started/</a>),
and redeploying the apps to fill with envoy-proxy, the client is not connecting to server</p>
<p>Also using below command makes the server connect success</p>
<pre><code>sh -c &quot;echo world | nc 10.244.1.29 1234&quot; is 
</code></pre>
<p>What am I doing wrong?</p>

<p>Posting the solution I found.</p>
<p>Issue: I was trying to connect to server using ip address and nodePort, which some how not working in istio environment</p>
<p>Solution: From Client instead of providing ip address and nodePort of server node, give service name and container port of server app.</p>
<p>Extra Info: For using client from outside cluster, create gateway and virtual service for server. In your external client provide nodePort and ip address of istio-ingress pod as server destination</p>
