Is there a way to host a TS3 server in a machine/network with most ports closed (the ISP wont open for me) and let people from internet to connect to my server? If yes, how?
When needed port is closed, then it is closed.
There is no gray zone for that topic.
But you could change the voice port 9987 (UDP) to another one.
Use these commands in the Query Interface
login serveradmin yourpassword serverstop sid=1 use sid=1 -virtual serveredit virtualserver_port=9988 use sid=0 serverstart sid=1
You could change the voice port (and the file transfer port) as Chris said.
An alternative would be using a network bridge/tunnel, like Hamachi. It is also possible to manually set up something like this through SSH tunneling, but that’s not easy.
It would require anyone wanting to connect to set up this service; specifically, Hamachi has some problems of its own.
Changing ports is certainly the cleaner solution, but I just wanted to point out other options.