web-dev-qa-db-ja.com

Linuxマシンでhttpリクエストを調整する方法は?

編集:これは夏らしいです:Ubuntu 11.04ではシステム全体で最大接続を減らす必要がありますが、少なくともGoogleChrome内では減らす必要があります。私はnot帯域幅を調整する必要がないか、調整したくないのですが、Verizonは接続数だけを気にしているようですので、変更したいのはそれだけです。また、必要な場合を除いて、Firefoxを使用したくありません。他に3台のマシンがあり、すべてchromeを使用して同期しており、Firefoxよりも優先しています。

verizon携帯電話を介した自宅のインターネット接続にテザリングを使用しています。お金を払わずに。これは、私の任天堂のwiiを介してnetflixをストリーミングする場合に問題なく機能し、他の考えられるほとんどすべての用途で使用できます。ただし、ラップトップで複数のタブを開いた状態で頻繁に使用している場合、電話のネットワーク接続はオフになり、再びオンになり、次にオフになりますが、完全に接続されることはありません。

this やその他の質問に基づいて、これはベライゾンが私の電話からあまりにも多くのhttpリクエストを取得したことが原因だと思います。セルのネットワーク接続が失われないように、5または10、またはverizonが探しているよりも1少ないことが判明した場合に、要求を調整できるソフトウェア、スクリプト、設定などはありますか?

インターネット接続を完全に遮断するよりも、速度を落とす方がはるかに好きです。私が言ったように、netflixは問題なく一日中実行され、それは私がする他の何よりも多くのデータを使用するので、私はほぼ確実にリクエストの量からであり、データとは関係ありません。私がルーターを持っていた場合、一度に非常に多くのリクエストのみを許可するように簡単に変更できる設定があると確信しています...しかし、この場合、私の電話は私のルーターなので、設定はありません。私のネットブックでubuntu11.04を使用していて、htcはverizonで信じられないほどです(電話の詳細が関連しているわけではありません)

私はかなり長い間これを理解しようとしてきましたが、現在のところ唯一の修正は、すべてのリクエストが停止され、時には再び機能することを確認することです。それ以外の場合は、手動で3gサービスをオフにしてからオンに戻す必要があります。助けてくれてありがとう!

7
dylan murphy

テザリング時にSSHトンネルを使用して、任意の接続制限を回避することに成功しました。アイデアは次のとおりです。

ssh -D 1234 server

トンネルを開始し、Firefoxまたはその他のソフトウェアを構成してsocks5プロキシlocalhost/1234を使用します。 このページ の指示に従って、DNSのプロキシも使用するようにFirefoxに指示します。

その結果、ルーターはプロキシへの暗号化された接続を1つだけ認識します。

Ubuntuを使用している場合は、ChromeまたはFirefoxではなくUbuntu)のプロキシ設定を構成できます。 、ChromeおよびFirefoxを含むすべてのプログラムは、デフォルトでそのプロキシを使用する必要があります。

開いた gnome-network-properties、プロキシをHostlocalhost、port1234に設定します。

6
Peltier

Firefoxを使用している場合は、about:configで「max-connections」設定を検索してください。

それよりも複雑なものには、トラフィック制御/パケットフィルタリング/ファイアウォールが必要になる可能性があります。たとえば、Shorewallを使用して接続レート制限を行うことができます。 http://www.shorewall.net/ConnectionRate.html

3
Michael Chang

これを行うために、netfilter/iptablesファイアウォールにルールを追加できます。 Netfilterは、新しい接続に関してnatテーブル(およびパケットごとのfilterテーブル)を参照します。単一のiptablesコマンドを使用して、新しい接続をレート制限できます。

# iptables --table nat --append --protocol tcp -m multiport \
    --destination-ports 80,443 -m limit ! --limit 10/second --limit-burst 5 \
    --jump DROP

このコマンドはrootとして実行する必要があります。これは、ポート80(http)および443(https)--table-natへのすべての新しい--protocol tcp、tcp --destination-ports 80,443接続試行に一致します。これは、!1秒あたり5回の接続試行の制限を超えています。 --limit 10/second、5つの追加接続を許可--limit-burst 5。次に、これらのパケットを完全に無視するようにnetfilterに指示します--jump DROP

注意:コンピュータを再起動するたびにこのコマンドを実行する必要があります。これは、さまざまなメカニズムを介して実行できます。このファイルを使用してネットワークを構成し、Debianバリアントを使用する場合は、これをシェルスクリプトにスローして実行可能にし、/etc/network/interfacesのプリアップ行を介して呼び出すことができます。

すばやく簡単にハックするには、この行を/etc/init.d/の下にある重要な外観の起動スクリプトの1つに追加します。

2
jpaugh

低レベルのツールまたはコマンドラインツールの場合は、tc(トラフィック制御)を試してください。このツールは、ほとんどの新しいカーネルのネットワークスタックで動作するように構築されています。したがって、ほとんどのシステムでデフォルトで使用可能であり、インストールは必要ありません。

Httpおよびtcの場合 http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

tc
man tc

http://wiki.openvz.org/Traffic_shaping_with_tc
http://www.topwebhosts.org/tools/traffic-control.php

また読む価値があります http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html

1
nelaaro

Chromiumスレッドごと 問題12066:Firefoxのホストごとの接続制限15に一致 、Chromeチームは、サーバーへの6つの接続が正しい上限であると考えています。

6を超えるまたは下回る接続の数を変更するには、ソースからChromeをビルドするか、Firefoxに渡す必要があります。

Firefox(3.5)のデフォルト値は次のとおりです。これはabout:configで変更できます。

network.http.max-connections 30
network.http.max-connections-per-server 15
network.http.max-persistent-connections-per-proxy 8
network.http.max-persistent-connections-per-server 6
network.http.pipelining false
network.http.pipelining.maxrequests 4
network.http.proxy.pipelining false

上記の各設定ごとのドキュメントは、 MozillaZineナレッジベース にあります。

1
harrymc

これをシステム全体で行う最善の方法は、HTTPプロキシを使用することだと思います。次に、オプションでそれを 透過プロキシ として構成して、すべての接続にそれを使用させることができますが、Webブラウザーを手動で構成する方が簡単です(制限が少なくなります)。

Iptablesではなくプロキシを使用してこれを行う主な理由は、Webブラウザを怒らせないようにするためです。別の回答で提案されているように、-j DROPを使用すると、基本的にTCP接続を完全に破棄します。つまり、ブラウザは、タイムアウトになるまで、応答を待ってそこにとどまる可能性があります。 、最後に、ウィンドウが壊れている、CSSがないなど、半分読み込まれたページが表示されます。

代わりにプロキシを使用することで、保留中のリクエストは削除されず、続行する余地ができるまでキューに入れられます。

おそらく、(これまでに見つけた)最も単純で軽量な構成は、 Tinyproxy をインストールし、MaxClients値を必要なアウトバウンド接続の最大数に設定することです。

squid -を使用したい場合、おそらくやり過ぎが好きなため、またはキャッシングやその他の派手なウィズバン機能が好きなため、私が見る唯一のアウトバウンド接続制限はピアごとです。しかし、これはまだ機能します。 2つのプロキシを設定します。1つはsquidとして、もう1つは他のもの(おそらくTinyproxy、hehe)として設定し、max-conn設定を最大接続数に設定してTinyproxyをsquidの唯一のピアとして構成します。次に、never_directオプションを設定して、そのピアを介してallリクエストを転送するようにsquidに指示します。

0
Flimzy

Trickleは、これを行うユーティリティです。

詳細はこちら

Trickleパッケージは、ほとんどのLinuxディストリビューションとBSDで利用できます。

buntuの最新バージョンに関するTrickleの情報へのリンクとダウンロードリンクがあります

おそらく、Ubuntu SoftwareCenterまたはSynapticPackageManagerからも入手できます。

Fedoraのリンクはこちら

0
bwall