So simulieren Sie langsame Internetverbindungen auf dem Mac

145

Was ist eine gute Softwarelösung, um Internetverbindungen auf dem Mac für Tests und Simulationen zu verlangsamen?

Mein Hauptbedürfnis ist das Testen von Code im iPhone / iOS-Simulator. Daher wäre es großartig, die Verbindung für bestimmte Anwendungen oder Prozesse zu verlangsamen.

aneuryzm
quelle
Ich fand, dass die akzeptierte Antwort (Network Link Conditioner) auch eine hervorragende Problemumgehung für Probleme mit Bufferbloat ist.
Robert Tupelo-Schneck

Antworten:

168

Apple hat ein sehr praktisches offizielles Tool entwickelt, um die Netzwerkverbindungen auf Ihrem Mac zu Testzwecken zu verlangsamen.

Die Voreinstellung für Network Link Conditioner ist ein kostenloser Download innerhalb von Xcode (für Lion und neuere Betriebssysteme). Darüber hinaus verfügt iOS über ähnliche Funktionen, auf die über Xcode und iOS 6 oder höher zugegriffen werden kann.

Bildbeschreibung hier eingeben

Ältere Versionen von Xcode vor Version 4.3.2 haben eine Kopie dieses Tools eingebettet. Jetzt verwenden Sie Xcode auf sie direkt herunterladen in ähnlicher Weise auf die iOS - Simulatoren und Entwicklerdokumentation.

Es gibt 11 integrierte Profile von einem Lossy Edge-Netzwerk mit einer Verzögerung von 400 ms zu einem Kabelmodem. Wenn Sie andere Grenzen benötigen, können Sie benutzerdefinierte Profile mit eigenen Einstellungen erstellen oder Sie können auch verwenden , ipfwsich in beschrieben als Craig Hockenberry ‚s Artikel langsam Fahrt, machen es einfach , erwähnt sie auch die Speed Limit - Panel von Mike Schrag , dass ein kleiner Download ist als Xcode, hat aber weniger Optionen als das Apple-Tool.

Dadurch wird der gesamte Netzwerkstapel verlangsamt, sodass Sie nicht auf App-Basis Drosseln können, ohne beispielsweise Lion in einer virtuellen Maschine zu installieren und diese VM mit einem gedrosselten Stapel einzurichten.

bmike
quelle
1
: O Ich habe sogar Xcode und wusste nichts davon
Alexander
21
Stellen Sie sicher, dass es ausgeschaltet ist, nachdem Sie den Test abgeschlossen haben!
Jason Salaz
1
Klarstellung: Sie müssen tatsächlich die Hardware-IO-Tools von Apple herunterladen. Siehe Installieren von Apples Network Link Conditioner Tool
daviesgeek
2
Das unten erwähnte Tempolimit funktioniert ausgezeichnet . Ich benutze es jetzt für localhost: 8888 auf MAMP.
Anriëtte Myburgh
1
Beachten Sie auch, dass iOS 6 über den Network Link Conditioner zum Testen auf dem Gerät verfügt. Greifen Sie über Einstellungen-> Entwickler im Abschnitt "Network Link Conditioner" darauf zu.
Mike Weller
35

OS X 10.9 und frühere Versionen bieten die ipfwMöglichkeit, benutzerdefinierte Firewall-Regeln zu definieren. Erstellen Sie ein Rohr mit begrenzten Bandbreite verwenden ipfwund Sie können Ihre Tests und Simulationen.

  1. Erstellen Sie eine Pipe "1", die über auf 500 KByte / s begrenzt ist

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Führen Sie den gesamten Netzwerkverkehr von Port 80 über Pipe "1"

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Wenn Sie das Rohr nicht mehr benötigen, entfernen Sie es mit aus dem Anschluss

    sudo ipfw delete 1
    

Andere

  • Wenn Sie höhere Verkehrsbarrieren festlegen möchten, können Sie verwenden MByte/s
  • Port 80: Standardport für unverschlüsselten httpDatenverkehr. Dieser Port wird zum Browsen und Herunterladen verwendet. In den meisten Fällen sollten Sie damit einverstanden sein.
  • Port 443: Standardport für SSL-verschlüsselten httpsDatenverkehr.
Gentmatt
quelle
10
Leider wurde ipfw in OS X 10.10 Yosemite
igo
Sie können pfctl verwenden, um die Bandbreite unter OS X 10.10+ zu drosseln - spin.atomicobject.com/2016/01/05/…
Eugene A
Ich habe eine Antwort unter dieser zeigt hinzugefügt pfctlund dnctlBeispiel für die Verwendung.
Ubershmekel
31

Geschwindigkeitsbegrenzung ist ein Bereich in den Systemeinstellungen, in dem bestimmte Ports und Domänen absichtlich und gezielt verlangsamt werden.

Randy6T9
quelle
Mir gefällt, dass es detaillierter ist als das in der akzeptierten Antwort erwähnte XCode-Tool. Danke für den Vorschlag.
Sholsinger
1
Wirklich, ich fand, dass "localhost" nicht funktionierte und das Umschalten auf die IP-Adresse 127.0.0.1 den Trick machte.
OlliM
4
SpeedLimit ist ab OS X 10.10 nicht mehr funktionsfähig, da das verwendete Firewall-Tool entfernt wurde: github.com/mschrag/speedlimit/issues/13
Robin
Die Verbindung zum Tempolimit ist unterbrochen.
Jeff Holt
Die Quelle für das Tempolimit scheint derzeit nicht gewartet zu sein, ist aber hier verfügbar und hat eine aktuellere Gabelung , obwohl ich sie überhaupt nicht getestet habe
Brad Parks,
11

Zur akzeptierten Antwort hinzufügen: Es sieht so aus, als ob Sie XCode nicht benötigen sollten, nur ein Konto auf der Apple Developer-Website (einfacher als das erste Herunterladen des XCode-Pakets mit 2 GB, wenn Sie es noch nicht haben).

Gehen Sie zu https://developer.apple.com/downloads und suchen Sie nach "Network Link Conditioner" oder "Additional Tools for XCode". Letzteres ist der Name des Pakets, in dem es gefunden wurde.

So laden Sie es über Xcode 8.x herunter:

  • Klicken Sie auf das Xcode-Menü
  • Öffnen Sie das Developer Tool> Weitere Developer Tools ...
  • Daraufhin wird eine Seite unter developer.apple.com geöffnet. (Hinweis: Möglicherweise müssen Sie sich zuerst anmelden.)
  • Klicken Sie auf das Pluszeichen neben Additional Tools for Xcode 8.x
  • Klicken Sie auf die Download-URL
Roger Dueck
quelle
2
Willkommen bei Ask Different! Anstatt eine Antwort zu schreiben, um die Antwort einer anderen Person zu bearbeiten, klicken Sie einfach auf die Schaltfläche zum Bearbeiten oder Verbessern dieser Antwort unter dem Beitrag, den Sie verbessern möchten .
grg
9

Wenn Sie nur Drosselung für die Webentwicklung benötigen, kann ich Charles von ganzem Herzen empfehlen . Es ist ohnehin ein hervorragendes Tool zum Debuggen von HTTP-Anwendungen, und unter den zahlreichen Funktionen gibt es eine Throttle-Option. Die Software ist nicht billig, leistet aber hervorragende Arbeit.

Kiezpro
quelle
Ich brauche es eigentlich für den iPhone-Simulator .. und Testen von Verbindungen zu einem Server
aneuryzm
5

Mac OS X 10.10+ Benutzer verwenden müssen dnctlund pfctldoch dokumentiert Verwendungsbeispiele sind nicht leicht zu finden.

# 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

Wenn Sie alles geben und alles formen möchten, was Sie verwenden können:

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

Ich glaube, das betrifft auch Localhost-Pipes, die mein Vs-Code-Debugging verlangsamten.

ubershmekel
quelle
4

Sie können auch ipfw-Piping verwenden, um Ihr Netzwerk zu verlangsamen.

Richten Sie zunächst eine virtuelle "Pipe" ein, um den Durchsatz auf 800 KBit / s zu begrenzen:

ipfw pipe 1 config bw 800Kbit

Anschließend können Sie Regeln einrichten, um den Datenverkehr durch diese Pipe (Pipe 1) zu leiten. (Ports 6881-6890 sind Bittorrent-Verkehr)

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

Hier ist ein weiteres Beispiel, um den Datenverkehr von einer bestimmten IP-Adresse auf 10 KBit / s zu begrenzen:

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

(Quelle)

Daviesgeek
quelle
ipfw wurde in OSX 10.10
Ben Wheeler
-1

Für XCode 10.2 finden Sie unter Weitere Entwicklertools - Zusätzliche Tools für XCode 10.2 den Network Link Conditioner.

Kiran Jasvanee
quelle
Inwiefern unterscheidet sich diese Lösung von den bereits gegebenen Antworten?
Nimesh Neema
Ich habe versehentlich Hardware-Tools heruntergeladen, auch wenn es sich um eine alte XCode-Version handelte. Ich dachte, dass dies funktionieren wird, da ich es für eine neuere Version nicht gesehen habe. Nirgendwo steht geschrieben, dass ich für XCode 10.2 die Option "Zusätzliche Tools" wählen muss, um den neuesten Network Link Conditioner zu erhalten. Das wird hier erwähnt, damit andere Entwickler ihre Zeit nicht verschwenden. Wenn Sie es nicht anders als andere finden, minus es fünfzehn Mal. Ich habe es getan, damit andere davon Hilfe bekommen, indem sie nach Newly XCode 10.2
Kiran Jasvanee
Es würde wirklich jedem helfen, diese Antwort zu lesen, wenn Sie Ihre Antwort bearbeiten und diese wichtigen Informationen einfügen können. Viele Benutzer finden es auch sehr wertvoll, dass sie klare und schrittweise Anleitungen geschrieben haben.
Nimesh Neema
@NimeshNeema Ich denke, alle Entwickler in der Community wissen, dass Sie dieses Tool über Weitere Entwicklertools finden. Ich habe die Schritte geschrieben. Ich denke nicht, dass ich mehr im Detail erwähnen sollte.
Kiran Jasvanee
Es ist völlig in Ordnung und es liegt an dir, wie du eine Antwort schreibst. Erwähnt werden nur in der Regel Praxis statt einer Regel
befolgt