Meu intuito não é te contradizer mas justamente discutir, não entenda mal, só quero mostrar que podem existir formas de se fazer sem necessidade de criar algo totalmente novo, eu já passei por isso que você está passando e a melhor forma que encontrei foi usar um serviço externo mesmo que pago, por duas razão simples, 1. manutenção, qualquer coisa que alguém programar vai necessitar de manutenção sempre, então é mais um aplicativo na empresa para eu me preocupar, 2. estrutura, para manter uma estrutura de servidores de ponto que funcione e seja razoável é preciso investimento.
Quando eu utiliza o VNC utilizava da seguinte forma: Aqui não tenho IP fixo, então utilizei um serviço gratuito de redirecionamento como o no-ip ou similar que era configurado no meu firewall para ter sempre um endereço fixo do tipo www.minhaempresa.no-ip, como tenho vários pontos de atendimento, configurava cada um em uma porta e fazia o redirecionamento no firewall também, assim o cliente poderia chamar um atendente em especifico caso desejasse, funciona muito bem, inclusive no fórum existe um tópico tratando disso e mostrando como configurar, eu parei de utilizar isso porque o VNC dependo da rede era lento e tinha a questão de liberação no firewall.
Hoje utilizo o Teamviewer em clientes que possuem internet discada, ele funciona muito bem e é bastante rápido, inclusive na nova versão foram feitas alterações justamente para melhorar isso, uma vantagem dele é que ele utiliza o protocolo http para transporte, portanto, não necessita de liberação no firewall do cliente se houver um, fiz um cliente personalizado usando o próprio site da TeamViewer e os clientes somente executam, nem precisa instalar.
Existem outros softwares, só estou passando a experiência que tive utilizando estes dois.