12

Я хотел бы использовать своего интернет-провайдера только для загрузки, а мое мобильное соединение 4G - только для загрузки. Это потому, что скорость загрузки моего интернет-провайдера низкая, но загрузка в порядке, а загрузка в 4G великолепна и бесплатна (я плачу только за загрузки).

Итак, один ПК, два подключения: интернет-провайдер для загрузки и 4G для загрузки. При этом я буду платить так же, как сегодня, но увеличу свою загрузку с 0,1 Мбит / с до примерно 60 Мбит / с.

8 ответов8

8

Это невозможно. Подтверждения являются неотъемлемой частью протокола управления передачей. Если вы четко разделите входящие и исходящие данные между двумя интерфейсами, вы по сути отключите компонент подтверждения протокола.

TCP - это протокол, ориентированный на установление соединения, который означает, что соединение устанавливается и поддерживается до тех пор, пока прикладные программы на каждом конце не завершат обмен сообщениями. Он определяет, как разбить данные приложения на пакеты, которые могут доставлять сети, отправлять пакеты и принимать пакеты с сетевого уровня, управлять управлением потоком и, поскольку он предназначен для обеспечения безошибочной передачи данных, обрабатывать повторную передачу отброшенных или искаженных пакетов. а также подтверждение всех пакетов, которые приходят. В коммуникационной модели взаимодействия открытых систем (OSI) TCP охватывает части уровня 4, транспортного уровня и части уровня 5, сеансового уровня.

Маршрутизаторы могут реализовывать балансировку сетевой нагрузки между отдельными интерфейсами, но это обычно работает с хешированием. Это означает, что соединение устанавливается на заданном интерфейсе на основе алгоритма хеширования и поддерживается на этом интерфейсе до его завершения. Даже с дорогими маршрутизаторами каждый интерфейс должен поддерживать установленное соединение до завершения.


Дополнение: Это может быть возможно, но объем реализации делает его непрактичным. Кроме того, даже если вам удастся разгрузить весь свой трафик на мобильный модем, как вы думаете, сколько времени пройдет до того, как провайдер обновит ваши условия обслуживания? Там, вероятно, где-то уже есть политика добросовестного использования. Вот требования.

  • Фальсифицируйте исходный IP-адрес исходящего трафика через мобильный модем, чтобы сопоставить его с исходящим трафиком, исходящим через подключение к Интернет-провайдеру, чтобы он возвращался через интернет-провайдера. Это можно сделать с помощью iptables.
  • Направляйте местный трафик через мобильный учитель. Например: 'route add 192.168.0.0/16 mask 255.255.0.0 [внешний IP-адрес мобильного телефона]. Возможно, запустите DDNS, чтобы вам не приходилось обновлять это часто.

http://lartc.org/howto/lartc.rpdb.multiple-links.html

https://sandilands.info/sgordon/address-spoofing-with-iptables-in-linux

Если вы хотите увеличить провайдера, изучите асимметричную маршрутизацию с BGP.

8

Хотя практически невозможно разделить загрузку и загрузку между соединениями (как подробно описано в других ответах), существует обходное решение вручную.

Вы можете управлять подключением по умолчанию, переключая его в зависимости от задачи, которую вы хотите запустить. Соединение по умолчанию в Windows - это первый подключенный интерфейс, его порядок рассчитывается по метрике (которая имеет тенденцию устанавливать беспроводное соединение над кабелем).

Вы можете легко переопределить метрику вручную в дополнительных настройках сетевых подключений: Как изменить подключение по умолчанию в Windows. (Должно работать так же с XP до 8.1 с незначительными или без различий)

Большинство современных программ используют соединение по умолчанию, предоставляемое системой, после установления соединения оно будет (должно) сохраняться на нем. Обычно это означает, что программа будет использовать соединения, которые были установлены по умолчанию во время запуска. Переключив соединение по умолчанию перед открытием соединения, вы можете переключать соединение в зависимости от задачи и сохранять оба открытых одновременно.

Помните, что некоторые программы (например, менеджеры загрузки / выгрузки) будут открывать соединения для каждой задачи, а не для каждой сессии, поэтому ваш пробег может отличаться.

4

Можно использовать оба доступа в Интернет, чтобы разделить загрузку / выгрузку, но всегда только для каждого соединения. Таким образом, одно TCP (или UDP) соединение может проходить только по одной ссылке. Это упоминается и в другом ответе - для исходящих пакетов TCP вы должны получать пакеты подтверждения, и они должны проходить через тот же интерфейс.

Вы можете вручную изменить таблицу маршрутизации, например, перед выполнением большой загрузки на YouTube, чтобы перенаправить весь трафик YouTube через Интернет с более быстрой скоростью загрузки, а затем изменить его обратно. Но это будет сложно, так как YouTube использует много разных IP-адресов (маршрутизация работает по IP, а не по именам хостов). Но для некоторых FTP-серверов компании это может быть выполнимо.

Это верно для любого домашнего доступа в Интернет, где вам предоставляется IP-адрес от вашего интернет-провайдера. Таким образом, на первом интернет-провайдере вы получаете, например, IP 1.2.3.4, но на сотовый телефон вы получаете IP вашего оператора телефонной сети, например 5.6.7.8. Все соединение (исходящие и входящие данные) должно идти только с одним из этих IP-адресов.

Для коммерческого и серверного хостинга в Интернете вы можете получить один IP-адрес, который не зависит от интернет-провайдера, и, следовательно, вы можете использовать больше интернет-соединений одновременно.

2

С технической точки зрения, эта возможность встроена во все сети, построенные на основе IP (у вас должен быть общедоступный IP-адрес), и активируется просто путем изменения таблицы маршрутизации на стороне клиента. Скорее всего, трафик, предназначенный для собственной локальной сети интернет-провайдера, продолжит отправляться через этот интерфейс, а весь остальной трафик будет проходить через шлюз по умолчанию.

"Исходный" IP-адрес, который должен совпадать для подтверждения и все остальное работает, выбирается на основе сокета, через который отправляются данные, и, за исключением необычного случая сокета с ограниченным интерфейсом, вообще не имеет ничего общего с интерфейсом, используемым для переноса данных. (Вопреки комментариям о том, что исходящий сетевой интерфейс выбирается по IP-адресу источника, на самом деле влияние имеет только таблица маршрутизации).

Однако тот факт, что маршрутизация зависит только от адреса назначения, использовался в злонамеренных целях (подмена пакетов является важным компонентом атак отражений), поэтому большинство операторов настроили свои маршрутизаторы для реализации фильтрации обратного пути и отбрасывания пакетов там, где исходный IP адрес не соответствует пути, так как они считаются поддельными.

Если у вас нет общедоступного IP-адреса, то в дополнение к фильтрации обратного пути уровень NAT/PAT будет препятствовать этому (ваш исходный IP-адрес, используемый вашим компьютером, будет бессмысленным в другой сети и не будет правильно переписать, если пакет не выходит через маршрутизатор NAT/PAT).

Фактически для больших многосетевых сетей асимметричная маршрутизация происходит. Важно, что большинство реализаций фильтрации обратного пути требуют, чтобы существовал маршрут, который соответствует интерфейсу, куда поступил пакет; он не должен быть предпочтительным (тот, который имеет наименьшую стоимость).

Таким образом, "все", что вам нужно сделать, - это убедить вашего интернет-провайдера (включая их вышестоящих поставщиков) либо (а) отключить фильтрацию обратного пути, либо (б) установить не предпочтительный маршрут. Этого не произойдет, основные маршрутизаторы не могут обрабатывать три миллиарда маршрутов, чтобы иметь один для каждого уникального публичного IP-адреса. Таким образом, очень редко иметь маршруты для любого блока, меньшего, чем /20, за исключением внутреннего доступа к провайдеру, где существуют маршруты для всех локальных подсетей.

2

Короткий ответ: в 95% случаев это невозможно сделать, а ваш - в пределах этих 95%.

Во-первых, позвольте мне сказать, что бессмысленно говорить о маршрутизации загрузки и выгрузки отдельно, потому что даже интенсивные задачи загрузки требуют, чтобы некоторые пакеты передавались обратно к источнику, т.е. любая загрузка требует некоторого потока выгрузки (это менее верно для UDP, чем для ПТС, но это не важно).

Если бы мы передавали по каналу загрузку соединения, в основном загружаемого через другой сетевой адаптер, отличный от того, который использовался для части загрузки, источник загрузки мог бы видеть, что ответы на его пакеты исходят с другого IP-адреса, чем тот, к которому он подключен. отправка пакетов; это базовая функция безопасности - игнорировать пакеты, относящиеся к данному соединению, но исходящие от стороннего адреса. Следовательно, загружаемая часть разговора будет отброшена, и соединение прервется. Это не имеет ничего общего с поставщиками услуг Интернета и их услугами: это происходит даже между двумя устройствами в одной локальной сети, если один из них пытается подключиться к IP-адресу, используя в одном соединении два разных NICS (следовательно, два разных IP),

Вот почему мы говорим о подключениях, а не о загрузке / загрузке.Но тогда можно переформулировать ваш вопрос следующим образом: могу ли я иметь компьютер с двумя сетевыми картами, подключенными к сети, использовать две сетевые карты для двух разных соединений, скажем, медленное соединение для медленной и утомительной работы, такой как электронная почта? почта, а быстрое соединение для быстрого процесса, такого как загрузка веб-страницы?

Краткий ответ на этот правильно поставленный вопрос: в Windows, * Nix (включая MacOS) и Android нет.В Linux да, вы можете.

Причина, по которой вы не можете сделать это в Windows (любой версии), * Nix и Android, заключается в том, что любая таблица маршрутизации может иметь только один шлюз по умолчанию (* т.е. * адрес, на который вы отправляете все пакеты, не предназначенные для вашей локальной сети), и эти Операционные системы могут обрабатывать только одну таблицу маршрутизации: следовательно, один шлюз.

Вместо этого, чтобы распределить разные приложения по разным интерфейсам, вам нужны две разные функциональности: одна - возможность двух одновременно запускать две таблицы маршрутизации, а вторая - возможность привязывать приложения к любой из таблиц маршрутизации. На момент написания этой статьи эти возможности были только у ядра Linux (световых лет впереди конкурентов). Ядро * Nix частично компенсирует это за счет разумного использования своего брандмауэра pfsense, однако не достигает полного результата.

Возможность одновременного запуска двух таблиц маршрутизации (так называемая политика маршрутизации или маршрутизация на основе источника) означает, что пакеты маршрутизируются по-разному в зависимости от их IP-адреса. Это чрезвычайно полезная функция, если вы строите маршрутизатор.

Однако, чтобы использовать разные сетевые карты (и, следовательно, IPS) в зависимости от приложения, вам нужны сетевые пространства имен, функция ядра Linux, которая позволяет вам создать отдельную оболочку со своим собственным сетевым стеком. Теперь процессы, выполняющиеся внутри этой отдельной оболочки, будут маршрутизироваться в соответствии с таблицей маршрутизации пространства имен сети, а не основного компьютера.

Это, конечно, форма виртуализации, хотя и более слабая, чем, скажем, контейнер Linux, не говоря уже о виртуальной машине. Но это реальный способ, с помощью одного компьютера, направлять различные процессы через разные интерфейсы.

Подводя итог, можно сказать, что в Linux (и только в Linux) вы можете запустить отдельное сетевое пространство имен, которое, например, подключено через VPN к вашему рабочему месту, так что вы получаете доступ к своим рабочим ресурсам, и, если вы запускаете Firefox, вы, кажется, находитесь на своем рабочем месте, и в то же время запускаете Google Chrome за пределами сетевого пространства имен и, таким образом, кажетесь (на Chrome) базирующимся дома.

2

Вам понадобится оверлейное (туннельное) соединение, которое поддерживает разные конечные точки для восходящего и нисходящего трафика. Единственный известный мне протокол, который поддерживает эту функцию, - это LISP (протокол разделения идентификатора локатора). Если вы сможете найти ближайшего к вам интернет-провайдера LISP, вы можете приобрести у него услугу в дополнение к вашим текущим соединениям. Это, вероятно, не будет бесплатным, хотя.

0

Вам нужен хост, которым вы управляете, доступный через оба соединения.

Настройте два VPN-туннеля к этому хосту, каждый из которых будет проходить с другого интерфейса на вашей стороне. Если у вас есть это, это как два кабеля Ethernet. Вы можете использовать связывание, чтобы использовать их вместе как кабель большего размера, а затем попытаться передать трафик через него.

Теперь я не знаю, достигли ли вы от этого большой производительности (задержка мобильной сети намного выше, чем у вашей широкополосной сети, что может вызвать проблемы), но вы должны попробовать и посмотреть.

0

Разделение связанных подключений между различными поставщиками будет возможно только в том случае, если у вас есть один IP-адрес, доступный / маршрутизируемый от обоих поставщиков. Этот IP-адрес обычно предоставляется вам как часть большего блока адресов через BGP. И если бы у вас это было, вы могли бы сделать это с BGP, используя функцию, называемую предварительным ожиданием пути и правилами локальных предпочтений в BGP.

Даже если бы вы могли заключить такое соглашение между вашим провайдером и вашим оператором сотовой связи, чтобы ваш IP-адрес был доступен через обе сети, это, вероятно, будет стоить вам больше, чем вы платите сейчас за оба соединения.

Если, с другой стороны, вы на самом деле спрашиваете, возможно ли отдать предпочтение соединению 4G для сеанса преимущественно загрузки, например, при загрузке файлов с помощью ftp/sftp или http. И для нормального просмотра веб-страниц, чтобы этот трафик использовал ваш провайдер, я думаю, что ответ может быть. Но для того, чтобы, возможно, работать, вам нужно было бы классифицировать сеанс как загружаемый или загружаемый. Поскольку ftp, http и другие протоколы могут использоваться в равной степени как для загрузки, так и для загрузки, вы не можете определить это по номеру порта. Таким образом, единственная альтернатива - смотреть на середину потока данных. На этом этапе решение было бы принято, поскольку данные уже передаются. Так что это не может быть автоматизировано.

Итак, в вашем случае. NO. (по крайней мере, если вы не на обочине).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .