ищет альтернативное решение, чем IPFW для замедления интернет-соединения

Мне нужно замедлить (имитировать плохое) подключение к Интернету, я нашел документацию, где это было достигнуто с помощью команды «ipfw pipe», дело в том, что в последних версиях MAC OS ipfw устарел (и удален) ...

Мне было интересно, есть ли альтернатива API ipfw? Кто-нибудь знает, как это достигается в последней версии Network Link Conditioner?

Оригинальный предыдущий способ, который позволял замедлить интернет-соединение:

sudo ipfw pipe 1 config bw 56Kbit/s delay 200 plr 0.2

и очистить трубу:

sudo ipfw delete 1

Спасибо.


person Igal    schedule 11.10.2015    source источник


Ответы (4)


Я мало что знаю о Mac OS (сам использую Linux), но попробую.

Куча раскопок установила, что ipfw кажется недоступным, как вы говорите.

Мне также не удалось найти способ использовать Network Link Conditioner из командной строки. Все должно быть доступно из командной строки, так что это глупо.

Одним из обходных путей может быть попытка доступа к NLC из AppleScript. Следующее поможет вам начать переключение NLC:

property thePane : "com.apple.Network-Link-Conditioner"  
tell application "System Preferences"  
activate  
  set the current pane to pane id thePane  
--delay 2  
end tell  
---  
tell application "System Events"  
  tell application process "System Preferences"  
  try  
  click ((checkboxes of window "Network Link Conditioner") whose description is "enable switch")  
  on error  
  click ((checkboxes of window "Network Link Conditioner") whose description is "enable switch")  
  end try  
  end tell  
end tell  

Я думаю, что вы можете запустить скрипт из терминала с помощью osascript <SCRIPT>.

В качестве альтернативы Charles Proxy – это платная программа, которую можно использовать для регулирования при условии, что вы может убедить тестируемое программное обеспечение подключаться к порту прокси-сервера, а не напрямую к Интернету. Может быть, где-то есть бесплатные прокси-решения?

Возможно, Squid сработает в этом отношении. SquidMan кажется простым способом установить его для Mac. Похоже, что DelayPools или Ограничения пропускной способности клиента могут быть полезны для имитации низкоскоростного соединения, хотя я не могу найти доказательств того, что люди использовали их для этого.

person Richard    schedule 17.10.2015
comment
Это хорошее решение. Я попытался запустить исполняемый файл панели настроек из командной строки (/Library/PreferencePanes/Network Link Conditioner.prefPane/Contents/MacOS/Network Link Conditioner), но получил ошибку exec format error: ./Network \Link \Conditioner. Что странно, учитывая, что file Network\ Link\ Conditioner показывает, что это универсальный двоичный файл Mach-O с двумя архитектурами. - person JAL; 18.10.2015
comment
Можно ли запустить саму панель настроек системы из командной строки и переключиться на панель NLC через AppleScript? - person Richard; 18.10.2015
comment
Теоретически вы можете открыть панель настроек NLC с помощью open /Library/PreferencePanes/Network Link Conditioner.prefPane или открыть основную панель Системных настроек из двоичного файла в комплекте приложения /Applications/System\ Preferences.app/Contents/MacOS/System\ Preferences - person JAL; 19.10.2015
comment
В OS X El Captian 10.11.1 сценарий, предоставленный @Richard, у меня не работает. Сценарий переключает переключатель на панели, однако это не влияет на утилиту, реальное состояние включено или выключено не меняется. - person thijsonline; 18.03.2016

Я нашел несколько решений, которые могут сработать. Они взяты из некоторых старых тем, но они могут помочь:

Как имитировать медленное подключение к Интернету на Mac

Apple создала очень удобный официальный инструмент для замедления сетевых подключений на вашем Mac в целях тестирования.

Параметр Network Link Conditioner можно бесплатно загрузить из Xcode (для Lion и более поздних версий ОС). Кроме того, в iOS есть аналогичная функция, доступная из Xcode и iOS 6 или более поздней версии.

Как имитировать плохой Подключение к Wi-Fi на моем iPad?

Есть несколько способов сделать это, в зависимости от вашей ситуации:

  1. Отодвиньтесь подальше от маршрутизатора. Хотя это может показаться несколько очевидным, я понимаю, что это не всегда возможно при тестировании/отладке (например, если вы работаете на настольном компьютере).

  2. Оберните маршрутизатор и/или антенну алюминиевой фольгой. Это (частично) заблокирует некоторые или все радиосигналы, создав импровизированную клетку Фарадея. Полученные результаты будут зависеть от мощности сигнала маршрутизатора, расстояния от маршрутизатора и других факторов окружающей среды.

  3. Установите мощность беспроводного сигнала вашего маршрутизатора на более низкое значение. Методы выполнения этого действия различаются для каждого маршрутизатора, поэтому вам придется обратиться к руководству пользователя, чтобы узнать, как это сделать.

Замедлить интернет для симулятора iOS

Вы можете настроить сеть на медленную характеристику, протестировав ее на устройствах. Перейдите в «Настройки» -> «Настройки разработчика» -> «Кондиционер сетевых каналов» -> «Включить». Это для iPhone/iPad под управлением iOS 6

Я не знаю, сможете ли вы сделать последнее.

person Caleb Kleveter    schedule 13.10.2015
comment
спасибо за ответы, но первое предложение - это устаревший API, как я уже описал, а кондиционер сетевых ссылок - это инструмент пользовательского интерфейса, и мне нужны некоторые команды CLI / командной строки, которые все еще поддерживаются ... В любом случае спасибо - person Igal; 14.10.2015
comment
Если вы чувствуете, что этот вопрос дублируется, отметьте его как таковой. Не размещайте ссылки на другие сообщения StackOverflow в качестве ответа... - person JAL; 16.10.2015
comment
@Igal есть причина, по которой вам нужен CLI? вы настраиваете инструмент пользовательского интерфейса, затем вы можете протестировать его, зная, что соединение медленное. - person Frederic Henri; 16.10.2015
comment
@Frédéric Henri - мне нужны команды cli для выполнения тестов автоматизации, которые также включают сценарии подключения, тесты, конечно, выполняются автоматически ... - person Igal; 17.10.2015
comment
@Igal Automator может сделать это даже для приложения без пользовательского интерфейса. - person Frederic Henri; 17.10.2015
comment
@Frédéric Henri, дело в том, что я хочу контролировать сеть во время выполнения теста в коде / тесте автоматизации, и с помощью Automator задача синхронизации теста и инструмента Automator намного усложняется. - person Igal; 18.10.2015
comment
@JAL: Постер собрал информацию из нескольких ответов, выделив важные части, и тем самым предложил новый ответ на вопрос, который кажется сложным, и ОП поблагодарил автора за это. Вы не должны так быстро осуждать. Вы должны установить более высокую планку для отклонения вкладов людей: если проблема не является серьезной, преимущества дедупликации следует сопоставить с возможностью того, что сообщество будет воспринято как враждебное. - person Richard; 21.10.2015
comment
@Caleb: хорошая работа, связанная с идеей конфигурации маршрутизатора. Это просто и потенциально эффективно. - person Richard; 21.10.2015
comment
@Richard: Круто, я скопирую и вставлю ответы из других вопросов SO, чтобы ответить на вопросы о наградах в следующий раз. - person JAL; 21.10.2015
comment
Я не знаю почему, но, похоже, на мой ответ идет война голосов за/против: i.stack.imgur.com/uhd0m.png. У меня всего 26 повторений из этого ответа ????. - person Caleb Kleveter; 21.10.2015
comment
Этот ответ представляет собой просто совокупность других ответов из StackOverflow. По моему мнению, вы должны были пометить этот вопрос как дубликат одного из приведенных выше ответов, а не создавать свой собственный ответ как набор других ответов StackOverflow. - person JAL; 21.10.2015
comment
meta.stackoverflow.com/questions/308808/ - person apaul; 26.10.2015

В прошлом я использовал много методов для замедления сетевых подключений, среди них:

  • выполнение параллельной загрузки некоторого массивного ISO-файла Linux;
  • физически вытягивая кабель Ethernet (в какой-то момент я действительно подумывал создать кнопочное устройство, которое будет располагаться между двумя кабелями категории 5, и делать это без необходимости физически отсоединять весь кабель).
  • используя ifconfig eth0 down ; sleep 1 ; ifconfig eth0 up.

Надеюсь, один или несколько из этих методов помогут.

person paxdiablo    schedule 19.10.2015
comment
спасибо за ответ, iconfig великолепен, но вы не можете контролировать, сколько пакетов вы хотите отбросить, я прав? - person Igal; 21.10.2015

Если вы хотите замедлить сетевое соединение, потому что вы выполняете работу по тестированию/профилированию, одним из вариантов является получение определенного устройства, которое может создавать задержку/шум в сети.

Например, эмулятор mini2 WAN от Apposite Tech позволяет изменять значения пропускной способности и потери пакетов. Вы также можете развернуть свое собственное устройство, например: http://wanem.sourceforge.net/ . Это зависит только от ваших потребностей, времени и бюджета.

person Mike Chang    schedule 20.10.2015