Boas Leandro,
Sim, você pode. Crie um serviço com dois endpoints: HTTP e TCP. Quando referenciar no cliente, ele exibirá os dois endpoints, e você alterna entre um e outro para acessar via HTTP e TCP. Você pode acessar via HTTP de dentro da sua rede, mas utilizar TCP tem uma melhor performance. Já quando está fora da empresa, então recorre ao HTTP.
Dá uma olhada nesses videos:
http://www.israelaece.com/post/WCF-Video-Hospedando-um-Servico.aspxhttp://www.israelaece.com/post/WCF-Video-Consumindo-um-Servico.aspxEles dão um exemplo disso.
Para detectar se está dentro ou fora da empresa, você tem que criar alguma regra no seu sistema para isso, talvez utilizando as classes do namespace System.Net.
http://www.israelaece.com