免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3196 | 回复: 11
打印 上一主题 下一主题

[网络管理] 新年快乐。问一个iptables通过自定义chain来减少规则数目的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-29 03:29 |只看该作者 |倒序浏览
我的linux iptables防火墙对用户通过认证实现收费上网的功能。
用户认证后, 在防火墙中插入规则来允许用户上网。规则有7条。
我的问题是:如果我有很多的用户,比如1000个用户,那规则总数就是7000条。
防火墙效率就有问题。规则如下:
nat 表
-A PREROUTING -s 10.255.255.1 -i eth1 -j COUNTER
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 25 -j REDIRECT --to-ports 25
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8028

filter表
-A INPUT -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 25 -j LOCAL
-A FORWARD -s 10.255.255.1 -i eth1 -o eth0 -j ACKED
-A COUNTER -d 10.255.255.1 -o eth1 -j ACCEPT

其中COUNTER,LOCAL和ACKED是自定义的chian。10.255.255.1是客户的IP。
eth1是内网interface,eth0是外网interface。

我的想法是能否自定义一个表或链, 如果用户通过认证后,就redirect用户到这个自定义的链中。
也就是说, 把上面7条规则中的-s 10.255.255.1(-d 10.255.255.1)都去掉。


请问这可行吗?


谢谢指教。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2007-12-29 07:56 |只看该作者
1 你说的用跳转的方法也不能提高多少效率.最根本的还是优化防火墙规则.减少条目.

论坛徽章:
0
3 [报告]
发表于 2007-12-29 10:08 |只看该作者
原帖由 ssffzz1 于 2007-12-29 07:56 发表
1 你说的用跳转的方法也不能提高多少效率.最根本的还是优化防火墙规则.减少条目.



谢谢回复.

我就是希望用跳转的办法来减少规则数目.

目前还没有想出什么好主意来.

论坛徽章:
0
4 [报告]
发表于 2008-01-01 00:02 |只看该作者

请问有办法把我上面的7条规则放到一条自定义链中吗?

自己顶一下。

请问有办法把我上面的7条规则放到一条自定义链中吗?

有点理不清头绪了。

谢谢。

论坛徽章:
0
5 [报告]
发表于 2008-01-01 00:17 |只看该作者
自建立链不能跨表

论坛徽章:
0
6 [报告]
发表于 2008-01-02 11:03 |只看该作者
用set模块吧

把经过认证的用户的IP添加到set中,然后
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 25 -j REDIRECT --to-ports 25
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8028

-A INPUT -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 25 -j LOCAL
-A FORWARD -s 10.255.255.1 -i eth1 -o eth0 -j ACKED

都可以整合

但是,对于counter这样的,还是需要一个IP2条规则的(或者,你可以尝试使用ACCOUNT这个扩展)

应该能够大幅度减少规则的条数

论坛徽章:
0
7 [报告]
发表于 2008-01-02 11:41 |只看该作者

请问什么是set模块?

原帖由 springwind426 于 2008-1-2 11:03 发表
用set模块吧

把经过认证的用户的IP添加到set中,然后
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING -s 10.255.255.1 -i eth1 -p tcp -m tcp --dport 25 -j  ...



请问什么是set模块?

在网上没有找到相关资料.

谢谢.

论坛徽章:
0
8 [报告]
发表于 2008-01-02 11:54 |只看该作者

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
9 [报告]
发表于 2008-01-02 16:05 |只看该作者
规则减少了几条,可是模块有增加了。这种方法也是得不偿失的。模块间的调用及处理也是很耗资源的。

论坛徽章:
0
10 [报告]
发表于 2008-01-02 19:47 |只看该作者
原帖由 ssffzz1 于 2008-1-2 16:05 发表
规则减少了几条,可是模块有增加了。这种方法也是得不偿失的。模块间的调用及处理也是很耗资源的。



可不是减少几条

他原来是每个IP有7条,而用set模块后,除了counter的那两条规则不能聚合外,其他的规则都可以把-s IP去掉,而聚合成
-m set --set setname src  这样不管有多少IP,对于同一类规则(只是源IP或者目的不同),就可以聚合成一条规则
同样的
-d IP  也可以写成 -m set --set setname dst  来聚合

因此,IP越多,能够通过聚合而减少的规则条数就越多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP