O Linux decide qual interface usar por meio de regras e rotas.
As regras especificam as condições do pacote e qual tabela de roteamento deve ser consultada, as regras podem ser vistas com ip rule show
se você estiver usando o iproute2. Principalmente, isso apenas indica as tabelas local, principal e padrão nessa ordem.
As tabelas de roteamento simplesmente contêm listas de destinos e para quem o pacote deve ser enviado (incluindo a interface para a qual ele deve ser enviado). A tabela de roteamento main pode ser verificada com ip route show
.
O AFAIK Linux não usa rotas diferentes para aplicativos diferentes (desde que estejam no mesmo namespace de rede e você não tenha um sistema de fwmarking do iptables estranho).