Macで遅いインターネット接続をシミュレートする方法


145

テストとシミュレーションのためにMacのインターネット接続を遅くするための優れたソフトウェアソリューションは何ですか?

私の主な必要性は、iPhone / iOSシミュレーターでコードをテストするときです。そのため、特定のアプリケーションまたはプロセスの接続を遅くすることは素晴らしいことです。


受け入れられた答え(ネットワークリンクコンディショナー)は、bufferbloatの問題に対する迅速で汚い回避策でもあることがわかりました。
ロバートトゥペロシュネック

回答:


168

Appleは、テスト目的でMacのネットワーク接続を遅くするための非常に便利な公式ツールを作成しました。

ネットワークリンクコンディショナーの好みは(ライオンと後でOS用)Xcodeの中から無料でダウンロードできます。さらに、iOSにはXcodeおよびiOS 6以降からアクセスできる同様の機能があります。

ここに画像の説明を入力してください

バージョン4.3.2より前のXcodeの古いバージョンには、このツールのコピーが組み込まれていました。ここで、Xcodeを使用して、iOSシミュレーターおよび開発者ドキュメントと同様の方法で直接Xcodeダウンロードします。

ケーブルモデムへの400ミリ秒の遅延を伴うLossy Edgeネットワークからの組み込みプロファイルが11個あります。あなたが他の制限が必要な場合は、独自の設定でカスタムプロファイルを作成することができますか、また、使用することができるipfwで説明したように自分自身をクレイグHockenberryがの記事遅い乗る、それが簡単に作ることも言及速度制限により、パネルのマイクSchrag小さいダウンロードですXcodeよりも、Appleのツールよりも選択肢が少ない。

ネットワークスタック全体の速度が低下するため、仮想マシンにlionをインストールし、そのVMにスロットルスタックを設定するなどの操作を行わずに、アプリごとに調整することはできません。


1
:OIはXcodeも持っていて、これについては知りませんでした
アレクサンダー

21
テストが終了したら、必ず電源を切ってください!
ジェイソンサラズ

1
明確化:実際には、AppleからハードウェアIOツールをダウンロードする必要があります。参照りんごネットワークリンクコンディショナーツールのインストール
daviesgeekを

2
以下で言及される速度制限はうまくいきます。現在、MAMPのlocalhost:8888に使用しています。
アンリエットマイバーグ

1
また、iOS 6には、デバイスでテストするためのネットワークリンクコンディショナーがあります。[ネットワークリンクコンディショナー]セクションの[設定]-> [開発者]からアクセスします。
マイクウェラー

35

OS X 10.9以前ではipfw、カスタムファイアウォールルールを定義できます。を使用して帯域幅が制限されパイプを作成し、ipfwテストとシミュレーションを実行できます。

  1. 経由で500KBytes / sに制限されたパイプ「1」を作成します

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. ポート80のすべてのネットワークトラフィックをパイプ "1"を使用して誘導します

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. パイプが不要になったら、それを使用してポートから削除します

    sudo ipfw delete 1
    

その他

  • より高い交通障壁を設定する場合は、使用できます MByte/s
  • ポート80:暗号化されていないhttpトラフィックの標準ポート。このポートは、ほとんどのブラウジングとダウンロードに使用されます。ほとんどの場合、これで問題ないはずです。
  • ポート443:SSL暗号化httpsトラフィックの標準ポート。

10
残念ながら、ipfwはOS X 10.10 Yosemiteで削除されました
igo

-あなたはOS X 10.10以上のスロットル帯域幅へのpfctlを使用することができますspin.atomicobject.com/2016/01/05/...
ユージンA

私がいることを示し、以下の答えを追加しましたpfctlし、dnctl使用例を。
ubershmekel

31

速度制限は、特定のポートおよびドメインを意図的かつ選択的に遅くするためのシステム設定ペインです。


受け入れられた回答で言及されているXCodeツールよりもきめ細かいことが気に入っています。提案をありがとう。
-sholsinger

1
実際、「localhost」は機能せず、IPアドレス127.0.0.1に切り替えるとうまくいかないことがわかりました。
OlliM 14年

4
SpeedLimitは、使用しているファイアウォールツールが削除されたため、OS X 10.10では機能しなくなりました:github.com/mschrag/speedlimit/issues/13
ロビン

速度制限へのリンクが壊れています。
ジェフ・ホルト

リミットを高速化するために、ソースは非今維持されるように見えますが、ここで利用可能であると持っているより多くのフォーク探し日までこっち私は全くそれをテストhaventはけれども
ブラッド・パークス

11

受け入れられた答えに追加するには、XCodeは必要ありません。AppleDeveloper Webサイトのアカウントだけが必要です(まだ2GB XCodeパッケージをお持ちでない場合は、最初にダウンロードするよりも簡単です)。

https://developer.apple.com/downloadsにアクセスし、「Network Link Conditioner」または「XCodeの追加ツール」を検索します。後者は、検出されたパッケージの名前です。

Xcode 8.x経由でダウンロードするには:

  • Xcodeメニューをクリックします
  • [開発ツールを開く]> [その他の開発ツール...]に移動します。
  • これにより、developer.apple.comでページが開きます(注:最初にログインする必要がある場合があります)
  • Xcode 8.xの追加ツールの横にある「+」記号をクリックします
  • ダウンロードURLをクリックします

2
Ask Differentへようこそ!回答を書いて他の人の回答を編集する代わりに、改善したい投稿の下にあるこの回答ボタンを編集または改善するをクリックしてください
GRG

9

Web開発の調整のみが必要な場合は、Charlesを心からお勧めします。とにかくHTTPアプリケーションをデバッグするための優れたツールであり、多くの機能の中でも、スロットルオプションがあります。ソフトウェアは安くはありませんが、素晴らしい仕事をします。


実際にiPhoneシミュレーターに必要です。そして、サーバーへの接続をテストします
-aneuryzm

5

マックOS X 10.10以上のユーザーが使用する必要があるdnctlpfctlなく、文書化使用例を見つけるのは容易ではありません。

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

外に出て、使用できるものをすべて整えたい場合:

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

これは、vs-codeデバッグを遅くするlocalhostパイプにも影響を与えると思いますので、注意してください。


4

ipfwパイピングを使用して、ネットワークの速度を低下させることもできます。

最初に、スループットを800KBit /秒に制限する仮想「パイプ」をセットアップします。

ipfw pipe 1 config bw 800Kbit

次に、そのパイプ(パイプ1)を介してトラフィックをプッシュするルールを設定できます。(ポート6881-6890はbittorrentトラフィックです)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

特定のIPアドレスからのトラフィックを10Kビット/秒に制限する別の例を次に示します。

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(ソース)


ipfwはOSX 10.10で削除されました
ベンウィーラー

-1

XCode 10.2の場合、その他の開発者ツール-XCode 10.2の追加ツールには、ネットワークリンクコンディショナーがあります。


このソリューションは、すでに提供されている回答とどのように異なりますか?
ニメシュニーマ

古いXCodeバージョン用であったとしても、誤ってハードウェアツールをダウンロードしましたが、新しいバージョン用に見たことがないので動作すると思いました。新しくXCode 10.2の場合、最新のネットワークリンクコンディショナーを取得するために[追加ツール]を選択する必要があるという記述はありません。他の開発者が時間を無駄にしないように、ここで言及されています。他のものと変わらないことがわかった場合は、マイナス15回。他の人がNewly XCode 10.2
Kiran Jasvanee

回答を編集してこの重要な情報を含めることができれば、この回答を読んでいる人にとって本当に役立つでしょう。また、多くのユーザーは、明確に書かれたステップバイステップの説明が本当に価値があると感じています。
ニメシュニーマ

@NimeshNeemaコミュニティでは、すべての開発者が、他の開発者ツールを介してこのツールを見つけることができることを知っていると思います。手順を書きました。私はそうは思わないので、私はより詳細に言及する必要があります。
キランジャスヴァニー

どのように答えを書くかはあなた次第です。言及されているのは、規則ではなく一般的に実践されているだけです:)
Nimesh Neema
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.