任何人都可以告诉我如何过滤(改变带宽,延迟等)的一个或多个用户连接到OpenVPN的基础上,他们的客户端证书名称?
为什么我想使用客户端证书名称是我可以有100多个用户连接到OpenVPN,我想单独限制每个客户端的带宽
非常感谢
您可以使用指令client-connect <cmd>和client-disconnect <cmd> 。
环境variables$common_name被传递给在<cmd>指定的脚本,并且可以评估为在该特定客户机上使用特定的tc设置,如下所示:
#!/bin/bash if [ "$common_name" == "client1" ]; then downrate=100mbit uprate=100mbit elif [ "$common_name" == "client2" ]; then downrate=10mbit uprate=10mbit else downrate=10kbit uprate=10kbit fi tc qdisc add dev "$dev" root handle 1: htb tc qdisc add dev "$dev" handle ffff: ingress # Limit traffic from VPN server to client tc class add dev "$dev" parent 1: classid 1:1 htb rate "$downrate" tc filter add dev "$dev" parent 1:0 protocol ip prio 1 \ u32 match ip dst "$ifconfig_pool_remote_ip"/32 flowid 1:1 # Limit traffic from client to VPN server tc filter add dev "$dev" parent ffff:0 protocol ip prio 1 \ u32 match ip src "$ifconfig_pool_remote_ip"/32 \ police rate "$uprate" burst 80k drop flowid :1
以下环境variables是相关的:
$common_name :包含客户端CN名称 $ifconfig_pool_remote_ip :包含客户端远程vpn IP $dev :包含tun接口 详细的设置可以在这个答案中find。