Jak skonfigurować tabelę routingu specyficzną dla aplikacji w systemie Windows?

14

Załóżmy, że interfejs sieciowy 1 (net1) i 2 (net2) są połączone z Internetem. Chcę, aby aplikacja 1 (app1) korzystała z net1, a aplikacja 2 (app2) korzystała z net2. Jak można to zrobić w systemie Windows?

Jeśli potrzebujesz konkretnego przykładu powyższej sytuacji, rozważ:

  • Laptop z systemem Windows 7
  • net1 = Połączenie przewodowe z modemem internetowym Verizon
  • net2 = Połączenie bezprzewodowe z modemem internetowym Comcast
  • app1 = Internet Explorer
  • app2 = Firefox
  • Chciałbym mieć „IE używa Verizon, ale nie Comcast”, i „Firefox używa Comcast, ale nie Verizon”

Nie trzeba tego robić za pomocą tablicy routingu. Jeśli masz inne pomysły, daj mi znać!

netvope
źródło

Odpowiedzi:

6

Wygląda na to, że ForceBindIP jest tym, czego szukasz :)

ForceBindIP - powiąż dowolną aplikację Windows z określonym interfejsem

ForceBindIP to darmowa aplikacja dla systemu Windows, która wstrzykuje się do innej aplikacji i zmienia sposób wykonywania określonych połączeń Windows Sockets, co pozwala zmusić drugą aplikację do korzystania z określonego interfejsu sieciowego / adresu IP. Jest to przydatne, jeśli jesteś w środowisku z wieloma interfejsami, a Twoja aplikacja nie ma takiej możliwości powiązania z określonym interfejsem.

Niektóre programy, które zostały przetestowane pod kątem współpracy z ForceBindIP, to DC ++, uTorrent, Quake II, Quake III, Diablo II, StarCraft, Internet Explorer, Mozilla Firefox , Google Earth, Piechota, Real Player, Unreal Tournament 2004 (wymaga -i), Outlook 2000 (wymaga -i). Programy, które nie działają, to GetRight (techniki zapobiegające debuggerowi / rozwidlaniu), WinCVS (forks cvs.exe)

Możesz po prostu utworzyć skróty, aby uruchomić aplikację za pomocą ForceBindIP, z adresem IP i programem jako argumentami:

alternatywny tekst

ForceBindIP jest darmowy.

John T.
źródło
2
Świetne oprogramowanie! Niestety wydaje się, że nie działa z moją konfiguracją VPN (która ma wyłączoną opcję „Użyj domyślnej bramy w sieci zdalnej”, aby połączenie z Internetem nie było możliwe). Próbowałem powiązać IE z interfejsem VPN (adapter PPP), ale ruch nadal nie przechodzi przez VPN (sprawdzane przez whatismyip.com)
netvope
1

Nie musisz uruchamiać odtwarzacza vmware i tak dalej. Wystarczy włączyć słabyhostreceive na dodatkowym adapterze (tj. Adapterze, który ma wyższą charakterystykę).

Następnie możesz uruchomić squid i ustawić squid na użycie adresu tcp_outgoing_address na adres IP dodatkowego adaptera i proxy wszystkich aplikacji.

Podejrzewam, że forcebindip powinien również zacząć działać.

Myślę, że jest błąd w stosie MS win7. Kiedy pakiet dociera do dodatkowego adaptera, zostaje odrzucony, mimo że jest to prawidłowy pakiet.

Włączanie odbioru słabego hosta jest udokumentowane tutaj http://technet.microsoft.com/en-us/magazine/2007.09.cableguy.aspx

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
Mavin
źródło
0

jestem prawie pewien, że to niemożliwe. Najbliższą rzeczą, jaką można uzyskać, wysyłając ruch na jednym lub drugim interfejsie, są podsieci i wpisy routingu.

Ale jeśli dwie aplikacje chcą rozmawiać w sieci, używają tej samej sieci.

Technicznie przypuszczam, że aplikacja mogłaby powiązać ruch wychodzący z określonym interfejsem, ale w tym celu musiałaby zostać napisana od nowa.

Ian Boyd
źródło
0

Miał podobny wymóg, chciał, aby określone aplikacje działały przez określone połączenia internetowe, ale nie można tego zrobić za pomocą adresu IP lub portu.

Moje rozwiązanie polegało na:

(Uwaga: ip mojego komputera to xxx100

a) skonfiguruj regułę mangle dla xxx101, aby przejść przez wan2

b) uruchom odtwarzacz vmware z kopią ubuntulite (z zainstalowanym openssh) na ip xxx101

c) użyj „proxy”, aby powiązać aplikację i zmusić ją do tunelowania za pomocą maszyny vmware, która z kolei została przekierowana tylko przez wan2

Jest to jedyny (bardzo chaotyczny) sposób, w jaki mogłem wymyślić, jak to zrobić na poziomie aplikacji (proxy ma wersję testową, którą możesz przetestować i działa na systemie Windows 7 x64).

Omegatron
źródło