I have set up my web server on my home PC used to return its client's public ip/port for TCP hole punching. As I tested, All port returned from each request(I bind socket to the same port on each request) is the same port number. So I can do hole punching without any problem.
But after I deployed the web on the my hosting server which is on the different ISP(Hosting server is in USA, The client is in Asia). When I request to web, It always return the different port on each request, and I cannot do hole punching anymore. However, while the port is kind of random, the returned ip address is correct.
Seem like some channel in the route between Asia and USA change my source port? Is there any solution for this ?