O comportamento padrão de todas as pilhas TCP / IP é que, a menos que você especifique o contrário, as conexões de saída se ligam ao primeiro endereço na interface de saída para a rota que a conexão precisa levar (e se houver duas interfaces através das quais o ser roteado, o primeiro na tabela de roteamento será escolhido) - neste caso, o seu endereço principal. Se você precisa parecer vir de um dos outros endereços, ou precisar / querer forçar a escolha da interface, a conexão é roteada através de você precisa especificar a interface ou endereço local para ligar.
Muitas bibliotecas e ferramentas expõem essa opção, por exemplo, cURL com a opção --interface
:
curl --interface 192.168.1.10 http://www.example.com/document.html
curl --interface eth2 http://www.example.com/document.html
curl --interface eth0:1 http://www.example.com/document.html
que é exposto pela maioria das ligações de linguagem para libcurl, como no PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_INTERFACE, "192.168.1.10");
curl_exec($ch);
curl_close($ch);
[Eu escolhi cURL como um exemplo, pois é um método muito comum usado para conexões com serviços externos, e você não deu nenhuma indicação em sua pergunta sobre quais conexões externas eram um problema . Outras bibliotecas e ferramentas geralmente oferecem opções semelhantes - verifique sua documentação para obter detalhes]
Isso não é algo que você pode fazer como administrador: seu usuário precisa atualizar seu código para controlar a interface / endereço de suas conexões de saída, em vez de permitir que a pilha IP siga seu comportamento padrão a esse respeito.