Mój komputer ma w sumie 4 karty sieciowe, 2 przewodowe karty sieciowe Gigabit Ethernet, a także 2 bezprzewodowe karty sieciowe. (Jeden Broadcom z zastrzeżonymi sterownikami i Ralink z oprogramowaniem open source, które działa znacznie lepiej niż Broadcom.)
Mój telefon komórkowy może współdzielić swoje połączenie bezprzewodowo z komputerem, ale mam także przewodowe połączenie z Internetem. Mam więc wiele połączeń internetowych, aby uzyskać dostęp do Internetu. Jak mogę połączyć 2 lub więcej połączeń razem i zrównoważyć je, aby cieszyć się jednym połączonym Internetem, że jest to suma wszystkich podłączonych do niego połączeń internetowych.
Na przykład, jeśli mam modem z połączeniem internetowym 1024 kB / s i inny, który oferuje 512 kB / s oraz jeden mały, który oferuje 128 kB / s, po równoważeniu obciążenia i scaleniu wszystkich połączeń (łączenie lub tworzenie grup), można pobrać z prędkość 1664 kB / s przy użyciu wszystkich 3 połączeń internetowych jako jednego na przykład.
To pytanie zawsze mnie intrygowało.
źródło
Odpowiedzi:
Robię coś takiego w pracy, używając Ubuntu 11.04. Uruchamiamy narzędzie do konfiguracji zapory ogniowej Shorewall, które oprócz tego, że doskonale sobie radzi, zapewnia kilka podstawowych narzędzi do routingu wielu dostawców usług internetowych, które mogą pasować do twoich potrzeb. Możesz znaleźć kilka dokumentów na ten temat tutaj: http://www.shorewall.net/MultiISP.html
Sprowadza się to jednak do tego, że nie można używać wielu dostawców usług internetowych dla jednego połączenia ... rzeczy nie są takie proste. Najlepsze, co możesz zrobić, to równomiernie kierować nowe połączenia między różnymi dostawcami.
To złożony problem. Prawdopodobnie skończysz walić głową o ścianę (z pewnością tak zrobiłem), zanim skończysz debugować każdy problem. Tak więc, jak sugerują inne plakaty, możesz mądrze rozważyć, jak silne jest twoje pragnienie.
źródło
Możesz to zrobić za pomocą pakietu,
ifenslave
który dołącza i odłącza slave interfejsy sieciowe do urządzenia łączącego.Zainstalować:
Moduł jądra do łączenia obciążeń
Skonfiguruj swoje interfejsy:
Przykład konfiguracji, aby połączyć eth0 i eth1 jako slave do twojego interfejsu wiązania:
Uruchom ponownie sieć:
Wyświetlanie interfejsu w górę / w dół:
Jako przykład używamy kilku trybów łączenia:
Opis aktywnego trybu tworzenia kopii zapasowej :
Polityka aktywnego tworzenia kopii zapasowych: aktywny jest tylko jeden slave w obligacji. Inny slave staje się aktywny tylko wtedy, gdy aktywny slave ulegnie awarii. Adres MAC obligacji jest widoczny z zewnątrz tylko na jednym porcie (karta sieciowa), aby uniknąć pomylenia przełącznika. Ten tryb zapewnia odporność na uszkodzenia. Podstawowa opcja wpływa na zachowanie tego trybu.
Źródło i więcej informacji na wiki pomocy społeczności Ubuntu .
źródło
To trochę stare pytanie, ale jeśli nadal chcesz wiedzieć ...
Istnieją 2 typowe scenariusze, które argumentowali gertvdijk i pl1nk w jednej z odpowiedzi:
Masz komputer z 2 publicznymi adresami IP (2 różnymi dostawcami ISP) i łączysz się z innym hostem (np. Serwerem w centrum danych z grubą rurką, która jest większa niż łączna przepustowość obu połączeń ISP twojego komputera). Nawiązujesz połączenie z hostem za pomocą 2 połączeń, a następnie host (serwer) obsługuje ruch za pośrednictwem własnego połączenia internetowego. W tym scenariuszu można uzyskać prawie 100% łącznej przepustowości w obu kierunkach dla jednego połączenia.
Jest to szczególny przypadek łączenia / łączenia / łączenia agregacji, w którym interfejsy wielu warstw 2 (ta sama sieć) są ze sobą połączone. Można to osiągnąć, ustanawiając połączenia warstwy 2 VPN (tap) na każdym interfejsie ISP od komputera do hosta i łącząc je ze sobą (tryb round-robin), aby mieć jeden interfejs. Czynnikiem ograniczającym w tym scenariuszu jest to, jak różne są opóźnienia (ping) na każdym połączeniu ISP z hostem. Im bardziej są podobne i stabilne, tym lepiej. Używamy go w jednej z naszych instalacji, działa dobrze. Jeśli chcesz poznać szczegóły dotyczące jego wdrożenia, daj mi znać.
Wtedy inny scenariusz byłby bez pośredniego hosta, tj. Bezpośrednie połączenie z interfejsów ISP do różnych serwerów WWW na całym świecie. W takim przypadku najlepsze, co możesz uzyskać, to równomiernie rozdzielić połączenia wychodzące między interfejsami - tzn. Jedna sesja TCP przechodzi całkowicie przez jednego dostawcę usług internetowych, druga sesja za pośrednictwem innego i tak dalej. Dzieje się tak, ponieważ po ustanowieniu połączenia TCP ma on początkowy i docelowy adres IP dla każdego pakietu, a gdy serwer odbiera pakiet z innego adresu IP, dla którego nie przeprowadzono uzgadniania TCP, uznaje pakiet za błędny i upuszcza go. Ponieważ każde połączenie ISP ma swój własny publiczny adres IP, dla tej samej sesji TCP nie można wysłać jednego pakietu za pośrednictwem jednego połączenia z jednego adresu IP, a drugiego za pośrednictwem innego połączenia z innym adresem IP.
Nie osiągniesz tak wysokiego zagregowanego wykorzystania przepustowości dla pojedynczego komputera, jak w pierwszym scenariuszu, ale dla małego biura może to być dobre rozwiązanie. Aby go nieco rozszerzyć, można wdrożyć niestandardowe rozwiązania dla określonych protokołów. Na przykład możesz mieć jakiś rodzaj proxy w bramie (którym może być ten sam komputer) do pobierania http i poprosić o różne części ogromnego pliku ustanawiającego różne sesje TCP za pośrednictwem różnych interfejsów ISP. W takim przypadku wynikowa szybkość pobierania wynosiłaby blisko 100% łącznej przepustowości. To jak odciążanie bramy, co robią ReGet, GetRight i podobne programy pobierające. Google „Częściowa treść HTTP 206”. Nie znam żadnych gotowych rozwiązań typu open source dla tego scenariusza, ale istnieją urządzenia sprzętowe, które robią to dokładnie: google
źródło
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
Sprawdź jego stan za pomocą:cat /proc/net/bonding/bond0
Na tym etapie cały ruch internetowy powinien przepływać przez bond0 do serwera w centrum danych. Tam powinieneś ustawić routing:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(eth0 ma być internetowym iface)mode=2 xmit_hash_policy=layer3+4
ymode=0
(patrz link @ kernel.org), ale najpierw sprawdź, jak podobne są łącza przez 3G. Jeśli czasy pingów różnią się więcej niż 2-3 ms lub jitter jest dłuższy niż 1 ms, będziesz mieć dużo ponownego zamawiania pakietów, skutecznie zmniejszając szybkość agregowanego łącza. Będziesz musiał sprawdzić zagregowane statystyki linków za pomocąnetstat -s
(poszukaj retransmisji) iiperf -s
/iperf -c <server_ip> -d
. Najpierw sprawdź wydajność każdego linku, a następnie możemy kontynuować rozwiązanienapotkałem podobny problem .. i byłem bardzo zainteresowany podejściem do rozwiązania według pierwszego scenariusza autorstwa pana. GTH i Anatoli, bardzo proszę o przedstawienie podstawowych konfiguracji i skryptów, jeśli to możliwe, w celu przetestowania konfiguracji opisanej w pierwszym scenariuszu.
teraz skonfigurowałem połączenia VPN za pośrednictwem różnych dostawców ISP, używając połączonych interfejsów tun / tap (to nie jest wiązanie, co wyjaśniono w odpowiedzi nr 8) za pomocą tego narzędzia:
Net-ISP-Balance autorstwa Lincolna D. Steina
Równoważ obciążenie połączenia internetowego między dwoma lub więcej dostawcami usług internetowych, aby zwiększyć przepustowość i niezawodność
Strona główna projektu: https://lstein.github.io/Net-ISP-Balance/
Ten pakiet umożliwia równoważenie obciążenia połączenia internetowego w domu lub w małej firmie przez co najmniej dwóch dostawców usług internetowych. Możesz go używać z jednym hostem podłączonym do dwóch dostawców usług internetowych lub na routerze / zaporze sieciowej w celu zrównoważenia obciążenia całej sieci LAN. Ruch sieciowy jest zrównoważony między obydwoma połączeniami ISP, aby zwiększyć pojemność wysyłania i pobierania, a jeśli jeden dostawca nie powiedzie się, drugi dostawca (y) przejmie automatycznie.
Przepustowość jest rozdzielana na poziomie poszczególnych połączeń. Oznacza to, że nie zobaczysz zagregowanej przepustowości na żadnym konkretnym teście pobierania lub testu prędkości, ale zobaczysz korzyści, gdy wiele transmisji danych ma miejsce jednocześnie, na przykład, gdy kilka osób w twoim domu przesyła strumieniowo filmy. Ponadto protokoły przesyłania plików z wieloma połączeniami, takie jak BitTorrent, dostrzegą zalety równoważenia obciążenia.
jest to oparte na Perlu narzędzie do zarządzania routingiem i iptables w Linuksie, idealne do naszych celów, w rzeczywistości najpierw tworzy tabelę routingu dla wszystkich dostawców, a następnie równomiernie rozdziela cały ruch LAN między dostawcami, aby zrozumieć, jak działa to narzędzie, sugerujemy rozważyć mały przykład (konfiguracja testowa) dla 3 isp + 1 lan
źródło