Bom precisaria de mais informações, o programa é feito em qual linguagem, peguei um problema parecido, mas o programa era feito em Delphi e o problema e que essa porcaria abre uma par de portas aleatória para comunicar com o banco, e a comunicação entre as filiais com a matriz não podia tem mais de um salto, o jeito antigo que fizeram foi num servidor dentro da rede o cara criou algumas vms e as filiais acessavam por TS, não contente criei uma vpn de um salto, que nada mais é que vpn tipo bridge.. com openvpn dá que eu fiz ficou bom.