На моем ПК установлено 4 сетевых карты, 2 проводные сетевые карты Gigabit Ethernet, а также 2 беспроводные сетевые карты. (Один Broadcom с проприетарными драйверами и Ralink с открытым программным обеспечением, который работает намного лучше, чем Broadcom.)
Мой мобильный телефон может использовать беспроводное соединение с моим ПК, но у меня также есть проводное подключение к Интернету. Поэтому у меня есть несколько подключений к Интернету для доступа в Интернет. Как я могу объединить 2 или более соединений вместе и сбалансировать их, чтобы получить единый опыт работы в Интернете, который представляет собой сумму всех подключенных к нему подключений к Интернету.
Например, если у меня есть модем с подключением к Интернету со скоростью 1024 кБ / с, а другой - с 512 кБ / с, и один небольшой, предлагающий 128 кБ / с, после балансировки нагрузки и объединения всех подключений (соединения или объединения), я могу загрузить на скорость 1664 кБ / с, используя все 3 интернет-соединения, например, как одно.
Этот вопрос всегда интересовал меня.
источник
Ответы:
Я делаю что-то подобное на работе, используя Ubuntu 11.04. Мы используем инструмент настройки брандмауэра Shorewall, который, помимо того, что отлично справляется со своей работой, предоставляет несколько элементарных инструментов маршрутизации для нескольких интернет-провайдеров, которые могут соответствовать вашим потребностям. Вы можете найти некоторые документы об этом здесь: http://www.shorewall.net/MultiISP.html
Однако все сводится к тому, что вы не можете использовать несколько интернет-провайдеров для одного соединения ... все не так просто. Лучшее, что вы можете сделать, это попытаться направить новые соединения равномерно между различными поставщиками.
Это сложная проблема. Вы, вероятно, в конечном итоге будете бить головой о стену (я, конечно, сделал), прежде чем вы закончите отладку каждой проблемы. Так что, как предлагали другие авторы, вам, возможно, стоит подумать над тем, насколько сильно ваше желание.
источник
Вы можете сделать это, используя пакет,
ifenslave
который присоединяет и отсоединяет подчиненные сетевые интерфейсы к соединяющему устройству.Установка:
Загрузить модуль ядра
Настройте свои интерфейсы:
Пример конфигурации, чтобы объединить eth0 и eth1 в качестве подчиненных для вашего интерфейса соединения:
Перезагрузите сеть:
Подведение вверх / вниз ограниченного интерфейса:
В качестве примера мы используем несколько режимов склеивания:
Описание режима активного резервного копирования :
Политика активного резервного копирования: только один ведомый в соединении активен. Другой ведомый становится активным, если и только если активный ведомый отказывает. MAC-адрес связи виден снаружи только на одном порту (сетевой адаптер), чтобы не перепутать коммутатор. Этот режим обеспечивает отказоустойчивость. Основная опция влияет на поведение этого режима.
Источник и дополнительная информация в сообществе Ubuntu помогают вики .
источник
Это немного старый вопрос, но если вы все еще хотите знать ..
Есть 2 типичных сценария, о которых gertvdijk и pl1nk спорили в одном из ответов:
У вас есть компьютер с 2 общедоступными IP-адресами (2 разных интернет-провайдера), и вы подключаетесь к другому хосту (например, к серверу в центре обработки данных с толстой линией, которая превышает суммарную пропускную способность обоих подключений ISP вашего компьютера). Таким образом, вы устанавливаете соединение с хостом через 2 соединения, а затем хост (сервер) обслуживает ваш трафик через свое собственное интернет-соединение. В этом сценарии вы можете получить почти 100% объединенной пропускной способности в обоих направлениях для одного соединения.
Это частный случай объединения / объединения / объединения, когда несколько интерфейсов уровня 2 (одной сети) объединены. Этого можно достичь, установив соединения VPN уровня 2 (отвод) на каждом интерфейсе интернет-провайдера от компьютера к хосту и связав их вместе (режим циклического перебора), чтобы иметь один интерфейс. Ограничивающим фактором в этом сценарии является то, насколько различаются задержки (ping) при каждом подключении ISP к хосту. Чем они похожее и стабильнее, тем лучше. Мы используем его в одной из наших установок, он работает хорошо. Если вы хотите узнать подробности о том, как это реализовать, просто дайте мне знать.
Тогда другой сценарий будет без промежуточного хоста, то есть прямого подключения от ваших интернет-провайдеров к различным веб-серверам по всему миру. В этом случае лучшее, что вы можете получить, - это равномерно распределить исходящие соединения между интерфейсами - то есть один сеанс TCP проходит полностью через одного провайдера, второй сеанс - через другого и так далее. Это происходит потому, что когда вы устанавливаете TCP-соединение, у него есть IP-адреса отправителя и получателя для каждого пакета, а когда сервер получает пакет от другого IP-адреса, для которого не было выполнено TCP-квитирование, он считает пакет ошибочным и отбрасывает его. Поскольку каждое подключение ISP имеет свой собственный общедоступный IP-адрес, для одного и того же сеанса TCP нельзя отправить один пакет по одному соединению с одного IP, а другой - по другому соединению с другим IP.
Вы не достигнете такого высокого суммарного использования полосы пропускания для одного компьютера, как в первом сценарии, но для небольшого офиса это может быть хорошим решением. Чтобы немного его расширить, вы можете реализовать собственные решения для конкретных протоколов. Например, вы можете иметь своего рода прокси на шлюзе (который может быть одним и тем же компьютером) для загрузки http и запрашивать разные части огромного файла, устанавливая разные сеансы TCP через разные интерфейсы ISP. В этом случае результирующая скорость загрузки будет около 100% от объединенной полосы пропускания. Это как разгрузка на шлюз, что делают ReGet, GetRight и подобные загрузчики. Google 'HTTP 206 Частичное содержимое'. Я не знаю никаких готовых решений с открытым исходным кодом для этого сценария, но есть аппаратные устройства, которые делают именно это: google '
источник
echo "bonding" >> /etc/modules
echo -e "alias bond* bonding\noptions bonding max_bonds=10 mode=2 xmit_hash_policy=layer3+4 arp_interval=100 arp_ip_target=10.0.0.1" > /etc/modprobe.d/bonding.conf
echo "+tapX " >> /sys/class/net/bond0/bonding/slaves
проверьте ее состояние с помощью:cat /proc/net/bonding/bond0
На этом этапе весь интернет-трафик должен проходить через bond0 к серверу в центре обработки данных. Там вы должны установить маршрутизацию:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(eth0 должен быть интернетом iface)mode=2 xmit_hash_policy=layer3+4
указания ymode=0
(см. Ссылку @ kernel.org), но сначала проверьте, насколько похожи ссылки через 3G. Если время их пинга отличается более чем на 2-3 мс, или дрожание превышает 1 мс, у вас будет много переупорядочений пакетов, что эффективно снизит скорость агрегированного канала. Вам нужно проверить статистику агрегированных ссылок с помощьюnetstat -s
(ищите повторные передачи) иiperf -s
/iperf -c <server_ip> -d
. Сначала проверьте производительность каждой ссылки, затем мы можем продолжить с решениемя столкнулся с подобной проблемой .. и меня очень заинтересовал подход к решению по первому сценарию г-на. GTH и Анатолий, я очень прошу вас выложить основные конфигурации и скрипты, если это возможно, чтобы протестировать конфигурацию, описанную в первом сценарии.
Теперь я настроил соединения VPN через различных провайдеров ISP, используя комбинированные интерфейсы Tun / Tap (это не связывание, что объясняется в ответе № 8) с помощью этой утилиты:
Net-ISP-Баланс Линкольн Д. Штейн
Распределите нагрузку на ваше интернет-соединение между двумя или более интернет-провайдерами для повышения пропускной способности и надежности.
Домашняя страница проекта: https://lstein.github.io/Net-ISP-Balance/
Этот пакет позволяет балансировать нагрузку на домашнее или малое подключение к Интернету через двух или более интернет-провайдеров. Вы можете использовать его с одним хостом, подключенным к двум Интернет-провайдерам, или на компьютере с маршрутизатором / брандмауэром для балансировки нагрузки всей вашей локальной сети. Сетевой трафик балансируется между обоими соединениями с провайдером для увеличения емкости загрузки и выгрузки, и в случае сбоя одного провайдера другие интернет-провайдеры переходят автоматически.
Пропускная способность распределяется на уровне соединения. Это означает, что вы не увидите агрегированную полосу пропускания в каком-либо конкретном тесте загрузки или скорости, но вы увидите преимущества, когда одновременно происходит несколько передач данных, например, когда несколько человек в вашей семье транслируют фильмы. Кроме того, протоколы передачи файлов с несколькими подключениями, такие как BitTorrent, увидят преимущества балансировки нагрузки.
Это утилита на основе Perl для управления маршрутизацией и iptables в Linux, идеально подходящая для наших целей, фактически сначала создает таблицу маршрутизации для всех провайдеров, а затем равномерно распределяет весь трафик локальной сети между провайдерами, чтобы понять, как работает утилита, предложить рассмотреть небольшой пример (тестовая конфигурация) для 3 isp + 1 lan
источник