grundsätzlich mußt du unterscheiden, ob es sich um einen proxy oder eine firewall handelt. zwar ist ein proxy auch eine art firewall, aber i.a. sprachgebrauch sind firewalls statefull packet filter.
bei einer firewall kommt es dann auch noch darauf an, ob dieser portmapping (forwarding) unterstützt und ob er mit NAT/Masquerading läuft.
nun mal zu den einzelnen fällen:
hast du einen proxy vorm server, so ist das unternehmen nur in zwei fällen machbar.
1: der proxy kennt das protokoll über das die applikation arbeitert (http, ssh, telnet,..) oder 2: das protokoll kann in ein dem proxy bekanntes protokoll gekapselt (getunnelt) werden.
jetzt zu den fällen mit firewall:
hat der server eine öffentliche IP und die firewall arbeitet nicht mit NAT oder masquerading, so mußt du zum ansprechen des servers die IP des servers angeben um diesen zu erreichen und die ports für die verbindung müssen freigeschaltet sein.
hat der server eine IP aus dem nichtöffentlichen pool, so geht es nur über forwarding/mapping. in diesem fall muß die ip der firewall angegeben werden, auf dieser muß eben dieser port auf den server gemappt werden.
natürlich muß die firewallkonfig entsprechend angepasst werden. eine echte firewall interessieren auch keine listen-ports (ich hoffe wir sprechen hier nicht über desktopfirewalls). die firewall sieht den offenen port auf dem server nicht, sie sieht nur datenpakete. der verbindungsaufbau zum server läuft auch von außen, also der client kontaktiert den server. deswegen muß in der firewall der eingehende verkehr an die adresse des servers für das entsprechende protokoll freigeschaltet sein. der umgekehrte weg muß bei einer statefull packet FW nicht freigeschaltet werden, da sie erkennt, daß die antwort des servers zu einer bereits etablierten verbindung gehört, und somit eine rechtmäßige antwort ist (dies wird über die verbindungsid erkannt).
übrigens erlauben die meisten FWs VPN-tunnel, dies wäre auch eine möglichkeit dies zu realisieren, da damit auch die verbindung abgesichert ist.