如何为家庭设置具有带宽控制、下载限制选项的代理服务器?

Raj*_*yan 18 firmware bandwidth home-networking download wireless-router

3 个室友共享一个 2 Mbps 连接。每月有 40GB 的下载限制,超过这个限制,速度会下降到 256Kbps,这很烦人。

其中一位室友通过下载超出其配额限制来滥用连接。我有一个 Netgear WNR1000v2 无线路由器 + ADSL 调制解调器来连接到互联网。我们都通过连接到 ADSL 调制解调器的无线路由器访问互联网。

我需要一个可以帮助我设置的免费代理解决方案

  1. 每个人 40GB / 3 (13 GB) 限制(每个人有 2 台设备 - 一台 PC 和一部带 Wifi 的手机)
  2. 统一带宽控制 - 当 2 人浏览互联网时,每人应获得 1 Mbps,而当 3 人访问时,他们应获得 2Mbps 除以 3。
  3. 在每个人超过每月下载限制后,他们应该只能以 256Kbps 或更低的速度访问互联网。
  4. 我可以在我的无线路由器上使用自定义固件来执行此操作(或)我需要代理服务器吗?

请指点我任何相关的教程(例如 Squid)。

更新:我不是在寻找仅路由器/固件解决方案,我愿意在网络上的其中一台 PC 或任何其他类似类型的解决方案上运行代理服务器。

Jea*_*ier 15

不要用 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
Run Code Online (Sandbox Code Playgroud)

链的第二条规则将超配额数据包分类为您选择的 tc 类:

iptables -A INPUT -p tcp -j CLASSIFY --set-class 1:12
Run Code Online (Sandbox Code Playgroud)

然后就是所有经典的流量整形:http : //tldp.org/HOWTO/Traffic-Control-HOWTO/

当然,您需要使用静态 IP 分配或确保 DHCP 分配由设备的 MAC 地址固定的地址 - 并且您需要阻止所有地址,但属于三个用户之一的已识别设备的地址除外。

顺便说一句,您提到“当 2 个人浏览互联网时,每个人应该获得 1 Mbps,而当 3 人访问时,他们应该获得 2 Mbps 除以 3”,但是当您设置流量等级层次结构时,您可以做得更好:您的要求应该是“当两个人浏览互联网时,他们每个人的速度不应低于 1 Mbps,而当三个人访问时,他们的速度不应低于 2 Mbps 除以 3”,这样每个人都可以得到更多,如果其他人使用的吞吐量低于他们保证的吞吐量……而 tc 可以让您这样做!

由于您的路由器受 openwrt 和 dd-wrt ​​支持,您拥有所需的所有工具!