Just to clear some things up:
Bertrams example has an small issue:
He binds the game and chat server to internal ips:
<option name="net_chatHost" value="192.168.1.10"/>
<option name="net_gameHost" value="192.168.1.10"/>
This won't work for public servers because this ip will be sent to the client and the client will try to connect to that ip.
Well of course that wont work if the client is not in the same network like the server. So you would need to set it to your public ip. But when you are behind a router you do not know this ip and your machine cannot bind anything to it. This issue is fixed now:
You can now define two further configuration values:
<option name="net_publicChatHost" value="mydomain.org"/>
<option name="net_publicGameHost" value="mydomain.org"/>
This is now the ip or domain that is sent to the client. When this option is not set the net_chatHost or net_gameHost will be sent.
So you need to put there your public ip of your router (or domain) and configure your router to do the port forwarding to the right machine in the local network.