如何限制 Linux 机器上的 HTTP 请求?

如何限制 Linux 机器上的 HTTP 请求?

TL;DR:总结如下:我需要减少 Ubuntu 11.04 上的最大连接数,最好是系统范围内的,但至少在 Google Chrome 中。我确实不是需要或想要限制带宽。Verizon 似乎只关心连接数,所以我只想改变这一点。另外,除非迫不得已,否则我不想使用 Firefox。我有三台其他机器都使用 Chrome 并已同步,我更喜欢它而不是 Firefox。

我使用 Verizon 手机上的网络共享功能连接家庭互联网,无需付费。通过我的 Nintendo Wii 观看 Netflix 流媒体视频以及我几乎所有可以想到的用途,这都很好用。不过,在笔记本电脑上打开多个标签页的频繁使用过程中,我手机上的网络连接会关闭,然后再次打开,然后关闭,但始终无法完全连接。

我认为,基于Android 爱好者 Stack Exchange 上的这个答案还有其他问题,这是因为 Verizon 从我的手机收到太多 HTTP 请求。是否有一些软件、脚本、设置或其他东西可以让我限制我的请求,比如说,5 个或 10 个,或者结果比 Verizon 要求的少 1 个,这样我的手机的网络连接就不会丢失?

我宁愿网速慢一点,也不愿完全切断网络连接。我几乎可以肯定这是由于请求数量太多而导致的,与数据无关,因为正如我所提到的,Netflix 可以全天无故障运行,这比我所做的任何其他事情都要耗费更多的数据。如果我有路由器,我确信我可以轻松更改设置,以一次只允许这么多请求……但在这种情况下,我的手机就是我的路由器,所以不需要设置。我在上网本上使用 Ubuntu 11.04,在 Verizon 上使用 HTC Incredible(手机详细信息并不相关)。

我已经尝试解决这个问题很长时间了。目前唯一的解决办法是确保所有请求都停止,然后有时它又可以正常工作;其他时候我必须手动关闭 3G 服务然后再打开。

答案1

我成功使用 SSH 隧道绕过了网络共享时的任意连接限制。思路如下:

ssh -D 1234 server

启动隧道,然后配置 Firefox 或其他软件以使用 Socks 5 代理 localhost/1234。按照这一页指示 Firefox 也使用 DNS 代理。

结果是路由器只会看到到您的代理的一个加密连接。

如果你使用的是 Ubuntu,那么你可以配置代理设置Ubuntu,不适用于 Chrome 或 Firefox。那么,包括 Chrome 和 Firefox 在内的所有程序都应默认使用该代理。

打开gnome-network-properties,并将代理设置为主持人本地主机,港口1234.

答案2

如果您使用的是 Firefox,请在 about:config 中搜索“max-connections”设置。

任何比这更复杂的事情都可能需要流量控制/数据包过滤/防火墙 - 例如,您可以使用 Shorewall 来限制连接速率:http://www.shorewall.net/ConnectionRate.html

答案3

您可以向 netfilter/iptables 防火墙添加一条规则来为您执行此操作。Netfilter 咨询纳特有关新连接的表格(以及筛选iptables 是一种用于限制新连接的速率的软件。您可以使用单个 iptables 命令来限制新连接的速率。

# iptables --table nat --append --protocol tcp -m multiport \
    --destination-ports 80,443 -m limit ! --limit 10/second --limit-burst 5 \
    --jump DROP

此命令必须以 root 身份运行。它匹配到端口 80 (http) 和 443 (https) 的所有新的--table-nattcp 连接尝试,这些尝试超出每秒 5 次连接尝试的限制,但允许 5 个额外的连接。然后它指示 netfilter 完全忽略这些数据包。--protocol tcp--destination-ports 80,443!--limit 10/second--limit-burst 5--jump DROP

注意:每次重启计算机时都需要运行此命令,这可以通过多种机制来实现。您可以将其放入 shell 脚本中,使其可执行,然后通过/etc/network/interfaces--if 中的 pre-up 行调用它,如果您使用此文件配置网络,并且您使用的是 debian 变体。

一个快速、简单的破解方法是将这一行添加到下其中一个重要的启动脚本中/etc/init.d/

答案4

对于低级工具或命令行工具,请尝试 tc(流量控制)。此工具旨在与大多数新内核的网络堆栈配合使用。因此它应该默认在大多数系统上可用,无需安装。

对于 http 和 tchttp://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

tc
人 tc

http://wiki.openvz.org/Traffic_shaping_with_tc
http://www.topwebhosts.org/tools/traffic-control.php

也值得一读 http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html

相关内容