小樱 发表于 2018/1/10 02:45

极路由1s判断客户端在线个数,统计每个用户电脑IP的连接数数量,限制用户最大连接数大小 nf_conntrack修改

判断客户端在线个数
通过DHCP client分配列表 (缺点:client列表会根据超时时间刷新,一般超时时间为2h)
cat /tmp/dhcp.leases
通过arp缓存列表(缺点:arp刷新时间默认为30s,这个时间的误差可以接受)
cat /proc/net/arp
主要讲解第二种方法:
Flags: 0x0是找不到这台主机了,代表已经不在线状态。
0x2是主机还在线。
所以根据这个flags就可以判断这台主机是否在线,统计非0的就好了,就知道当前在线多少台设备。


查看路由器总连接数

cat /proc/net/nf_conntrack|wc -l
查看某个IP下面的连接数
cat /proc/net/nf_conntrack|grep 192.168.199.203 |wc -l
该IP下的TCP连接数
cat /proc/net/nf_conntrack|grep 192.168.199.203 |grep tcp |wc -l
该IP下的UDP连接数
cat /proc/net/nf_conntrack|grep 192.168.199.203 |grep udp |wc -l

限制方法,
vi /etc/sysctl.conf
下方这一行的值改成1024,代表设备最大允许1024个连接数,这样就不会引起上级网络拥堵,,当然这个是全局的,不过实测的确好使了,至少不会出现直接断网情况,垃圾移动宽带上层有连接数限制的,,现在只是打开比较缓慢,还好,具体限制某个用户还不会怎么搞
net.netfilter.nf_conntrack_max=1024
生效规则
sysctl -p


当然最好的解决方法还是用防火墙来限制,针对某个用户,,不过想法理论是好的?但是实际上好像没效果哇
下面策略表示:IP192.168.199.203 60秒10个新UDP连接,超过丢弃数据包
iptables -A OUTPUT -p udp -s 192.168.199.203 -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
下面策略表示:IP192.168.199.203 只要连接此IP的UDP超过10个,则DROP。
iptables -A OUTPUT -p udp -s 192.168.199.203 -m connlimit --connlimit-above 10 --connlimit-mask 0 -j DROP

将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除OUTPUT里序号为5的规则,执行:
iptables -D OUTPUT 5

得了,最好的方法,还是拔线,把路由下那人的网线拔了吧,省的搞事

页: [1]
查看完整版本: 极路由1s判断客户端在线个数,统计每个用户电脑IP的连接数数量,限制用户最大连接数大小 nf_conntrack修改