Cómo simular conexiones de internet lentas en el mac

¿Cuál es una buena solución de software para ralentizar las conexiones de Internet en el mac para pruebas y simulaciones?

Mi necesidad principal es cuando se prueba el código en el simulador de iPhone / iOS, por lo que ralentizar la conexión para aplicaciones o procesos específicos sería genial.

Apple ha creado una herramienta oficial muy útil para reducir la velocidad de las conexiones de red en tu Mac con fines de prueba.

La preferencia de Acondicionador de enlace de red es una descarga gratuita desde Xcode (para Lion y posterior OS). Además, iOS tiene una función similar accesible desde Xcode y iOS 6 o posterior.

introduzca la descripción de la imagen aquí

Las versiones anteriores de Xcode antes de la versión 4.3.2 incrustaron una copia de esta herramienta. Ahora, utiliza Xcode para descargarlo directamente de forma similar a los simuladores de iOS y la documentación del desarrollador.

Hay 11 perfiles incorporados desde una red Lossy Edge con un retraso de 400 ms hasta un cable módem. Si necesita otros límites, puede crear perfiles personalizados con sus propios ajustes o también puede usar ipfw usted mismo, como se describe en el artículo de Craig Hockenberry , haga que sea más fácil. También menciona el panel de límite de velocidad de Mike Schrag, que es una Descarga que Xcode, pero tiene menos opciones que la herramienta de Apple.

Disminuye la velocidad de toda la stack de la red, por lo que no puede acelerarse por aplicación sin hacer cosas como instalar lion en una máquina virtual y configurar esa VM con una stack estrangulada.

OS X 10.9 y versiones anteriores proporcionan ipfw y le permite definir reglas de firewall personalizadas. Cree una tubería con ancho de banda limitado utilizando ipfw y podrá ejecutar sus pruebas y simulaciones.

  1. Cree una tubería “1” limitada a 500KBytes / s a ​​través de

     sudo ipfw pipe 1 config bw 500KByte/s 
  2. Guíe todo el tráfico de red del puerto 80 a través de la tubería “1” usando

     sudo ipfw add 1 pipe 1 src-port 80 
  3. Cuando ya no necesite la tubería, retírela del puerto usando

     sudo ipfw delete 1 

Otro

  • Si desea establecer barreras de tráfico más altas, puede usar MByte/s
  • Puerto 80 : puerto estándar para el tráfico http sin cifrar. Este puerto se utiliza para la mayoría de la navegación y descarga. Deberías estar bien con esto en la mayoría de los casos.
  • Puerto 443 : puerto estándar para tráfico https cifrado SSL.

El límite de velocidad es un panel de Preferencias del sistema para reducir intencionalmente y selectivamente los puertos y dominios específicos.

Si solo necesita una regulación para el desarrollo web, le recomiendo encarecidamente a Charles . De todos modos, es una excelente herramienta para la depuración de aplicaciones HTTP y, entre sus muchas características, tiene una opción de Acelerador. El software no es barato, pero hace un excelente trabajo.

Para agregar a la respuesta aceptada: parece que no debería necesitar XCode, solo una cuenta en el sitio web de Apple Developer (más simple que la primera descarga del paquete XCode de 2GB si aún no lo tiene).

Vaya a https://developer.apple.com/downloads y busque “Network Link Conditioner” o “Hardware IO Tools for XCode”, este último es el nombre del paquete que se encuentra en.

Para descargarlo a través de Xcode 8.x:

  • Haga clic en el menú Xcode
  • Vaya a Open Developer Tool> Más herramientas de desarrollador …
  • Esto abrirá una página en developer.apple.com (Nota: es posible que deba iniciar sesión primero)
  • Haga clic en el signo ‘+’ al lado de Herramientas adicionales para Xcode 8.x
  • Haga clic en la URL de descarga

También puede usar la tubería ipfw para ralentizar su red.

Primero, configure un “conducto” virtual para limitar el rendimiento a 800Kbit / sec:

 ipfw pipe 1 config bw 800Kbit 

Luego, puede configurar reglas para impulsar el tráfico a través de esa tubería (tubería 1). (Los puertos 6881-6890 son tráfico 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 

Aquí hay otro ejemplo para limitar el tráfico a 10Kbit / seg desde una dirección IP específica:

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

(Fuente)

Los usuarios de Mac OS X 10.10+ necesitan usar dnctl y pfctl pero los ejemplos de uso documentados no son fáciles de encontrar.

 # 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 quieres aprovechar todo y dar forma a todo lo que puedes usar:

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

Creo que esto también afecta a las canalizaciones de localhost que ralentizaron mi depuración de código vs, así que ten esto en cuenta.