Почему вы хотите, чтобы программа использовала интерфейс, отличный от того, который подключен к серверу, для связи с этим сервером? И если система не использует интерфейс, связанный с сервером, для связи с этим сервером, это проблема системного уровня (таблица маршрутизации), и она не имеет никакого отношения к тому, какой процесс хочет связаться с этим сервером.
Разные серверы в IP-сетях имеют разные IP-адреса. Ядро должно знать, какой интерфейс использовать для достижения определенного IP-адреса на основе таблицы маршрутизации. Если вы пытаетесь установить связь с двумя разными серверами с одинаковым IP-адресом, система будет сбита с толку (поскольку, помимо прочего, она индексирует соединения только по внутреннему адресу). Вы можете сделать это, но это исправление на уровне системы, включающее помещение одного сервера в отдельную логическую сеть, которая подключена к компьютеру только через программный NAT.
Поэтому, если у них разные IP-адреса, используйте маршруты, чтобы выбрать правильный интерфейс. Если у них одинаковый IP-адрес, вам нужно использовать NAT, чтобы они имели разные IP-адреса для системы.