Возможно ли объединить моего интернет-провайдера и мобильный телефон? Я хочу разделить загрузку и загрузку [дубликаты]

12

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

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

FreddyJoe
источник
Да, это дубликат, и есть еще много похожих вопросов, включая мой собственный пару недель назад, но, похоже, они никогда не получают прямого ответа!
Левша
Итак, поскольку они, кажется, не получают прямого ответа, я позволил этому жить. Я прочитал другие, и они не решили проблему, даже после 1000 просмотров.
FreddyJoe
1
@Lefty: Если вы хотите привлечь внимание к вашему вопросу, предложите награду.
Каран
Есть ли какое-нибудь программное обеспечение, которое делает это? Я чувствую, что прочитал об этом около месяца назад
Джон
1
Вы знаете, этот вопрос на самом деле отличается от тех, с которыми этот вопрос связан и который считается дубликатом. Речь идет об общем слиянии связей, этот вопрос больше, чем это.
Мэтт Х

Ответы:

8

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

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

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

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

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

PTwr
источник
8

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

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

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


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

  • Фальсифицируйте исходный IP-адрес исходящего трафика через мобильный модем, чтобы сопоставить его с исходящим трафиком, исходящим через подключение к Интернет-провайдеру, чтобы он возвращался через Интернет-провайдер. Это можно сделать с помощью iptables.
  • Маршрут местного трафика через мобильный Teather. Например: '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.

Алекс Аткинсон
источник
11
Это вздор; в этом ответе очень мало того, что на самом деле неверно, но все это совершенно не имеет значения.
Бен Фойгт
1
Не может ли какая-то форма туннелирования решить это? Подтверждения все равно должны идти в нежелательном направлении, но большинство данных нет. И туннелирование по UDP может даже избежать подтверждений, верно?
Артур Гаспар
1
@ArturGaspar: Подтверждения - это просто пакеты данных TCP с установленным флагом ACK, они следуют тем же правилам, что и все пакеты данных TCP. И нет «надо идти в нежелательном направлении». IP-пакеты похожи на конверты - вы можете написать свой обратный адрес, доставить их в любое почтовое отделение и выбросить в коробку. Их не нужно класть в собственную коробку - подумайте, сколько открыток отправлено во время отпуска. Подвох для IP-пакетов - фильтрация обратного пути, которая специально разработана для обнаружения и предотвращения этого (обратите внимание, что подделка обратного адреса возможна и на бумажной почте)
Бен Фойгт
1
Утверждение в этом ответе гласит: «Если вы четко разделите входящие и исходящие данные между двумя интерфейсами, вы по сути отключите компонент подтверждения протокола». это одна из частей, которая совершенно неверна. Подтверждения TCP работают между конечными точками, и путь, пройденный пакетами, не имеет никакого значения (пока не истекло время жизни) и, конечно, не должен совпадать.
Бен Фойгт
1
Не могу разделить входящие и исходящие данные ?? Спутниковая широкополосная загрузка с загрузкой Dialup была в продаже в Aus в течение многих лет. Google "Односторонний прием с наземной передачей"
JumpingJezza
4

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

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

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

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

Marki555
источник
Вы всегда можете использовать локальный HTTP или SOCKS прокси вместо ручного редактирования таблицы маршрутизации. Таким образом, вы можете аккуратно разделить два соединения просто через аддон браузера, такой как FoxyProxy.
sleblanc
Интересное предложение, но я не думаю, что вы можете указать исходный ip в конфигурации прокси (так как исходящий сетевой интерфейс выбирается исходным ip).
Marki555
2

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

Сандер Штеффанн
источник
2

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

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

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

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

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

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

Бен Фойгт
источник
Возможно, фильтрация между различными источниками не будет выполнена, если случится так, что его провайдер также является поставщиком плана 4G для своего мобильного телефона?
Анхель
@ Анхель: Это вполне возможно, но если бы одна и та же компания предоставляла обе услуги, я подозреваю, что она будет продвигать эту возможность (в конце концов, спутниковый Интернет уже использует очень разные пути для загрузки и выгрузки, оба под контролем одного и того же провайдера)
Бен Фойгт
только если они официально поддерживают такую ​​конфигурацию. Большинство телефонных компаний здесь предоставляют как телефон (звонки и данные), так и жилой ADSL. В зависимости от (отсутствия) разделения этих двух сетей, это может сработать [в течение некоторого времени], и я ожидаю, что такая установка сломается в любой день (но Фредди мог наслаждаться этим взломом до тех пор ☺)
Анхель
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) базирующимся дома.

MariusMatutiae
источник
2
«Якобы относящийся к данному соединению, но исходящий от стороннего адреса» ... адрес источника в пакете - единственное, что делает его связанным с данным соединением, и фильтрация обратного пути не заботится о том, пакеты, которые он отбрасывает, ориентированы на соединение или нет (большинство спуфинговых атак против протоколов без установления соединения).
Бен Фойгт
«Это не имеет ничего общего с интернет-провайдерами и их услугами: это происходит даже между двумя устройствами в одной локальной сети» - все это связано с провайдером. Вы можете отключить фильтрацию обратного пути на своем собственном компьютере (если вы работаете в операционной системе, такой как Linux, в которой она есть). Проблема заключается в том, когда ваш провайдер (или его поставщик услуг верхнего уровня) использует его.
Бен Фойгт
0

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

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

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

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

Мэтт Н
источник
0

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

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

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


источник