Apologies in advance for the lengthy reply...
Some services (FTP, PPTP, H323 video, and many online games, for example) work like this:
- Client (originator) initiates connection to remote server
- Firewall passes outbound traffic
- Remote server initiates a new connection back to the originator
Without special configuration or consideration, the new return connection is blocked by the firewall and the connection fails.
UPnP / NAT-PMP are/were an attempt to allow these return connections automatically (whose poor implementation resulted in dozens of infected Windows systems at my clients when Windows first started supporting UPnP...)
There are usually two ways for these services to work:
1) The firewall includes special rules that recognized the outbound initiation and configured an automatic rule to allow the expected return traffic to be sent from the specific remote server back to the specific local client.
2) The service (sometimes in the remote server, sometimes in the local client) can be configured to use a specific port range for replies, and a manual rule can be configured in the firewall to forward that range back to the client / originator.
Method 1 depends on the firewall, of course, and is hard to control after the fact. SME server (as of v7.1, the last time I researched this in depth...) includes rules for FTP and PPTP, but not H323, for example. "Gaming" (I believe) include rules to allow the return traffic. UPnP is not supported.
Method 2 requires control of both ends (originator, firewall, and remote server), requires that the remote service can actually be configured to use a finite port range for replies, and only solves your problem for one LAN client at a time.
A third method would be to configure your firewall to treat the originator/client as the DMZ host. Horribly insecure, but there you are...
The last option I can think of would be:
1) Establish a PPTP tunnel from the LAN client to your SME - with the LAN client configured to "use remote server as default gateway" (the default in Windows, not the default for anyone else)
2) Then run your port-challenged program.
(I don't know if this will work, it's just an idea).
More specific advice would require knowledge of the specific service your trying to contact on port 9008. Begin by searching google for "firewall rules for that service, eg:
"firewall rules asheron's call"
"firewall rules ogs-server"
or
"iptables asheron's call"
"iptables ogs-server"
...
(you get the idea).