【问题标题】:looking for alternative solution than IPFW for slowing down an internet connection寻找替代解决方案而不是 IPFW 来减慢互联网连接
【发布时间】:2016-01-08 22:34:46
【问题描述】:

我需要减慢(模拟不良)互联网连接,我发现一些文档是通过“ipfw pipe”命令实现的,问题是在最新的 MAC OS 版本中,ipfw 已被弃用(并删除)...

我想知道是否有任何替代 ipfw API 的方法? 有谁知道最新的 Network Link Conditioner 是如何实现的?

原来的降低互联网连接速度的方法:

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

并清理管道:

sudo ipfw delete 1

谢谢。

【问题讨论】:

    标签: ios macos network-connection ipfw


    【解决方案1】:

    我对 Mac OS 了解不多(我自己使用 Linux),但我会试一试。

    如你所说,大量挖掘确定ipfw 似乎不可用。

    我也找不到从命令行使用网络链接调节器的方法。一切都应该可以从命令行使用,所以这很愚蠢。

    一种解决方法是尝试从 AppleScript 中访问 NLC。以下内容将帮助您开始切换 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 和或Client Bandwidth Limits 可能对模拟低速连接很有用,尽管我找不到有人使用它们的证据。

    【讨论】:

    • 这是一个不错的解决方案。我尝试从命令行(/Library/PreferencePanes/Network Link Conditioner.prefPane/Contents/MacOS/Network Link Conditioner)运行首选项窗格可执行文件,但收到错误exec format error: ./Network \Link \Conditioner。这很奇怪,考虑到 file Network\ Link\ Conditioner 表明它是具有 2 个架构的 Mach-O 通用二进制文件。
    • 是否可以从命令行运行系统首选项窗格本身并通过 AppleScript 切换到 NLC 面板?
    • 理论上您可以使用open /Library/PreferencePanes/Network Link Conditioner.prefPane 打开 NLC 首选项窗格,或者从应用程序包中的二进制文件 /Applications/System\ Preferences.app/Contents/MacOS/System\ Preferences 打开主系统首选项窗格
    • 在 OS X El Captian 10.11.1 中,@Richard 提供的脚本对我不起作用。该脚本确实会翻转窗格中的开关,但它不会影响实用程序,真正的开或关状态不会改变。
    【解决方案2】:

    我找到了几种可行的解决方案。它们来自一些旧线程,但它们可能会有所帮助:

    How to simulate slow internet connections on the mac

    Apple 制作了一个非常方便的官方工具,用于降低 Mac 上的网络连接速度以进行测试。

    Network Link Conditioner 首选项可从 Xcode 中免费下载(适用于 Lion 和更高版本的操作系统)。此外,iOS 具有类似的功能,可从 Xcode 和 iOS 6 或更高版本访问。

    How do I simulate a bad Wi-Fi connection on my iPad?

    有几种方法可以做到这一点,具体取决于您的情况:

    1. 远离你的路由器。虽然这看起来有点明显,但我意识到在测试/调试时并不总是可行的(例如,如果你在台式计算机上工作) )。

    2. 在路由器和/或天线周围放置铝箔。这将通过创建一个临时的法拉第笼(部分)阻挡部分或全部无线电信号。您获得的结果将取决于您的路由器信号强度、与路由器的距离以及其他环境因素。

    3. 将路由器的无线信号功率设置为较低的设置。每个路由器执行此操作的方法不同,因此您必须查看用户指南以获取有关如何执行此操作的说明。

    Slow down internet for iOS simulator

    您可以通过在设备上进行测试来将网络设置为慢速特性。转到设置 -> 开发人员设置 -> 网络链接调节器 -> 启用。这适用于运行 iOS 6 的 iPhone/iPad

    不知道最后一个还能不能做。

    【讨论】:

    • 感谢您的回答,但第一个建议是过时的 api,正如我已经描述的那样,网络链接调节器是一个 UI 工具,我需要一些 CLI/命令行命令,它们仍然是支持...还是谢谢
    • 如果您觉得这个问题是重复的,请标记它。不要发布指向其他 StackOverflow 帖子的链接作为答案...
    • @JAL:发帖者从几个答案中汇总了信息,提取了重要部分,并在此过程中对似乎是一个难题的问题提供了新颖的回答,OP 感谢海报。你不应该这么快做出判断。您应该为拒绝人们的贡献设置更高的标准:如果问题不严重,则应权衡重复数据删除的好处与社区被视为敌对的可能性。
    • @Richard:很酷,我会复制粘贴其他 SO 问题的答案,以便下次回答赏金问题。
    【解决方案3】:

    过去我使用过许多方法来降低网络连接速度,其中包括:

    • 并行下载一些大型 Linux ISO 文件;
    • 物理拔出以太网电缆(有一次,我实际上玩弄了构建一个按钮设备的想法,该设备将位于两条 cat5 电缆之间,并且无需物理断开整条电缆即可执行此操作)。
    • 使用ifconfig eth0 down ; sleep 1 ; ifconfig eth0 up

    希望其中一种或多种方法会有所帮助。

    【讨论】:

    • 感谢您的回答,iconfig 很棒,但是您无法控制要“丢弃”多少数据包,对吗?
    【解决方案4】:

    如果您因为正在进行测试/分析工作而希望降低网络连接速度,则一种选择是获取可能会产生网络延迟/噪音的特定设备。

    例如,Apposite Tech 的 mini2 WAN 模拟器允许您更改带宽和数据包丢失的值。您也可以使用以下方式滚动您自己的设备:http://wanem.sourceforge.net/。这取决于您的需求、时间和预算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多