Czy można połączyć mój dostęp do Internetu przez ISP i telefon komórkowy? Chcę podzielić pobieranie i przesyłanie [duplikat]

12

Chciałbym używać mojego usługodawcy internetowego tylko do pobierania, a moje telefony komórkowe 4G tylko do przesyłania. Wynika to z tego, że prędkość wysyłania mojego ISP jest niska, ale pobieranie jest OK, a przesyłanie 4G jest świetne i bezpłatne (płacę tylko za pobieranie).

Więc jeden komputer, dwa połączenia: ISP do pobrania i 4G do przesłania. W ten sposób płaciłbym tyle samo co dzisiaj, ale zwiększyłem przesyłanie z 0,1 Mbit / s do około 60 Mbit / s.

FreddyJoe
źródło
Tak, to jest duplikat i istnieje wiele innych podobnych pytań, w tym moje kilka tygodni temu, ale nigdy nie wydają się uzyskać prostej odpowiedzi!
Lefty
Ponieważ wydaje się, że nie mają prostej odpowiedzi, pozwoliłem temu żyć. Przeczytałem inne i nie naprawiły problemu, nawet po 1000 odsłon.
FreddyJoe
1
@ Lewy: Jeśli chcesz zwrócić uwagę na swoje pytanie, zaoferuj nagrodę.
Karan
Czy nie ma takiego oprogramowania? Mam wrażenie, że czytam o tym około miesiąc temu
Jon
1
Wiesz, to pytanie jest w rzeczywistości inne niż to, z którym to pytanie jest powiązane i twierdzi się, że jest duplikatem. Chodzi o łączenie połączeń, to pytanie jest czymś więcej.
Matt H

Odpowiedzi:

8

Chociaż rozdzielenie wysyłania i pobierania między połączeniami jest praktycznie niemożliwe (jak opisano szczegółowo w innych odpowiedziach), możliwe jest ręczne obejście tego problemu.

Możesz manipulować domyślnym połączeniem, przełączając je w zależności od zadania, które chcesz rozpocząć. Domyślnym połączeniem w systemie Windows jest najpierw podłączony interfejs, jego kolejność jest obliczana przez Metric (który ma tendencję do umieszczania sieci bezprzewodowej nad kablem).

Możesz łatwo zastąpić metrykę przy pomocy ręcznej kolejności w zaawansowanych ustawieniach połączeń sieciowych: Jak zmienić domyślne połączenie w systemie Windows . (Powinno działać tak samo od XP do 8.1 z niewielkimi różnicami lub bez)

Większość współczesnych programów korzysta z domyślnego połączenia zapewnionego przez system, po ustanowieniu połączenia będzie ono (powinno) pozostać na nim. Zazwyczaj oznacza to, że program będzie używał połączeń domyślnych w momencie uruchomienia. Przełączając domyślne połączenie przed otwarciem połączenia, możesz przełączać połączenie w zależności od zadania i utrzymywać oba otwarte jednocześnie.

Należy pamiętać, że niektóre programy (np. Menedżery pobierania / wysyłania) będą otwierać połączenia dla zadania, a nie dla sesji, więc przebieg może się różnić.

PTwr
źródło
8

To jest niemożliwe. Podziękowania są integralną częścią protokołu kontroli transmisji. Jeśli podzielisz dane przychodzące i wychodzące wyraźnie między dwa interfejsy, z natury wyłączysz komponent potwierdzenia protokołu.

TCP jest protokołem zorientowanym na połączenie, co oznacza, że ​​połączenie jest ustanawiane i utrzymywane, dopóki aplikacje na każdym końcu nie zakończą wymiany komunikatów. Określa sposób podziału danych aplikacji na pakiety, które sieci mogą dostarczyć, wysyła pakiety i przyjmuje pakiety z warstwy sieci, zarządza kontrolą przepływu i - ponieważ ma na celu zapewnienie bezbłędnej transmisji danych - obsługuje retransmisję porzuconych lub zniekształconych pakietów a także potwierdzenie wszystkich przychodzących pakietów. W modelu komunikacji Open Systems Interconnection (OSI) TCP obejmuje części warstwy 4, warstwę transportową oraz części warstwy 5, warstwę sesji.

Routery mogą implementować równoważenie obciążenia sieciowego między oddzielnymi interfejsami, ale zazwyczaj działa to na zasadzie mieszania. Oznacza to, że połączenie jest ustanawiane na danym interfejsie w oparciu o algorytm mieszający i utrzymywane na tym interfejsie do momentu jego zakończenia. Nawet w przypadku drogich routerów każdy interfejs jest wymagany do utrzymania ustanowionego połączenia do czasu zakończenia.


Dodatek: Być może jest to możliwe, ale zakres wdrożenia czyni go niepraktycznym. Poza tym, nawet jeśli zdołasz odciążyć cały ruch do tetheringu komórkowego, jak długo potrwa, zanim dostawca usług internetowych zaktualizuje warunki korzystania z usługi? Prawdopodobnie już gdzieś tam jest zasada dozwolonego użytku. Oto wymagania.

  • Fałszowanie źródłowego adresu IP wychodzenia z ruchu za pośrednictwem modemu mobilnego, aby pasowało do adresu wychodzenia z ruchu za pośrednictwem połączenia z usługodawcą internetowym, aby powrócił przez oszustwo ISP. Można to zrobić za pomocą iptables.
  • Kieruj ruchem lokalnym przez teather mobilnego. Coś w stylu: „dodaj trasę 192.168.0.0/16 maska ​​255.255.0.0 [zewnętrzny adres IP modemu mobilnego]. Być może uruchom DDNS, aby uniknąć konieczności częstej aktualizacji.

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

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

Jeśli chcesz stać się dużym dostawcą usług internetowych, spójrz na routing asymetryczny z BGP.

Alex Atkinson
źródło
11
To jest baloney; w tej odpowiedzi jest bardzo mało, co jest faktycznie błędne, ale wszystko to jest zupełnie nieistotne.
Ben Voigt,
1
Czy jakaś forma tunelowania nie mogła tego rozwiązać? Podziękowania nadal będą musiały iść w niepożądanym kierunku, ale większość danych nie. A tunelowanie przez UDP mogłoby nawet uniknąć potwierdzeń, prawda?
Artur Gaspar
1
@ArturGaspar: Podziękowania to tylko pakiety danych TCP z ustawioną flagą ACK, podlegają one tym samym regułom, co wszystkie pakiety danych TCP. I nie ma „trzeba iść w niepożądanym kierunku”. Pakiety IP są jak koperty - możesz wpisać swój adres zwrotny, zabrać je na dowolną pocztę i wrzucić do pudełka. Nie trzeba ich umieszczać we własnym pudełku - zastanów się, ile pocztówek jest wysyłanych podczas wakacji. Złapaniem pakietów IP jest filtrowanie odwrotnej ścieżki, które zostało specjalnie zaprojektowane do wykrywania i zapobiegania temu (zwróć uwagę, że fałszowanie adresów zwrotnych jest również możliwe w papierowych przesyłkach pocztowych)
Ben Voigt
1
Twierdzenie w tej odpowiedzi, że „Jeśli wyraźnie rozdzielisz dane przychodzące i wychodzące między dwa interfejsy, z natury wyłączysz składnik potwierdzenia protokołu”. jest jedną z części, która jest całkowicie błędna. Potwierdzenia TCP działają między punktami końcowymi, a ścieżka obrana przez pakiety wcale nie ma znaczenia (dopóki nie upłynie czas do przeżycia) i na pewno nie musi się zgadzać.
Ben Voigt,
1
Nie można podzielić danych przychodzących i wychodzących? Satelitarne pobieranie szerokopasmowe z wysyłaniem Dialup było w sprzedaży w Aus od lat. Google „
Odbiór w
4

Można korzystać z obu dostępów do Internetu, aby dzielić ładunek pobierania / wysyłania, ale zawsze tylko na jedno połączenie. Tak więc jedno połączenie TCP (lub UDP) może przejść tylko przez jedno łącze. Wspomniano o tym również w drugiej odpowiedzi - dla wychodzących pakietów TCP należy odbierać pakiety potwierdzające, które muszą przechodzić przez ten sam interfejs.

Możesz ręcznie zmienić tabelę routingu, na przykład przed wykonaniem dużego przesyłania youtube, aby przekierować cały ruch z youtube przez Internet z większą prędkością przesyłania, a następnie zmienić go z powrotem. Byłoby to jednak trudne, ponieważ YouTube używa wielu różnych adresów IP (routing działa na IP, a nie na nazwach hostów). Ale w przypadku niektórych firmowych serwerów FTP może to być wykonalne.

Dotyczy to całego domowego dostępu do Internetu, pod którym otrzymałeś adres IP od swojego usługodawcy internetowego. Tak więc na pierwszym ISP dostajesz np. IP 1.2.3.4, ale na telefonie komórkowym dostajesz IP swojego operatora sieci telefonicznej, na przykład 5.6.7.8. Całe połączenie (dane wychodzące i przychodzące) musi przebiegać tylko z jednym z tych adresów IP.

W przypadku komercyjnego i serwerowego hostingu Internetu można uzyskać jeden adres IP, który jest niezależny od dostawcy usług internetowych, dzięki czemu można jednocześnie korzystać z większej liczby połączeń internetowych.

Marki555
źródło
Zawsze możesz użyć lokalnego proxy HTTP lub SOCKS zamiast ręcznie edytować tabelę routingu. W ten sposób możesz czysto oddzielić dwa połączenia po prostu poprzez dodatek do przeglądarki, taki jak FoxyProxy.
sleblanc
Ciekawa sugestia, ale nie sądzę, że możesz podać źródłowy adres IP w konfiguracji proxy (ponieważ wychodzący interfejs sieciowy jest wybierany przez źródłowy adres IP).
Marki555,
2

Konieczne byłoby połączenie nakładkowe (tunelowe), które obsługuje różne punkty końcowe dla ruchu w górę i w dół. Jedynym znanym mi protokołem, który obsługuje to natywnie, jest LISP (Locator Identifier Separation Protocol). Jeśli możesz znaleźć dostawcę LISP w pobliżu, być może będziesz mógł kupić od niego usługę oprócz bieżących połączeń. Prawdopodobnie nie będzie za darmo.

Sander Steffann
źródło
2

Technicznie rzecz biorąc, ta funkcja jest nieodłącznie wbudowana we wszystkie sieci oparte na IP (musisz mieć adres IP z możliwością publicznego routingu) i aktywowane po prostu przez zmianę tabeli routingu po stronie klienta. Najprawdopodobniej ruch przeznaczony dla własnej sieci lokalnej ISP byłby nadal wysyłany przez ten interfejs, podczas gdy cały pozostały ruch będzie wychodził przez domyślną bramę.

„Źródłowy” adres IP, który musi być dopasowany, aby potwierdzić, a wszystko inne działa, jest wybierany na podstawie gniazda, przez które dane są wysyłane, i, z wyjątkiem niezwykłego przypadku gniazda z ograniczonym interfejsem, nie ma nic do roboty z interfejsem używanym do przenoszenia danych. (W przeciwieństwie do komentarzy, że wychodzący interfejs sieciowy jest wybierany przez źródłowy adres IP, w rzeczywistości tylko tabela routingu ma wpływ).

Jednak fakt, że routing zależy tylko od adresu docelowego, został wykorzystany do szkodliwych celów (fałszowanie pakietów jest ważnym składnikiem ataków odbijających), więc większość operatorów skonfigurowała swoje routery do wdrożenia filtrowania odwrotnej ścieżki i wyrzucania pakietów tam, gdzie źródłowy adres IP adres nie pasuje do ścieżki, ponieważ są one uważane za sfałszowane.

Jeśli nie masz publicznego adresu IP, oprócz filtrowania odwrotnej ścieżki warstwa NAT / PAT uniemożliwi to działanie (źródłowy adres IP używany przez komputer będzie nieistotny w innej sieci i nie będzie być poprawnie przepisany, jeśli pakiet nie wychodzi przez router NAT / PAT).

W rzeczywistości w przypadku dużych sieci wieloadresowych występuje asymetryczny routing. Co ważne, większość implementacji filtrowania ścieżek zwrotnych wymaga istnienia trasy , która pasuje do interfejsu, do którego przybył pakiet; nie musi to być preferowana trasa (ta o najniższym koszcie).

Tak więc „wszystko”, co musisz zrobić, to przekonać swojego dostawcę Internetu (w tym jego dostawców w górę), aby (a) wyłączyć filtrowanie ścieżki zwrotnej lub (b) ustawić nie preferowaną trasę. Tak się nie stanie, routery podstawowe nie są w stanie obsłużyć trzech miliardów tras, aby mieć jedną dla każdego unikalnego publicznego adresu IP. Dlatego bardzo rzadko są dostępne trasy dla dowolnego bloku mniejszego niż a / 20, z wyjątkiem wewnętrznych do dostawcy usług internetowych, w którym istnieją trasy dla wszystkich lokalnych podsieci.

Ben Voigt
źródło
Być może filtrowanie między różnymi źródłami nie jest wykonywane, jeśli zdarza się, że jego dostawca usług internetowych jest również dostawcą planu komórkowego 4G?
Ángel
@ Ángel: To całkowicie możliwe, ale gdyby ta sama firma świadczyła obie usługi, podejrzewam, że wprowadziłaby tę możliwość na rynek (w końcu internet satelitarny używa już bardzo różnych ścieżek przesyłania i pobierania, obie kontrolowane przez tego samego dostawcę usług internetowych)
Ben Voigt
tylko jeśli oficjalnie poparli taką konfigurację. Większość firm telekomunikacyjnych zapewnia zarówno telefoniczne (połączenia i dane), jak i stacjonarne ADSL. W zależności od (braku) segregacji tych dwóch sieci, może to działać [przez pewien czas], i spodziewałbym się, że taka konfiguracja zepsuje się każdego dnia (ale Freddy mógł cieszyć się tym hackiem do tego czasu ☺)
Ángel
2

Krótka odpowiedź brzmi: w 95% przypadków nie można tego zrobić, a twój mieści się w tym 95%.

Po pierwsze, powiem, że nie ma sensu mówić o osobnym routingu przesyłania i pobierania, ponieważ nawet intensywne zadania pobierania wymagają, aby niektóre pakiety przepływały wstecz do źródła, tj. Każde pobieranie wymaga pewnego przepływu przesyłania (Jest to mniej prawdziwe w przypadku UDP niż w przypadku UDP TCP, ale nieważne).

Gdybyśmy mieli przekazywać przesyłanie połączenia najczęściej pobieranego przez inną kartę sieciową niż ta używana dla części do pobrania, źródło pobierania zobaczyłoby, że odpowiedzi na jego pakiety pochodzą z innego adresu IP niż ten, do którego jest on pobrany wysyłanie pakietów; podstawową funkcją bezpieczeństwa jest ignorowanie pakietów, które rzekomo są powiązane z danym połączeniem, ale pochodzą z adresu strony trzeciej. W związku z tym część konwersacji dotycząca przesyłania zostanie porzucona, a połączenie zostanie przerwane. Nie ma to wiele wspólnego z dostawcami usług internetowych i ich usługami: występuje nawet między dwoma komputerami w tej samej sieci LAN, jeśli jeden z nich próbuje połączyć się z adresem IP, używając w tym samym połączeniu dwóch różnych NICS (stąd dwa różne adresy IP) .

Dlatego mówimy o połączeniach, a nie o przesyłaniu / pobieraniu, ale wtedy można sformułować swoje pytanie w następujący sposób: czy mogę mieć komputer z dwoma kartami sieciowymi podłączonymi do sieci, użyć dwóch kart sieciowych dla dwóch różnych połączenia, powiedzmy wolne połączenie dla powolnej, żmudnej pracy, takiej jak e-mail, i szybkie połączenie dla szybkiego procesu, takiego jak pobieranie strony internetowej?

Krótka odpowiedź na to dobrze postawione pytanie brzmi: w systemie Windows * Nix (w tym MacOS) i Android nr. W systemie Linux tak, możesz.

Powodem, dla którego nie możesz tego zrobić w systemie Windows (dowolna wersja), * Nix i Android, jest to, że każda tabela routingu może mieć tylko jedną bramę domyślną (* tj. * Adres, na który wysyłasz wszystkie pakiety nieprzeznaczone do sieci LAN), Systemy operacyjne mogą obsługiwać tylko jedną tablicę routingu: stąd pojedyncza brama.

Zamiast tego, aby przypisać różne aplikacje do różnych interfejsów, potrzebujesz dwóch odrębnych funkcji: po pierwsze, zdolność dwóch do jednoczesnego uruchamiania dwóch tabel routingu i dwóch, możliwość wiązania aplikacji z dowolną tabelą routingu. Tylko jądro Linuksa (lata świetlne przed konkurencją) ma takie możliwości w chwili pisania. Jądro * Nix częściowo to rekompensuje poprzez rozsądne użycie swojej zapory ogniowej, pfsense, nie osiągając jednak pełnego wyniku.

Możliwość jednoczesnego uruchamiania dwóch tabel routingu (nazywanych routingiem strategii lub routingiem źródłowym ) oznacza, że ​​pakiety są różnie trasowane w zależności od ich adresu IP. Jest to niezwykle przydatna funkcja, jeśli budujesz router.

Aby jednak korzystać z różnych kart sieciowych (a tym samym IPS) w zależności od aplikacji, potrzebujesz sieciowych przestrzeni nazw , funkcji jądra systemu Linux, która pozwala zbudować osobną powłokę z własnym stosem sieci. Teraz wszystkie procesy uruchomione w tej osobnej powłoce będą kierowane zgodnie z tabelą routingu w przestrzeni nazw sieci, a nie na głównym komputerze.

Jest to oczywiście forma wirtualizacji, choć słabsza niż, powiedzmy, kontener Linux, nie wspominając o maszynie wirtualnej. Ale to jest prawdziwy sposób, za pomocą jednego komputera, aby kierować różne procesy przez różne interfejsy.

Podsumowując, w systemie Linux (i tylko w systemie Linux) możesz uruchomić osobną przestrzeń nazw sieci, która jest na przykład połączona przez VPN z miejscem pracy, aby uzyskać dostęp do zasobów pracy, a jeśli używasz przeglądarki Firefox, wydaje się, że masz siedzibę w miejscu pracy, a jednocześnie uruchamiasz Google Chrome poza przestrzenią nazw sieciowych, a tym samym (w Chrome) masz siedzibę w domu.

MariusMatutiae
źródło
2
„rzekomo związany z danym połączeniem, ale pochodzący z adresu strony trzeciej” ... adres źródłowy w pakiecie jest jedyną rzeczą, która sprawia, że ​​jest on powiązany z danym połączeniem, a filtrowanie ścieżki zwrotnej nie ma znaczenia, czy pakiety, które upuszcza, są zorientowane na połączenie lub nie (większość ataków polegających na fałszowaniu odbywa się przeciwko protokołom bezpołączeniowym).
Ben Voigt,
„Nie ma to wiele wspólnego z dostawcami usług internetowych i ich usługami: występuje nawet między dwoma komputerami w tej samej sieci LAN” - ma wszystko wspólnego z dostawcą usług internetowych. Możesz wyłączyć filtrowanie ścieżek zwrotnych na własnym komputerze (jeśli korzystasz z systemu operacyjnego takiego jak Linux, który ma go w pierwszej kolejności). Problem polega na tym, że korzysta z niego Twój dostawca usług internetowych (lub ich dostawca usług upstream).
Ben Voigt,
0

Podział powiązanych powiązań między różnymi dostawcami byłby możliwy tylko wtedy, gdyby jeden adres IP był dostępny / dostępny dla obu dostawców. Ten adres IP byłby zwykle dostarczany jako część większego bloku adresów za pośrednictwem BGP. A gdyby tak było, byłbyś w stanie to zrobić z BGP za pomocą funkcji zwanej ścieżką oczekiwania i lokalnymi regułami preferencji w BGP.

Nawet jeśli uda ci się uzyskać takie porozumienie między dostawcą usług internetowych a dostawcą telefonu komórkowego, aby twój adres IP był osiągalny za pośrednictwem obu sieci, prawdopodobnie kosztowałbyś więcej niż płacisz teraz za oba połączenia.

Jeśli z drugiej strony pytasz o to, czy można faworyzować połączenie 4G w przypadku przeważającej sesji przesyłania, na przykład podczas przesyłania plików za pomocą ftp / sftp lub http. I dla normalnego przeglądania sieci, aby ten ruch wykorzystywał twojego ISP, to myślę, że odpowiedź może być. Ale być może do pracy trzeba będzie sklasyfikować sesję jako głównie przesyłającą lub pobierającą. Ponieważ ftp, http i inne protokoły mogą być używane w równym stopniu do wysyłania lub pobierania, nie można tego ustalić na podstawie numeru portu. Tak więc jedyną alternatywą jest spojrzenie na środkowy strumień danych. Na tym etapie decyzja zostałaby podjęta, ponieważ dane już płyną. Więc nie można tego zautomatyzować.

Więc w twoim przypadku. NIE. (przynajmniej nie, gdy masz sznurowadło).

Matt H.
źródło
0

Potrzebujesz kontrolowanego hosta, do którego można dotrzeć z obu połączeń.

Skonfiguruj dwa tunele VPN dla tego hosta, każdy z innego interfejsu po twojej stronie. Kiedy już to zrobisz, to tak, jakbyś miał dwa kable Ethernet. Możesz użyć łączenia, aby użyć ich razem jako większego kabla, a następnie spróbuj przepuścić przez niego ruch.

Teraz nie wiem, czy rzeczywiście osiągnąłbyś z tego dużą wydajność (opóźnienie sieci mobilnej jest znacznie wyższe niż w przypadku łącza szerokopasmowego, co może powodować problemy), ale powinieneś spróbować i przekonać się.


źródło