Como configurar a tabela de roteamento específica do aplicativo no Windows?

11

Suponha que a interface de rede 1 (net1) e 2 (net2) estejam conectadas à Internet. Eu quero que o aplicativo 1 (app1) use net1 e o aplicativo 2 (app2) use net2. Como isso pode ser feito no Windows?

Se você precisar de um exemplo concreto da situação acima, considere:

  • Um laptop com o Windows 7
  • net1 = Uma conexão com fio para um modem da Verizon na Internet
  • net2 = Uma conexão sem fio com um modem da Comcast Internet
  • app1 = Internet Explorer
  • app2 = Firefox
  • Eu gostaria de ter "o IE usar a Verizon, mas não a Comcast", e "o Firefox usar a Comcast, mas não a Verizon"

Não precisa ser feito através da tabela de roteamento. Se você tiver outras ideias, por favor me avise!

    
por netvope 27.02.2010 / 02:57

4 respostas

5

Parece que ForceBindIP é o que você está procurando:)

ForceBindIP - Bind any Windows application to a specific interface

ForceBindIP is a freeware Windows application that will inject itself into another application and alter how certain Windows Sockets calls are made, allowing you to force the other application to use a specific network interface / IP address. This is useful if you are in an environment with multiple interfaces and your application has no such option for binding to a specific interface.

Some programs that have been tested to work with ForceBindIP include DC++, uTorrent, Quake II, Quake III, Diablo II, StarCraft, Internet Explorer, Mozilla Firefox, Google Earth, Infantry, Real Player, Unreal Tournament 2004 (requires -i), Outlook 2000 (requires -i). Programs that do not work include GetRight (anti-debugger / forking techniques), WinCVS (forks cvs.exe)

Você pode simplesmente criar atalhos para iniciar o aplicativo usando o ForceBindIP, com o endereço IP e o programa como argumentos:

O ForceBindIP é gratuito.

    
por 27.02.2010 / 03:31
2

Não há necessidade de executar o vmware player e tudo isso. Basta ativar o weakhostrecse no adaptador secundário (ou seja, o adaptador que possui uma métrica mais alta).

Em seguida, você pode executar o squid e definir o squid para usar tcp_outgoing_address no endereço IP do adaptador secundário e fazer proxy de todos os seus aplicativos.

Eu suspeito que o forcebindip também deve começar a funcionar.

O que eu acho é que há um bug na pilha do MS win7. Quando um pacote chega ao adaptador secundário, ele é descartado, embora seja um pacote válido.

A ativação da recepção do host fraco está documentada aqui link

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled

netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled

netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled
    
por 03.06.2011 / 11:33
0

Eu tenho certeza que isso é impossível. A coisa mais próxima que você pode obter o envio de tráfego em uma interface ou outra é através de sub-redes e entradas de roteamento.

Mas, se dois aplicativos quiserem falar na rede, eles usarão a mesma rede.

Tecnicamente, suponho, um aplicativo poderia vincular o tráfego de saída a uma interface específica, mas o aplicativo teria que ser reescrito para fazer isso.

    
por 27.02.2010 / 03:10
0

Ter um requisito semelhante, queria que aplicativos específicos passassem por conexões de internet específicas, mas não pudessem ser feitos via IP ou porta.

Minha solução foi:

(note que o ip do meu computador é x.x.x.100

a) configure uma regra de mangle para x.x.x.101 para passar por wan2

b) execute o vmware player com uma cópia do ubuntulite (com o openssh instalado) no ip x.x.x.101

c) use "proxifier" para ligar o aplicativo e forçá-lo a fazer o tunel através da máquina vmware, que por sua vez foi roteada apenas via wan2

Esta é a única maneira (muito haxy) de descobrir como fazer isso em um nível de aplicativo (o proxy tem uma versão de teste que você pode testar e executar no windows 7 x64).

    
por 19.03.2011 / 17:12