Come simulare connessioni Internet lente sul Mac


145

Qual è una buona soluzione software per rallentare le connessioni Internet sul Mac per test e simulazioni?

Il mio bisogno principale è quando testare il codice nel simulatore iPhone / iOS, quindi rallentare la connessione per applicazioni o processi specifici sarebbe grande.


Ho trovato la risposta accettata (Network Link Conditioner) anche un'eccellente soluzione rapida per problemi di bufferbloat.
Robert Tupelo-Schneck,

Risposte:


168

Apple ha creato uno strumento ufficiale molto utile per rallentare le connessioni di rete sul tuo Mac a scopo di test.

La preferenza Network Link Conditioner è un download gratuito da Xcode (per Lion e SO successivi). Inoltre, iOS ha una funzione simile accessibile da Xcode e iOS 6 o versioni successive.

inserisci qui la descrizione dell'immagine

Le versioni precedenti di Xcode precedenti alla versione 4.3.2 incorporavano una copia di questo strumento. Ora, usi Xcode per scaricarlo direttamente in modo simile ai simulatori iOS e alla documentazione per gli sviluppatori.

Esistono 11 profili integrati da una rete Lossy Edge con ritardo di 400 ms a un modem via cavo. Se hai bisogno di altri limiti, puoi creare profili personalizzati con le tue impostazioni oppure puoi anche usare ipfwte stesso come descritto nell'articolo slow ride di Craig Hockenberry , semplifica menziona anche il pannello Limite di velocità di Mike Schrag che è un download più piccolo rispetto a Xcode, ma ha meno opzioni rispetto allo strumento Apple.

Rallenta l'intero stack di rete, quindi non è possibile eseguire il throttling su una base per app senza fare cose come installare lion in una macchina virtuale e impostare quella VM con uno stack limitato.


1
: OI ho anche Xcode e non lo sapevo
Alexander

21
Assicurati di spegnerlo dopo aver terminato i test!
Jason Salaz,

1
Chiarimento: in realtà devi scaricare gli strumenti di I / O hardware da Apple. Vedi Installazione di Apple Network Link Conditioner Tool
daviesgeek

2
Il limite di velocità indicato di seguito funziona in modo eccellente . Lo sto usando ora per localhost: 8888 su MAMP.
Anriëtte Myburgh,

1
Si noti inoltre che iOS 6 ha il condizionatore di collegamento di rete per i test sul dispositivo. Accedilo tramite Impostazioni-> Sviluppatore nella sezione "Network Link Conditioner".
Mike Weller,

35

OS X 10.9 e precedenti forniscono ipfwe consentono di definire regole firewall personalizzate. Crea una pipe con larghezza di banda limitata utilizzando ipfwe puoi eseguire test e simulazioni.

  1. Creare una pipe "1" limitata a 500KByte / s tramite

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Guidare tutto il traffico di rete della porta 80 attraverso il tubo "1" utilizzando

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Quando non è più necessario il tubo, rimuoverlo dalla porta utilizzando

    sudo ipfw delete 1
    

Altro

  • Se si desidera impostare barriere al traffico più elevate, è possibile utilizzare MByte/s
  • Porta 80: porta standard per httptraffico non crittografato . Questa porta viene utilizzata per la maggior parte della navigazione e del download. Dovresti andare bene con questo nella maggior parte dei casi.
  • Porta 443: porta standard per httpstraffico crittografato SSL .

10
sfortunatamente, ipfw è stato rimosso in OS X 10.10 Yosemite
igo il

È possibile utilizzare pfctl per limitare la larghezza di banda su OS X 10.10+ - spin.atomicobject.com/2016/01/05/…
Eugene A

Di seguito ho aggiunto una risposta che mostra pfctlcome dnctlesempio di utilizzo.
ubershmekel,

31

Speed ​​Limit è un pannello Preferenze di Sistema per rallentare intenzionalmente e selettivamente porte e domini specifici.


Mi piace che sia più granulare dello strumento XCode menzionato nella risposta accettata. Grazie per il suggerimento
Sholsinger,

1
Davvero, ho scoperto che "localhost" non funzionava, il passaggio all'indirizzo IP 127.0.0.1 ha funzionato.
OlliM,

4
SpeedLimit è disfunzionale a partire da OS X 10.10 poiché lo strumento firewall che utilizza è stato rimosso: github.com/mschrag/speedlimit/issues/13
Robin

Il collegamento al limite di velocità è interrotto.
Jeff Holt,

La fonte di Speed ​​Limit sembra non essere mantenuta ora, ma è disponibile qui e ha un fork più aggiornato qui, anche se non l'ho mai provato
Brad Parks,

11

Per aggiungere alla risposta accettata: sembra che non dovresti aver bisogno di XCode, ma solo di un account sul sito Web Apple Developer (più semplice del primo download del pacchetto XCode da 2 GB se non lo hai già).

Vai su https://developer.apple.com/downloads e cerca "Network Link Conditioner" o "Strumenti aggiuntivi per XCode", quest'ultimo essendo il nome del pacchetto in cui si trova.

Per scaricarlo tramite Xcode 8.x:

  • Fai clic sul menu Xcode
  • Vai a Apri strumento di sviluppo> Altri strumenti di sviluppo ...
  • Si aprirà una pagina su developer.apple.com (Nota: potrebbe essere necessario prima accedere)
  • Fai clic sul segno "+" accanto a Strumenti aggiuntivi per Xcode 8.x
  • Fai clic sull'URL di download

2
Benvenuti a chiedere diverso! Invece di scrivere una risposta a modificare la risposta di qualcun altro, è sufficiente fare clic su Modifica o migliorare questa risposta tasto sotto il post che volete migliorare .
grg

9

Se hai solo bisogno di limitare lo sviluppo Web, posso consigliare vivamente Charles . È comunque uno strumento eccellente per il debug delle applicazioni HTTP e tra le sue numerose funzionalità ha un'opzione Throttle. Il software non è economico, ma fa un ottimo lavoro.


In realtà ne ho bisogno per il simulatore di iPhone .. e testare le connessioni a un server
aneuryzm,

5

Gli utenti di Mac OS X 10.10+ bisogno di utilizzare dnctle pfctl, ma esempi di utilizzo documentati non sono facili da trovare.

# 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

Se vuoi fare tutto e dare forma a tutto ciò che puoi usare:

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

Credo che ciò influisca anche sulle pipe di localhost che hanno rallentato il mio debug vs-code, quindi fai attenzione.


4

Puoi anche usare le tubazioni ipfw per rallentare la tua rete.

Innanzitutto, imposta una "pipe" virtuale per limitare il throughput a 800KBit / sec:

ipfw pipe 1 config bw 800Kbit

Quindi puoi impostare le regole per spingere il traffico attraverso quella pipe (pipe 1). (le porte 6881-6890 sono traffico 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

Ecco un altro esempio per limitare il traffico fino a 10 Kbit / sec da un indirizzo IP specifico:

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

(Fonte)


ipfw è stato rimosso in OSX 10.10
Ben Wheeler il

-1

Per XCode 10.2, in Altri strumenti per sviluppatori - Strumenti aggiuntivi per XCode 10.2, troverai Network Link Conditioner.


In che modo questa soluzione è diversa dalle risposte già fornite?
Nimesh Neema,

Ho scaricato per errore gli strumenti hardware anche se era per la vecchia versione di XCode, pensavo che avrebbe funzionato perché non l'ho visto per una versione più recente. Non è scritto da nessuna parte che per il nuovo XCode 10.2 devo scegliere Strumenti aggiuntivi per ottenere l'ultimo condizionatore di collegamento di rete. Questo è menzionato qui in modo che altri sviluppatori non perdano tempo. Se lo trovi non diverso dagli altri, meno quindici volte. L'ho fatto in modo che altri
ottengano

Aiuterebbe davvero chiunque leggesse questa risposta se è possibile modificare la risposta e includere queste informazioni cruciali. Inoltre, molti utenti ritengono davvero utili avere istruzioni chiaramente scritte e dettagliate.
Nimesh Neema,

@NimeshNeema Penso che tutti gli sviluppatori sappiano nella community che puoi trovare questo strumento tramite Altri strumenti per sviluppatori. Ho scritto i passaggi. Non credo, quindi dovrei menzionarlo più in dettaglio.
Kiran Jasvanee,

Va benissimo e dipende da te come scegli di scrivere una risposta. I citati sono generalmente seguiti dalla pratica piuttosto che da una regola :)
Nimesh Neema,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.