Как имитировать медленные интернет-соединения на маке
Какое хорошее программное решение для замедления интернет-подключений на Mac для тестирования и моделирования?
Моей основной потребностью является тестирование кода в симуляторе iPhone /iOS, поэтому было бы здорово замедлить соединение для определенных приложений или процессов.
7 ответов
Apple сделала очень удобный официальный инструмент для замедления сетевых подключений на вашем Mac для тестирования.
Предпочтение Network Link Conditioner - бесплатная загрузка из Xcode (для Lion и более поздней ОС). Кроме того, iOS имеет аналогичную функцию, доступную из Xcode и iOS 6 или более поздних версий.
Xcode перед вставкой версии 4.3.2 копию этого инструмента. Теперь вы используете Xcode для загрузите его непосредственно аналогично симуляторам iOS и документации разработчика.
Есть 11 встроенных профилей из сети Lossy Edge с задержкой в 400 мс для кабельного модема. Если вам нужны другие ограничения, вы можете создавать собственные профили с собственными настройками или вы также можете использовать ipfw
самостоятельно, как описано в Craig Hockenberry медленная поездка, сделать это легко В нем также упоминается панель Speed Limit с помощью Mike Schrag , который меньше загружает, чем Xcode, но имеет меньше вариантов, чем инструмент Apple.
Он замедляет весь сетевой стек, поэтому вы не можете дросселировать на основе каждого приложения, не выполняя такие действия, как установка льва на виртуальной машине, и установите эту виртуальную машину с дроссельным стеком.
OS X 10.9 и более ранние версии обеспечивают ipfw
и позволяют определять пользовательские правила брандмауэра. Создайте канал с ограниченной пропускной способностью с помощью ipfw
, и вы можете запускать свои тесты и симуляции.
-
Создайте канал «1», ограниченный 500 Кбайт /с через
sudo ipfw pipe 1 config bw 500KByte /s
-
Направьте весь сетевой трафик порта 80 через трубу «1», используя
sudo ipfw add 1 pipe 1 src-port 80
-
Если вам больше не нужен канал, удалите его из порта, используя
sudo ipfw delete 1
Другие
- Если вы хотите установить более высокие барьеры трафика, вы можете использовать
MByte /s
- Порт
80
: стандартный порт для незашифрованного трафикаhttp
. Этот порт используется для большинства видов просмотра и загрузки. В большинстве случаев вы должны быть в порядке. - Порт
443
: стандартный порт для трафика с шифрованием SSLhttps
.
Ограничение скорости - это панель системных настроек для преднамеренного и выборочного замедления определенных портов и доменов.
Если вам требуется только дросселирование для веб-разработки, я могу полностью рекомендовать Charles . Это отличный инструмент для отладки приложений HTTP в любом случае, и среди его многочисленных функций у него есть опция Throttle. Программное обеспечение не дешево, но оно отлично работает.
Чтобы добавить к принятому ответу: похоже, вам не нужен XCode, просто учетная запись на веб-сайте Apple Developer (проще, чем первая загрузка пакета XCode 2GB, если у вас его еще нет).
Перейдите в https://developer.apple.com/downloads и выполните поиск по «Сетевой ссылке» «Conditioner» или «Hardware IO Tools for XCode», последний из которых является именем пакета, в котором он находится.
Чтобы загрузить его через Xcode 8.x:
- Нажмите на меню Xcode
- Перейдите в Open Developer Tool> Дополнительные инструменты для разработчиков ...
- Это откроет страницу на developer.apple.com (Примечание: вам может потребоваться сначала войти в систему)
- Нажмите на значок «+» рядом с дополнительными инструментами для Xcode 8.x
- Нажмите URL-адрес загрузки
Вы также можете использовать ipfw-трубопровод для замедления вашей сети.
Сначала настройте виртуальный «канал», чтобы ограничить пропускную способность до 800 Кбит /с:
ipfw pipe 1 config bw 800Kbit
Затем вы можете настроить правила для передачи трафика через этот канал (труба 1). (порты 6881-6890 являются битрейдер-трафиком)
ipfw добавить 10 трубок 1 tcp от любого ко мне 6881-6890
ipfw добавить 11 трубок 1 tcp из любых 6881-6890 для меня
Вот еще один пример, чтобы ограничить трафик до 10 Кбит /с с определенного IP-адреса:
ipfw pipe 2 config bw 10Kbit
ipfw добавить 15 труб 2 ip от меня до 64.81.84.114
Mac OS X 10.10+ необходимо использовать dnctl
и pfctl
, но документированные примеры использования найти нелегко.
# Настроить `pfctl` для использования` customRule`.
(cat /etc/pf.conf & echo "dummynet-anchor \" customRule \ "" & & echo "anchor \" customRule \ "") | sudo pfctl -f -
# Определите `customRule`, чтобы передать трафик на` pipe 1`.
# Обратите внимание, что это фактическое определение порта, а не текстовый комментарий
echo "dummynet в быстром проточном tcp от любого к любому порту 443 pipe 1" | sudo pfctl -a customRule -f -
# Определите, что должно делать «труба 1» для трафика
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10 Кбит /с
# НЕ ЗАБЫВАЙТЕ, чтобы отменить их, когда закончите
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf
Если вы хотите изо всех сил и сформировать все, что вы можете использовать:
echo "dummynet в быстром проточном tcp от любого к любому каналу 1" | sudo pfctl -a customRule -f -
Я считаю, что это также влияет на каналы localhost, которые замедляли мою отладку vs-кода, поэтому помните об этом.