我有一个OpenVPN服务器,我希望它logging每个用户的带宽。 我正在寻找loggingbytes_send和bytes_received 。 这是存储在OpenVPN status文件,但我不能轻易读取该文件,因为它总是在改变。
我可以使用一个client-disconnect脚本,但是我将如何传递用于它的带宽? 我宁愿不使用这个,因为带宽只会在客户端断开时更新。 如果他不这样做呢? 对,那么他可以使用尽可能多的带宽,他喜欢。
那么,如何logging每个客户端使用的带宽呢?
你可以为每个用户设置iptables规则:
iptables -A FORWARD -i tun0 -s 10.0.0.1 -j ACCEPT iptables -A FORWARD -o tun0 -d 10.0.0.1 -j ACCEPT iptables -A FORWARD -i tun0 -s 10.0.0.2 -j ACCEPT iptables -A FORWARD -o tun0 -d 10.0.0.2 -j ACCEPT ...
并定期[例如每15分钟]通过运行收集他们的统计信息:
iptables -nvxL FORWARD > stats
并通过以下方式将其清除:
iptables -Z
你将不得不分析统计文件,并在每次执行后将其保存到数据库中。
您可能需要为进出隧道设备的stream量创build单独的链路,并首先将所有stream量通过。 那么你只会parsing那个隧道的统计信息。
还要记住,与使用conntrack模块的情况相比,这种解决scheme将导致cpu的额外开销,并接受属于已build立的相关连接的所有数据包。