![如何设置具有带宽控制、下载限制选项的家庭代理服务器?](https://linux22.com/image/1294349/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E5%85%B7%E6%9C%89%E5%B8%A6%E5%AE%BD%E6%8E%A7%E5%88%B6%E3%80%81%E4%B8%8B%E8%BD%BD%E9%99%90%E5%88%B6%E9%80%89%E9%A1%B9%E7%9A%84%E5%AE%B6%E5%BA%AD%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
3 个室友共用一个 2 Mbps 的连接。每月下载限制为 40GB,超过此限制,速度就会降至 256Kbps,这很烦人。
其中一个室友滥用连接,下载量超出配额限制。我有一个 Netgear WNR1000v2 无线路由器 + ADSL 调制解调器来连接互联网。我们都通过连接到 ADSL 调制解调器的无线路由器访问互联网。
我需要一个免费的代理解决方案来帮助我设置
- 每个人限制 40GB / 3(13GB)(每个人有 2 台设备 - 一台电脑和一部带 Wifi 的手机)
- 统一带宽控制 - 当 2 个人浏览互联网时,他们每人应获得 1 Mbps,而当 3 个人访问时,他们应获得 2Mbps 除以 3。
- 每个人超过每月下载限制后,他们只能以 256Kbps 或更低的速度访问互联网。
- 我可以使用无线路由器上的自定义固件来执行此操作吗(或者)我需要代理服务器吗?
请向我指出任何相关的教程(例如 Squid)。
更新:我不是在寻找仅限路由器/固件的解决方案,我愿意在网络上的其中一台 PC 上运行代理服务器或任何其他类似类型的解决方案。
答案1
不要使用 Squid 来做这件事:您需要控制一切,而不仅仅是端口 80 上的 HTTP。
答案是需要使用带有“--quota”选项的 iptables,该选项通过减少每个数据包的字节计数器来实现网络配额。“--quota”的参数是以字节为单位的值。
每个用户应有一个链。链的第一条规则为来自 192.168.0.2 的数据包倒数 13 GB 配额,如果低于配额,则接受该数据包:
iptables -A INPUT -p tcp -s 192.168.0.2 -m quota --quota 13958643712 -j ACCEPT
该链的第二条规则将超出配额的数据包归类到您选择的 tc 类别中:
iptables -A INPUT -p tcp -j CLASSIFY --set-class 1:12
然后就是经典的流量整形:http://tldp.org/HOWTO/Traffic-Control-HOWTO/
当然,您需要使用静态 IP 分配或确保 DHCP 分配由设备 MAC 地址固定的地址 - 并且您需要阻止除属于三个用户之一的设备的已识别地址之外的所有地址。
顺便说一句,您提到“当 2 个人浏览互联网时,他们每人应该获得 1 Mbps,而当 3 个人访问时,他们应该获得 2Mbps 除以 3”,但是当您设置流量类别层次结构时,您可以做得更好:您的要求应该是“当两个人浏览互联网时,他们每人获得的速度不应少于 1 Mbps,而当三个人访问时,他们获得的速度不应少于 2 Mbps 除以 3”,这样,如果其他人使用的吞吐量低于保证吞吐量,每个人都可以获得更多... 而 tc 可以让您做到这一点!
由于您的路由器受 openwrt 和 dd-wrt 支持,因此您拥有所需的所有工具!
答案2
我不记得它是否支持你提到的所有功能,但我强烈推荐普富思作为路由器解决方案。它足够小,可以在 USB 磁盘上运行,并提供大量共享解决方案。例如,我安装了 squid 附加组件,以便为所有内部服务器提供透明代理,甚至在安装包时也可以获得网络使用情况的详细报告。
我还提供网吧类型的功能,例如供客人使用系统的登录页面。在虚拟机中设置起来很容易,并且有很多关于如何使用各种不同配置进行安装的文档。
我在家里用过这个,还有 8 台其他机器。你可能会发现,如果设置正确,你可能不需要像以前那样严格地引入限制。
答案3
您的 Netgear WNR1000v2 似乎是一款半哑设备。我发现您可以启用基于端口或基于 MAC 的 QoS。您可以为行为不当的根伙伴将 QoS 设置为“低”。
其他任何事情都需要更多的“大脑” - 例如适当的(智能)代理。
答案4
显然,你可以在路由器上安装 DD-WRT 固件,风险自负http://www.dd-wrt.com/site/support/router-database具有广泛的 QoS 功能 -http://www.dd-wrt.com/wiki/index.php/Quality_of_Service