Обычно всегда нужно, чтобы где-то был компьютер с заранее известным адресом, такой, что на нём нужная программа слушала входящие запросы. Для двоих это может быть или один из двух компьютеров, или третий "посредник". Skype имеет свою систему серверов "посредников", когда оба клиента по своей инициативе поддерживают связь с "посредником", ожидая звонков, посредник при этом всегда находится по определённому, заранее известному адресу. Поскольку инициатива соединения с посредником у клиента, то нет помех со стороны прокси, блокирующего входящие для клиента запросы на соединение, клиент-то в другом направлении, изнутри наружу устанавливает соединение с посредником и держит это соединение. Дальше смотря как работает конкретный телефонный софт, способен ли клиент держать непрерываемое соединение с сервером и т.д. ... По телефонии я не спец.
В принципе есть понятие виртуальных частных сетей - VPN. Можно на основе этого сделать где-то VPN сервер, где-то сервер с телефонией (можно на одном, можно на разных компьютерах). VPN сервер должен быть по заранее известному адресу. В рамках VPN это будет единая сеть, без прокси, без фаерволов. В системе появятся виртуальные сетевые адаптеры, позади которых будет эта виртуальная сеть.
Можно самому городить VPN. Например, OpenVPN, pptp и др. Можно привлечь что-то типа Hamachi
https://secure.logmein.com/products/hamachi2/Такая вот идея.