Cómo simular conexiones lentas a internet en mac

145

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

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

aneuryzm
fuente
Encontré que la respuesta aceptada (Network Link Conditioner) también es una excelente solución rápida y sucia para problemas de bloqueo de búfer.
Robert Tupelo-Schneck

Respuestas:

168

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

La preferencia de Network Link Conditioner es una descarga gratuita desde Xcode (para Lion y sistemas operativos posteriores). Además, iOS tiene una función similar accesible desde Xcode e iOS 6 o posterior.

ingrese la descripción de la imagen aquí

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

Hay 11 perfiles integrados de una red Lossy Edge con 400 ms de retraso a un cable módem. Si necesita otros límites, puede crear perfiles personalizados con su propia configuración o también puede usarlo ipfwcomo se describe en el artículo de Craig Hockenberry ' Lento paseo ', facilítelo . También menciona el panel de Límite de velocidad de Mike Schrag que es una descarga más pequeña. que Xcode, pero tiene menos opciones que la herramienta de Apple.

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

bmike
fuente
1
: O incluso tengo Xcode y no sabía sobre esto
Alexander
21
¡Asegúrese de apagarlo una vez que haya terminado las pruebas!
Jason Salaz
1
Aclaración: en realidad tienes que descargar las herramientas de hardware IO de Apple. Consulte Instalación de la herramienta Apples Network Link Conditioner
daviesgeek el
2
El límite de velocidad mencionado a continuación funciona de manera excelente . Lo estoy usando ahora para localhost: 8888 en MAMP.
Anriëtte Myburgh
1
También tenga en cuenta que iOS 6 tiene el acondicionador de enlace de red para realizar pruebas en el dispositivo. Acceda a través de Configuración-> Desarrollador en la sección "Acondicionador de enlace de red".
Mike Weller
35

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

  1. Cree una tubería "1" limitada a 500 KB / 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" utilizando

    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 httptráfico sin cifrar . Este puerto se utiliza para la mayoría de las búsquedas y descargas. Deberías estar bien con esto en la mayoría de los casos.
  • Puerto 443: puerto estándar para httpstráfico encriptado SSL .
Gentmatt
fuente
10
desafortunadamente, ipfw fue eliminado en OS X 10.10 Yosemite
igo
Puede usar pfctl para reducir el ancho de banda en OS X 10.10+ - spin.atomicobject.com/2016/01/05/…
Eugene A
He añadido una respuesta por debajo de la muestra pfctly dnctlejemplo de uso.
ubershmekel
31

Speed ​​Limit es un panel de Preferencias del sistema para ralentizar intencional y selectivamente puertos y dominios específicos.

Randy6T9
fuente
Me gusta que sea más granular que la herramienta XCode mencionada en la respuesta aceptada. Gracias por la sugerencia.
sholsinger
1
Realmente, descubrí que "localhost" no funcionaba, cambiar a la dirección IP 127.0.0.1 hizo el truco.
OlliM
44
SpeedLimit es disfuncional a partir de OS X 10.10 ya que se eliminó la herramienta de firewall que utiliza: github.com/mschrag/speedlimit/issues/13
Robin
El enlace al límite de velocidad está roto.
Jeff Holt
La fuente del límite de velocidad parece no mantenerse ahora, pero está disponible aquí y tiene una bifurcación más actualizada por aquí, aunque no la he probado en absoluto
Brad Parks el
11

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 descargar primero el paquete XCode de 2GB si aún no lo tiene).

Vaya a https://developer.apple.com/downloads y busque "Network Link Conditioner" o "Herramientas adicionales para XCode", siendo este último el nombre del paquete en el que se encuentra.

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 '+' junto a Herramientas adicionales para Xcode 8.x
  • Haga clic en la URL de descarga.
Roger Dueck
fuente
2
¡Bienvenido a Ask Different! En lugar de escribir una respuesta para editar la respuesta de otra persona, simplemente haga clic en editar o mejorar este botón de respuesta debajo de la publicación que desea mejorar .
grg
9

Si solo necesita aceleración para el desarrollo web, puedo recomendar de todo corazón a Charles . De todos modos, es una excelente herramienta para depurar aplicaciones HTTP, y entre sus muchas características, tiene una opción de aceleración. El software no es barato, pero hace un excelente trabajo.

Kiezpro
fuente
De hecho, lo necesito para el simulador de iPhone ... y para probar las conexiones a un servidor
aneuryzm
5

Los usuarios de Mac OS X 10.10+ necesitan usar dnctly pfctlaunque 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 salir 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 tuberías localeshost que ralentizaron mi depuración de código vs, así que tenlo en cuenta.

ubershmekel
fuente
4

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

Primero, configure una "tubería" virtual para limitar el rendimiento a 800KBit / seg:

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)

daviesgeek
fuente
ipfw se eliminó en OSX 10.10
Ben Wheeler el
-1

Para XCode 10.2, en Más herramientas de desarrollador - Herramientas adicionales para XCode 10.2, encontrará el Acondicionador de enlaces de red.

Kiran Jasvanee
fuente
¿En qué se diferencia esta solución de las respuestas ya proporcionadas?
Nimesh Neema
Descargué por error herramientas de hardware, incluso si era para la versión anterior de XCode, pensé que funcionaría porque no lo había visto para una versión más nueva. No se ha escrito en ninguna parte que para el nuevo XCode 10.2 tenga que elegir Herramientas adicionales para obtener el último acondicionador de enlace de red. Eso se menciona aquí para que otros desarrolladores no pierdan su tiempo. Si no lo encuentra diferente a los demás, menos quince veces. Lo hice para que otros obtengan ayuda al buscar Newly XCode 10.2
Kiran Jasvanee
Realmente ayudaría a cualquiera que lea esta respuesta si puede editar su respuesta e incluir esta información crucial. Además, muchos usuarios consideran que tener instrucciones escritas y paso a paso es realmente valioso.
Nimesh Neema
@NimeshNeema Creo que todo el desarrollador sabe en la comunidad que puede encontrar esta herramienta a través de Más herramientas de desarrollador. He escrito los pasos. No lo creo, así que debería mencionar más en detalle.
Kiran Jasvanee
Está totalmente bien y depende de ti cómo eliges escribir una respuesta. En general, se menciona la práctica seguida en lugar de una regla :)
Nimesh Neema