Krótka odpowiedź brzmi: w 95% przypadków nie można tego zrobić, a twój mieści się w tym 95%.
Po pierwsze, powiem, że nie ma sensu mówić o osobnym routingu przesyłania i pobierania, ponieważ nawet intensywne zadania pobierania wymagają, aby niektóre pakiety przepływały wstecz do źródła, tj. Każde pobieranie wymaga pewnego przepływu przesyłania (Jest to mniej prawdziwe w przypadku UDP niż w przypadku UDP TCP, ale nieważne).
Gdybyśmy mieli przekazywać przesyłanie połączenia najczęściej pobieranego przez inną kartę sieciową niż ta używana dla części do pobrania, źródło pobierania zobaczyłoby, że odpowiedzi na jego pakiety pochodzą z innego adresu IP niż ten, do którego jest on pobrany wysyłanie pakietów; podstawową funkcją bezpieczeństwa jest ignorowanie pakietów, które rzekomo są powiązane z danym połączeniem, ale pochodzą z adresu strony trzeciej. W związku z tym część konwersacji dotycząca przesyłania zostanie porzucona, a połączenie zostanie przerwane. Nie ma to wiele wspólnego z dostawcami usług internetowych i ich usługami: występuje nawet między dwoma komputerami w tej samej sieci LAN, jeśli jeden z nich próbuje połączyć się z adresem IP, używając w tym samym połączeniu dwóch różnych NICS (stąd dwa różne adresy IP) .
Dlatego mówimy o połączeniach, a nie o przesyłaniu / pobieraniu, ale wtedy można sformułować swoje pytanie w następujący sposób: czy mogę mieć komputer z dwoma kartami sieciowymi podłączonymi do sieci, użyć dwóch kart sieciowych dla dwóch różnych połączenia, powiedzmy wolne połączenie dla powolnej, żmudnej pracy, takiej jak e-mail, i szybkie połączenie dla szybkiego procesu, takiego jak pobieranie strony internetowej?
Krótka odpowiedź na to dobrze postawione pytanie brzmi: w systemie Windows * Nix (w tym MacOS) i Android nr. W systemie Linux tak, możesz.
Powodem, dla którego nie możesz tego zrobić w systemie Windows (dowolna wersja), * Nix i Android, jest to, że każda tabela routingu może mieć tylko jedną bramę domyślną (* tj. * Adres, na który wysyłasz wszystkie pakiety nieprzeznaczone do sieci LAN), Systemy operacyjne mogą obsługiwać tylko jedną tablicę routingu: stąd pojedyncza brama.
Zamiast tego, aby przypisać różne aplikacje do różnych interfejsów, potrzebujesz dwóch odrębnych funkcji: po pierwsze, zdolność dwóch do jednoczesnego uruchamiania dwóch tabel routingu i dwóch, możliwość wiązania aplikacji z dowolną tabelą routingu. Tylko jądro Linuksa (lata świetlne przed konkurencją) ma takie możliwości w chwili pisania. Jądro * Nix częściowo to rekompensuje poprzez rozsądne użycie swojej zapory ogniowej, pfsense, nie osiągając jednak pełnego wyniku.
Możliwość jednoczesnego uruchamiania dwóch tabel routingu (nazywanych routingiem strategii lub routingiem źródłowym ) oznacza, że pakiety są różnie trasowane w zależności od ich adresu IP. Jest to niezwykle przydatna funkcja, jeśli budujesz router.
Aby jednak korzystać z różnych kart sieciowych (a tym samym IPS) w zależności od aplikacji, potrzebujesz sieciowych przestrzeni nazw , funkcji jądra systemu Linux, która pozwala zbudować osobną powłokę z własnym stosem sieci. Teraz wszystkie procesy uruchomione w tej osobnej powłoce będą kierowane zgodnie z tabelą routingu w przestrzeni nazw sieci, a nie na głównym komputerze.
Jest to oczywiście forma wirtualizacji, choć słabsza niż, powiedzmy, kontener Linux, nie wspominając o maszynie wirtualnej. Ale to jest prawdziwy sposób, za pomocą jednego komputera, aby kierować różne procesy przez różne interfejsy.
Podsumowując, w systemie Linux (i tylko w systemie Linux) możesz uruchomić osobną przestrzeń nazw sieci, która jest na przykład połączona przez VPN z miejscem pracy, aby uzyskać dostęp do zasobów pracy, a jeśli używasz przeglądarki Firefox, wydaje się, że masz siedzibę w miejscu pracy, a jednocześnie uruchamiasz Google Chrome poza przestrzenią nazw sieciowych, a tym samym (w Chrome) masz siedzibę w domu.