我一直在尝试为共享服务器上的用户设置流量配额,并且我相信[以我有限的知识] iptables --quota 和为每个用户选择的端口 [--dport] 是实现此目的的方法......
iptables -A 输出 --dport 1,2,3,4... --quota 123412341234 -j 接受
iptables -A 输出 --dport 1,2,3,4... -j 删除
我认为这样的方法可以限制流量 [并且每月重置] 但它仅适用于流出的流量。
- 我可以做些什么来将 -A OUTPUT 和 -A INPUT 合并为一个配额?
- 或者,我可以用其他方法来更有效地实现同样的目标?
操作系统是 debian squeeze
谢谢。
答案1
如果你想申请配额两个都传入和传出,你可以这样做:
-A OUTPUT -p tcp --sport $PORTNUM_1 -g filter_quota_1
-A OUTPUT -p tcp --sport $PORTNUM_2 -g filter_quota_2
<other OUTPUT rules for other users>
-A INPUT -p tcp --dport $PORTNUM_1 -g filter_quota_1
-A INPUT -p tcp --dport $PORTNUM_2 -g filter_quota_2
<other INPUT rules>
-A filter_quota_1 -m quota --quota $QUOTA_1 -g chain_where_quota_not_reached
-A filter_quota_1 -g chain_where_quota_is_reached
-A filter_quota_2 -m quota --quota $QUOTA_2 -g chain_where_quota_not_reached
-A filter_quota_2 -g chain_where_quota_is_reached
<other filter_quota_N chains>
当您想要重置配额#N 时,您可以先执行iptables -F filter_quota_N
,然后重新填充filter_quota_N
。
由于规则大多相似,你确实应该考虑使用 bash(或你选择的其他脚本语言)进行自动化