Коротка відповідь: у 95% випадків цього неможливо зробити, а ваш - це 95% випадків.
По-перше, дозвольте мені сказати, що мало сенсу говорити про маршрутизацію окремо для завантаження та завантаження, тому що навіть для завдань з інтенсивним завантаженням деякі пакети вимагають потоку назад до джерела, тобто будь-яке завантаження вимагає певного потоку завантаження (це менш справедливо для UDP, ніж для TCP, але це не забувайте).
Якби ми каналізували завантаження з’єднання, яке здебільшого завантажувалося, через інший NIC, ніж той, який використовується для завантаження, джерело завантаження побачило б, що відповіді на його пакети походять з іншої IP-адреси, ніж тієї, на яку він відправлення пакетів; це основна функція захисту - ігнорування пакетів, які вважають, що вони пов'язані з певним з'єднанням, але походять від сторонніх адрес. Отже, частина розмови для завантаження буде припинена, а зв’язок припиниться. Це мало спільного з провайдерами та їх послугами: це відбувається навіть між двома ПК в одній локальній мережі, якщо одна з двох намагається підключитися до IP-адреси, використовуючи в одному і тому ж з'єднанні два різних NICS (отже, два різних IP-адреси) .
Це причина, чому ми говоримо про з'єднання, а не для завантаження / завантаження. Але тоді можна переформулювати ваше запитання наступним чином: чи можу я мати ПК, який має два NIC, підключені до мережі, використовувати два NIC для двох різних з'єднання, скажімо, повільне з'єднання для повільної, виснажливої роботи, наприклад електронної пошти, і швидке з'єднання для швидкого процесу, як завантаження веб-сторінки?
Коротка відповідь на це добре поставлене питання: у Windows, * Nix (включаючи MacOS) та Android no.У Linux так, ви можете.
Причина, чому ви не можете цього зробити в Windows (будь-якій версії), * Nix та Android, полягає в тому, що будь-яка таблиця маршрутизації може мати лише один шлюз за замовчуванням (* тобто * адреса, на яку ви надсилаєте всі пакети, не призначені для вашої локальної мережі), і ці ОС може обробляти лише одну таблицю маршрутизації: отже, єдиний шлюз.
Натомість, для того, щоб розподілити різні програми на різні інтерфейси, вам потрібні два різних функціональності: один, можливість двох запускати дві таблиці маршрутизації одночасно, і два, можливість прив’язувати програми до будь-якої таблиці маршрутизації. Тільки ядро Linux (на кілька років, що випереджає конкуренцію) має ці можливості, як це було написано. Ядро * Nix частково компенсує це шляхом розумного використання свого брандмауера, pfsense, не досягнувши, проте, повного результату.
Можливість одночасно запускати дві таблиці маршрутизації (так звана маршрутизація політики або маршрутизація на основі джерела ) означає, що пакети відрізняються маршрутизацією залежно від їх IP-адреси. Це надзвичайно корисна функція, якщо ви будуєте роутер.
Однак для того, щоб використовувати різні NIC (і, отже, IPS) залежно від програми, потрібні простори мережних імен , функція ядра Linux, яка дозволяє створити окрему оболонку з власним мережевим стеком. Тепер процеси, запущені всередині цієї окремої оболонки, будуть спрямовані відповідно до таблиці маршрутизації простору мережевих імен, а не для основного ПК.
Це, звичайно, форма віртуалізації, хоч і слабша форма, ніж, скажімо, контейнер Linux, не кажучи вже про віртуальну машину. Але це реальний спосіб, за допомогою одного ПК, маршрутизувати різні процеси через різні інтерфейси.
Підводячи підсумок, в Linux (і тільки в Linux) ви можете запустити окремий мережевий простір імен, який, наприклад, підключений через VPN до робочого місця, щоб ви отримали доступ до своїх робочих ресурсів, і, якщо ви запускаєте Firefox, здається, ви бачитесь на своєму робочому місці, одночасно працюючи в Google Chrome поза мережевим простором імен, і, таким чином, вам здається, що ви бачитесь вдома.