Comment simuler des connexions Internet lentes sur le Mac

145

Quelle est la bonne solution logicielle pour ralentir les connexions Internet sur Mac pour les tests et les simulations?

Mon principal besoin concerne les tests de code dans le simulateur iPhone / iOS. Il serait donc formidable de ralentir la connexion pour des applications ou des processus spécifiques.

aneuryzm
la source
J'ai trouvé que la réponse acceptée (Network Link Conditioner) constituait également un excellent moyen de contourner rapidement les problèmes de bufferbloat.
Robert Tupelo-Schneck

Réponses:

168

Apple a conçu un outil officiel très pratique pour ralentir les connexions réseau de votre Mac à des fins de test.

La préférence Network Link Conditioner est téléchargeable gratuitement dans Xcode (pour Lion et les systèmes d'exploitation ultérieurs). De plus, iOS possède une fonction similaire accessible depuis Xcode et iOS 6 ou version ultérieure.

entrez la description de l'image ici

Les versions antérieures de Xcode antérieures à la version 4.3.2 incorporaient une copie de cet outil. Désormais, vous utilisez Xcode pour le télécharger directement de manière similaire aux simulateurs iOS et à la documentation pour les développeurs.

Il existe 11 profils intégrés d’un réseau Lossy Edge avec un délai de 400 ms à un modem câble. Si vous avez besoin d' autres limites, vous pouvez créer des profils personnalisés avec vos propres paramètres ou vous pouvez également utiliser ipfwvous - même comme décrit dans Craig Hockenberry article de tour lent, le rendre facile Il mentionne également la limite de vitesse panneau par Mike Schrag qui est un petit téléchargement que Xcode, mais a moins d'options que l'outil de Apple.

Cela ralentit l'ensemble de la pile réseau, de sorte que vous ne pouvez pas limiter individuellement l'application sans effectuer des opérations telles que l'installation de lion dans une machine virtuelle et la définition de cette machine virtuelle avec une pile limitée.

bmike
la source
1
: OI a même Xcode sans le savoir
Alexander
21
Assurez-vous de l'éteindre une fois les tests terminés!
Jason Salaz
1
Précision: vous devez en fait télécharger les outils d'E / S matériels d'Apple. Voir Installation de l'outil Network Link Conditioner d'
Apple
2
La limite de vitesse mentionnée ci-dessous fonctionne parfaitement . Je l'utilise maintenant pour localhost: 8888 sur MAMP.
Anriëtte Myburgh
1
Notez également qu'iOS 6 dispose du conditionneur de liaison réseau à tester sur l'appareil. Accédez-y via Paramètres-> Développeur dans la section "Conditionneur de liaisons réseau".
Mike Weller
35

OS X 10.9 et versions antérieures fournissent ipfwet permettent de définir des règles de pare-feu personnalisées. Créez un canal avec une bande passante limitée en utilisant ipfwet vous pouvez exécuter vos tests et simulations.

  1. Créez un tuyau "1" limité à 500 Ko / s via

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Guidez tout le trafic réseau du port 80 par le tuyau "1" à l'aide de

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Lorsque vous n’avez plus besoin du tuyau, retirez-le du port en utilisant

    sudo ipfw delete 1
    

Autre

  • Si vous souhaitez définir des barrières de trafic plus élevées, vous pouvez utiliser MByte/s
  • Port 80: port standard pour le httptrafic non chiffré . Ce port est utilisé pour la plupart des navigations et des téléchargements. Cela devrait vous convenir dans la plupart des cas.
  • Port 443: port standard pour le httpstrafic crypté SSL .
Gentmatt
la source
10
Malheureusement, ipfw a été supprimé sous OS X 10.10 Yosemite
igo
Vous pouvez utiliser pfctl pour réduire la bande passante sous OS X 10.10+ - spin.atomicobject.com/2016/01/05/…
Eugene A
J'ai ajouté une réponse ci-dessous qui montre pfctlet dnctlexemple d'utilisation.
Ubershmekel
31

Limite de vitesse est une sous-fenêtre Préférences système permettant de ralentir de manière intentionnelle et sélective des ports et des domaines spécifiques.

Randy6T9
la source
J'aime le fait qu'il soit plus granulaire que l'outil XCode mentionné dans la réponse acceptée. Merci pour la suggestion.
Sholsinger
1
Vraiment, j'ai trouvé que "localhost" ne fonctionnait pas, le passage à l'adresse IP 127.0.0.1 a fait l'affaire.
OlliM
4
SpeedLimit est dysfonctionnel à partir de OS X 10.10 puisque l'outil de pare-feu qu'il utilise a été supprimé: github.com/mschrag/speedlimit/issues/13
Robin
Le lien vers la limite de vitesse est rompu.
Jeff Holt
La source de Speed ​​Limit semble être non maintenue pour le moment, mais elle est disponible ici et possède une fourche plus moderne, bien que je ne l'aie pas testée du tout.
Brad Parks
11

Pour ajouter à la réponse acceptée: il ne semble pas que vous ayez besoin de XCode, mais simplement d’un compte sur le site Web des développeurs d’Apple (plus simple que de télécharger le paquet XCode de 2 Go si vous ne l’avez pas déjà).

Allez sur https://developer.apple.com/downloads et cherchez "Network Link Conditioner" ou "Additional Tools for XCode", ce dernier étant le nom du paquet dans lequel il se trouve.

Pour le télécharger via Xcode 8.x:

  • Cliquez sur le menu Xcode
  • Accédez à Open Developer Tool> Autres outils de développement ...
  • Cela ouvrira une page sur developer.apple.com (Remarque: vous devrez peut-être vous connecter au préalable)
  • Cliquez sur le signe '+' à côté de Additional Tools for Xcode 8.x
  • Cliquez sur l'URL de téléchargement
Roger Dueck
la source
2
Bienvenue à Ask Different! Au lieu d'écrire une réponse pour modifier la réponse d'une autre personne, cliquez simplement sur le bouton modifier ou améliorer cette réponse situé sous le message que vous souhaitez améliorer .
grg
9

Si vous n’avez besoin que d’une limitation du développement Web, je peux recommander sans réserve Charles . De toute façon, c’est un excellent outil pour déboguer les applications HTTP et, parmi ses nombreuses fonctionnalités, il possède une option de régulation. Le logiciel n'est pas bon marché, mais il fait un excellent travail.

Kiezpro
la source
J'en ai réellement besoin pour le simulateur iPhone .. et pour tester les connexions à un serveur
aneuryzm
5

Les utilisateurs de Mac OS X 10.10+ doivent utiliser dnctlet pfctlles exemples d'utilisation documentés ne sont pas faciles à trouver.

# 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

Si vous voulez tout mettre en oeuvre et façonner tout ce que vous pouvez utiliser:

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

Je crois que cela affecte également les tuyaux localhost qui ont ralenti le débogage de mon code personnel, alors soyez conscient de cela.

Ubershmekel
la source
4

Vous pouvez également utiliser la tuyauterie ipfw pour ralentir votre réseau.

Tout d’abord, configurez un "tuyau" virtuel pour limiter le débit à 800 Kbits / s:

ipfw pipe 1 config bw 800Kbit

Ensuite, vous pouvez configurer des règles pour pousser le trafic à travers ce tuyau (tuyau 1). (les ports 6881 à 6890 étant un trafic 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

Voici un autre exemple pour limiter le trafic à une adresse IP spécifique jusqu'à 10 Kbit / s:

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

(La source)

Daviesgeek
la source
ipfw a été supprimé sous OSX 10.10
Ben Wheeler le
-1

Pour XCode 10.2, dans Autres outils de développement - Outils supplémentaires pour XCode 10.2, vous trouverez le conditionneur de liaisons réseau.

Kiran Jasvanee
la source
En quoi cette solution est-elle différente des réponses déjà fournies?
Nimesh Neema
J'ai téléchargé par erreur des outils matériels même s'il s'agissait d'une ancienne version de XCode. Je pensais que cela fonctionnerait car je ne l'avais pas vu pour une version plus récente. Il n’est écrit nulle part que pour XCode 10.2 récent, je dois choisir des outils supplémentaires pour obtenir le dernier conditionneur de liaison réseau. C'est mentionné ici pour que les autres développeurs ne perdent pas leur temps. Si vous le trouvez pas différent des autres, moins quinze fois. Je l’ai fait pour que d’autres obtiennent de l’aide en recherchant Newly XCode 10.2
Kiran Jasvanee
Si vous pouviez modifier votre réponse et inclure ces informations cruciales, cela aiderait vraiment tous ceux qui liront cette réponse . En outre, de nombreux utilisateurs trouvent très utile d’avoir des instructions clairement écrites et des instructions étape par étape.
Nimesh Neema
@ NimeshNeema Je pense que tous les développeurs savent dans la communauté que vous pouvez trouver cet outil via plusieurs outils de développement. J'ai écrit les étapes. Je ne pense pas que je devrais mentionner plus en détail.
Kiran Jasvanee
C'est tout à fait bien et jusqu'à ce que vous choisissiez d'écrire une réponse. Mentionné sont juste généralement suivis la pratique plutôt que d'une règle :)
Nimesh Neema