web-dev-qa-db-ja.com

ISPと携帯電話のインターネットアクセスを統合することはできますか?ダウンロードとアップロードを分割したい

ISPをダウンロード専用に使用し、携帯電話の4G接続をアップロード専用に使用したいと思います。これは、ISPのアップロード速度が遅いが、ダウンロードは問題なく、4Gアップロードは素晴らしく無料であるためです(私はダウンロードに対してのみ支払います)。

つまり、1台のPC、2つの接続:ダウンロード用のISP、およびアップロード用の4Gです。これを行うと、今日と同じ料金を支払うことになりますが、アップロードを0.1 Mbit/sから約60Mbit/sに増やします。

12
FreddyJoe

これは不可能です。確認応答は、伝送制御プロトコルの不可欠な部分です。着信データと発信データを2つのインターフェイス間で明確に分割すると、プロトコルの確認応答コンポーネントが本質的に無効になります。

TCPはコネクション型プロトコルです。つまり、両端のアプリケーションプログラムがメッセージの交換を完了するまで、接続が確立および維持されます。これは、アプリケーションデータをネットワークが配信できるパケットに分割する方法を決定し、ネットワークレイヤーとの間でパケットを送受信し、フロー制御を管理し、エラーのないデータ送信を提供することを目的としているため、ドロップまたは文字化けしたパケットの再送信を処理します。到着したすべてのパケットの確認応答と同様に。オープンシステム相互接続(OSI)通信モデルでは、TCPは、レイヤー4の一部、トランスポート層、およびレイヤー5の一部、セッション層をカバーします。

ルーターは、別々のインターフェース間でネットワーク負荷分散を実装できますが、通常はハッシュで動作します。これは、接続がハッシュアルゴリズムに基づいて特定のインターフェイスで確立され、終了するまでそのインターフェイスで維持されることを意味します。高価なルーターを使用している場合でも、各インターフェイスは、完了するまで確立された接続を維持する必要があります。


追加:それは可能かもしれませんが、実装の範囲はそれを非現実的にします。さらに、すべてのトラフィックをモバイルテザーにオフロードできたとしても、ISPが利用規約を更新するまでにどれくらいかかると思いますか?すでにどこかにフェアユースのポリシーがある可能性があります。要件は次のとおりです。

  • モバイルテザーを介して出力されるトラフィックのスプーフィング送信元IPを、ISP接続を介して出力されるトラフィックの送信元IPと一致させ、ISPconを介して返されるようにします。これは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

ISPを大きくしたい場合は、BGPを使用した非対称ルーティングを検討してください。

8
Alex Atkinson

接続間でアップロードとダウンロードを分離することは事実上不可能ですが(他の回答で詳細に説明されているように)、手動による回避策が考えられます。

デフォルトの接続を操作して、開始するタスクに応じて切り替えることができます。 Windowsのデフォルト接続は最初に接続されたインターフェイスであり、その順序は メトリック (ケーブルよりもワイヤレスを優先する傾向があります)によって計算されます。

ネットワーク接続の詳細設定で、手動の順序でメトリックを簡単に上書きできます: Windowsでデフォルトの接続を変更する方法 。 (XPから8.1まで、わずかな違いまたは違いなしで同じように機能するはずです)

最近のほとんどのプログラムは、システムによって提供されるデフォルトの接続を使用します。接続が確立された後、接続は維持されます(保持される必要があります)。通常、プログラムは、起動時にデフォルトであった接続を使用することを意味します。接続を開く前にデフォルトの接続を切り替えることにより、タスクに応じて接続を切り替え、両方を同時に開いたままにすることができる場合があります。

一部のプログラム(ダウンロード/アップロードマネージャーなど)は、セッションごとではなくタスクごとに接続を開くため、マイレージが異なる場合があることに注意してください。

8
PTwr

両方のインターネットアクセスを使用してダウンロード/アップロードの負荷を共有することは可能ですが、常に接続ごとにのみ使用できます。したがって、1つのTCP(またはUDP)接続は1つのリンクを介してのみ行くことができます。これは他の回答にも記載されています-発信TCPパケットの場合、確認応答を受信する必要がありますパケットとこれらは同じインターフェースを経由する必要があります。

たとえば、大規模なYouTubeアップロードを行う前に、ルーティングテーブルを手動で変更して、インターネット経由ですべてのYouTubeトラフィックをより速いアップロード速度で迂回させてから、元に戻すことができます。しかし、youtubeは多くの異なるIPアドレスを使用するため、難しいでしょう(ルーティングはホスト名ではなくIPで機能します)。しかし、一部の会社のFTPサーバーでは、それは実行可能である可能性があります。

これは、ISPからIPアドレスが与えられているすべての家庭用インターネットアクセスに当てはまります。したがって、最初のISPでは、たとえばIP 1.2.3.4ですが、携帯電話では、5.6.7.8などの電話ネットワーク事業者のIPを取得します。接続全体(送信データと受信データ)は、これらのIPアドレスの1つだけを使用する必要があります。

商用およびサーバーホスティングインターネットの場合、ISPから独立した1つのIPアドレスを取得できるため、同時により多くのインターネット接続を使用できます。

4
Marki555

技術的に言えば、この機能は本質的にIP上に構築されたすべてのネットワークに組み込まれており(パブリックにルーティング可能なIPアドレスが必要です)、クライアント側のルーティングテーブルを変更するだけでアクティブになります。ほとんどの場合、ISP自身のローカルネットワーク向けのトラフィックは引き続きそのインターフェイスを介して送信されますが、他のすべてのトラフィックはデフォルトゲートウェイを経由して送信されます。

確認応答やその他すべてが機能するために一致する必要がある「送信元」IPアドレスは、データの送信に使用されるソケットに基づいて選択され、インターフェイスが制限されたソケットの異常な場合を除いて、何もする必要はありません。データを運ぶために使用されるインターフェースで。 (発信ネットワークインターフェイスは送信元IPによって選択されるというコメントとは異なり、実際にはルーティングテーブルのみが影響を及ぼします)。

ただし、ルーティングが宛先アドレスのみに依存するという事実は悪意のある目的で使用されているため(パケットスプーフィングはリフレクション攻撃の重要なコンポーネントです)、ほとんどの通信事業者はルーターを構成してリバースパスフィルタリングおよび送信元IPアドレスがパスと一致しないパケットは、スプーフィングされていると見なされるため、破棄します。

パブリックIPアドレスがない場合、リバースパスフィルタリングに加えて、NAT/PATレイヤーはこれが機能しないようにします(コンピューターで使用されている送信元IPアドレスは、他のネットワークでは意味がなく、機能しません)パケットがNAT/PATルーターを経由しない場合は、正しく書き換えられます)。

実際、大規模なマルチホームネットワークの場合、非対称ルーティングが発生します。重要なことに、リバースパスフィルタリングのほとんどの実装では、パケットが到着したインターフェイスに一致するルートが存在する必要があります。優先ルート(コストメトリックが最も低いルート)である必要はありません。

したがって、あなたがしなければならない「すべて」は、インターネットプロバイダー(上流のプロバイダーを含む)に、(a)リバースパスフィルタリングを無効にするか、(b)非優先ルートを設定するように説得することです。これは起こりません。コアルーターは、一意のパブリックIPアドレスごとに1つを持つために、30億のルートを処理できません。したがって、すべてのローカルサブネットのルートが存在するISPの内部を除いて、/ 20よりも小さいブロックのルートを持つことは非常にまれです。

2
Ben Voigt

簡単に言うと、95%の場合、それは不可能であり、あなたの場合はその95%の範囲内に収まります。

まず、アップロードとダウンロードを別々にルーティングすることについて話すのはほとんど意味がありません。激しいダウンロードタスクでも、一部のパケットがソースに逆流する必要があるためですieダウンロードにはアップロードフローが必要です(これはTCPよりもUDPの場合は当てはまりませんが、気にしないでください)。

ほとんどダウンロードされた接続のアップロードを、ダウンロード部分に使用されたものとは異なるNICを介してチャネル化する場合、ダウンロードのソースは、パケットへの応答が異なるものから発信されていることを確認します。パケットの送信先のIPアドレスよりもIPアドレス。特定の接続に関連していると称するパケットを無視するのは基本的なセキュリティ機能ですが、サードパーティのアドレスから発信されます。したがって、会話のアップロード部分はドロップされます。これはISPとそのサービスとはほとんど関係がありません。同じLAN上の2つのPC間でも、2つのうちの1つが同じ接続で使用してIPアドレスに接続しようとすると発生します。 2つの異なるNIC(したがって2つの異なるIP)。

これが、アップロード/ダウンロードではなく接続について説明する理由ですが、次のように質問を再定式化することができます:2つのNICが両方ともネットワークに接続されているPCを使用して、2つのNICを2つの異なるものに使用できますか接続、たとえば、電子メールのような遅くて退屈な仕事のための遅い接続と、Webページのダウンロードのような速いプロセスのための速い接続?

この適切な質問に対する簡単な答えは次のとおりです。Windowsでは* Nix(MacOSを含む)およびAndroidいいえ。Linuxでははい、できます。

Windows(すべてのバージョン)、* NixおよびAndroid)でこれを実行できない理由は、どのルーティングテーブルにもデフォルトゲートウェイ(*つまり*すべてのパケットの送信先アドレス)を1つだけ持つことができるためです。 LAN宛てではありません)、これらのOSは1つのルーティングテーブル、つまり単一のゲートウェイしか処理できません。

代わりに、異なるアプリケーションを異なるインターフェイスに割り当てるには、2つの異なる機能が必要です。1つは2つのルーティングテーブルを同時に実行する機能、もう1つはアプリケーションをいずれかのルーティングテーブルに関連付ける機能です。この記事の執筆時点では、Linuxカーネル(競合他社よりもわずか数年先)だけがこれらの機能を備えています。 * Nixカーネルは、ファイアウォールpfsenseを適切に使用することで部分的にそれを補いますが、完全な結果は得られません。

2つのルーティングテーブルを同時に実行する機能(ポリシールーティングまたはソースベースルーティングと呼ばれる)は、パケットがIPアドレスに応じて異なる方法でルーティングされることを意味します。これは、ルーターを構築している場合に非常に便利な機能です。

ただし、アプリケーションに応じて異なるNIC(したがってIPS)を使用するには、ネットワーク名前空間が必要です。これは、独自のネットワークスタックを使用して個別のシェルを構築できるLinuxカーネル機能です。これで、この個別のシェル内で実行されているプロセスはすべて、メインPCのルーティングテーブルではなく、ネットワーク名前空間のルーティングテーブルに従ってルーティングされます。

もちろん、これは仮想化の一形態ですが、仮想マシンは言うまでもなく、たとえばLinuxコンテナよりも弱い形式です。しかし、1台のPCで、さまざまなプロセスをさまざまなインターフェイスを介してルーティングするのが実際の方法です。

要約すると、Linux(およびLinuxのみ)では、別のネットワーク名前空間を実行できます。これは、たとえば、VPNを介して職場に接続されているため、職場のリソースにアクセスできます。Firefoxを実行している場合は、あなたは職場に拠点を置いているように見えますが、同時にGoogle Chromeはネットワーク名前空間の外で実行されているため、(Chromeでは)自宅に拠点を置いているように見えます。

2
MariusMatutiae

アップストリームトラフィックとダウンストリームトラフィックの異なるエンドポイントをサポートするオーバーレイ(トンネル)接続が必要になります。私が知っている、それをネイティブにサポートする唯一のプロトコルは、LISP(Locator Identifier Separation Protocol)です。お近くのLISPISPを見つけることができれば、現在の接続に加えて、それらからサービスを購入できる可能性があります。それはおそらく無料ではないでしょう。

2
Sander Steffann

両方の接続から到達可能に制御するホストが必要です。

そのホストへの2つのVPNトンネルを設定し、それぞれがあなたの側の異なるインターフェースから行きます。それができたら、2本のイーサネットケーブルを持っているようなものです。ボンディングを使用して、それらをより大きなケーブルとして一緒に使用し、トラフィックを通過させてみることができます。

それで実際に多くのパフォーマンスが得られるかどうかはわかりませんが(モバイルネットワークの遅延はブロードバンドよりもはるかに高く、問題が発生する可能性があります)、試してみてください。

0
user256743

異なるプロバイダー間で関連する接続を分割できるのは、両方のプロバイダーから到達可能/ルーティング可能な単一のIPアドレスがある場合のみです。そのIPは通常、BGPを介してより大きなアドレスブロックの一部として提供されます。それがあれば、BGPのパスプリペンディングおよびローカルプリファレンスルールと呼ばれる機能を使用して、BGPでこれを行うことができます。

ISPと携帯電話プロバイダーの間でこのような取り決めを行って、両方のネットワーク経由でIPに到達できるようにしたとしても、両方の接続に現在支払うよりも多くの費用がかかる可能性があります。

一方、実際に質問しているのは、ftp/sftpまたはhttpを使用してファイルをアップロードする場合など、主にアップロードセッションで4G接続を優先できるかどうかです。そして、通常のWebブラウジングでそのトラフィックにISPを使用させるには、おそらく答えはそうだと思います。しかし、おそらく機能するためには、セッションを主にアップロードセッションまたはダウンロードセッションとして分類できる必要があります。 ftp、http、およびその他のプロトコルはアップロードとダウンロードのどちらにも同じように使用できるため、ポート番号でこれを判断することはできません。したがって、唯一の代替手段は、データを途中で確認することです。その段階までに、データはすでに流れているので、決定が下されたでしょう。したがって、それを自動化することはできません。

だから、あなたの場合。番号。 (少なくとも、靴ひもを履いているときはそうではありません)。

0
Matt H