免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 13251947
打印 上一主题 下一主题

[网络管理] NAT的情况怎么限制内网IP的并发数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-14 21:05 |只看该作者

回复 #9 platinum 的帖子

现在的人都说话越来越不负责了。

论坛徽章:
0
12 [报告]
发表于 2009-04-15 11:09 |只看该作者

回复 #9 platinum 的帖子

因为前一段年休了,休息了一星期,来了就一大堆事,草草回复了一句,刚刚看到几位”老大“的回复,本人十分惭愧,第一次被人称为”信口开河“和”不负责“真的是很不是滋味,但两位老大的教诲小弟一定铭记于心,这里一并感谢!就此,我想说一下我当时的想法:(说实话我并没有使用,之前一直使用squid限制最大连接数,后来升级了之后用iptables的connlimit)我试想用netstat获得内网ip的连接情况,比如用netstat -na| awk '{ print $5}' |grep '192.168.9'| cut -d: -f1 | sed -e '/^$/d'|sort -n|uniq -c|sort|awk '{if ($1>10) print $2}'>/tmp/connlimit,再用iptables从connlimit中读出这些ip进行iptables的操作,然后结合crontab。再次感谢platinum 和rhlei  !

论坛徽章:
0
13 [报告]
发表于 2009-04-15 11:31 |只看该作者
原帖由 wendaozhe 于 2009-4-15 11:09 发表
因为前一段年休了,休息了一星期,来了就一大堆事,草草回复了一句,刚刚看到几位”老大“的回复,本人十分惭愧,第一次被人称为”信口开河“和”不负责“真的是很不是滋味,但两位老大的教诲小弟一定铭记于心, ...


NAT 模式下在网关上用 netstat -an 是看不到任何客户连接信息的
希望发表言论前还是自己先试过比较好

论坛徽章:
0
14 [报告]
发表于 2009-04-15 19:29 |只看该作者
NAT 模式下在网关上用 netstat -an 是看不到任何客户连接信息的

看到的只是本机的!


并发数,我记得应该是设置/proc/sys/net/ipv4/ip_conntrack_max的数值(跟内存有直接关系,不过可以放大缩小)。

论坛徽章:
0
15 [报告]
发表于 2009-04-16 09:16 |只看该作者
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr |grep 192.168.0.
我以前在cu上找到过查并发数的 但是不知道准不准,为什么这么说呢? 因为我再用iftop看的时候 l 过滤单个IP并没有那么多并发,不知道是不是时间上的问题,我只做参考

想写个自动的脚本 如果并发高到一定数量就限制这样的IP,没有超过的不做任何限制

论坛徽章:
0
16 [报告]
发表于 2009-04-17 01:42 |只看该作者
首先要有ip_conntrack的模块支持。


可以通过查看/proc/net/ip_conntrack得到内网机器的链接数。

编个小脚本统计一下就OK.

LZ可以试试,看看可以不,这个时候我在家的机器上做的。

arp -a > mac
awk -F "(" '{print $2}' mac > ip-1
awk -F ")" '{print $1}' ip-1 > ip
IP=`cat ip`
for i in $IP
do
echo $i
cat /proc/net/ip_conntrack | grep $i | wc
done

先看能不能正确统计内网机器的链接数。

[ 本帖最后由 prettyiceii 于 2009-4-18 14:22 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2009-04-17 01:47 |只看该作者
或者用 connlimit 模块直接做并发连接数的控制。

如果上边的那个脚本可以正确统计的话,就可以结合CONNLIMIT的限制链接数过高的客户机了。


祝你成功。

[ 本帖最后由 prettyiceii 于 2009-4-17 01:50 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2009-04-18 08:11 |只看该作者
arp -an > mac
awk -F "(" '{print $2}' mac > ip-1
awk -F ")" '{print $1}' ip-1 > ip
IP=`cat ip`
for i in $IP
do
echo $i
cat /proc/net/ip_conntrack | grep $i | wc -l |sort
done
第一行有个错误,我改了后输出是这样的

[ 本帖最后由 13251947 于 2009-4-18 08:17 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP