|Your server should be behind your firewall with a statically assigned LAN IP address. If your public IP (as provided by your ISP) is dynamic, then you have to check it regularly to see if/when it changes.|
I'm running a TeamSpeak server for myself and a couple friends that I game with. We use it to connect and chat while we're gaming.
I have the TS server running on a FreeBSD box with a static IP address (example: 192.168.1.100) I have a port forward configured on my SOHO router to send incoming traffic on the TS voice port to IP address 192.168.1.100 (the IP of my TS server).
Since my server's IP is static, it never changes and I never have to touch my port forward for any reason. This is why I recommend using a statically assigned IP for your server.
However, my external IP address does change because my ISP uses DHCP. I've gotten around that by writing a script on my BSD box that checks my IP and compares it against a file containing the external IP I had the day before. If the IP is different, the script overwrites the old IP with the new one and then sends emails to all my friends who use my TS server telling them what the new IP address is. I have the script set to run as a cronjob every morning about 5 minutes after the 24 hour DHCP lease expires on my external IP
You could probably write a similar script to run in Windows. I'm assuming you're using Windows as the OS for your server. If your server is linux based, I'd be happy to share my script with you.
As to whether or not your ISP blocks ports, you'd have to ask them. Mine doesn't but I've been told some do. Best bet is to call them and ask if they block the ports you want to use.
It matters not how straight the gate,
How charged with punishments the scroll,
I am the master of my fate;
I am the captain of my soul.