免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香

CU线上连载讨论一 Linux iptables使用问题和内核Netfilter流程 [复制链接]

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-14 12:04 |显示全部楼层
回复 19# Godbach
看了一下白金大哥的代码。
他是在lib库中将dns字符串转换成解析时的数据包字符串。他那个代码不支持一类域名的匹配,只支持单个域名匹配。
不过白金大哥的代码是多版本支持的。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-07-14 12:04 |显示全部楼层
回复 20# 瀚海书香
做 patch 和做兼容多个内核版本的实现应该是不一样的

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2011-07-14 12:13 |显示全部楼层
立马支持一下。

论坛徽章:
0
发表于 2011-07-14 12:40 |显示全部楼层
回复  瀚海书香
这里有一个白金兄实现的 domain 匹配模块,分享给大家
【呵呵,我也凑个热闹,转发一个原 ...
Godbach 发表于 2011-07-14 11:56


有个更高效的 domain v0.0.2,而且实现更简单,瀚海书香兄可以看一下
http://bbs.chinaunix.net/thread-791863-1-1.html

评分

参与人数 1可用积分 +10 收起 理由
Godbach + 10 感谢分享。白金兄 V5 啊。

查看全部评分

论坛徽章:
0
发表于 2011-07-14 12:45 |显示全部楼层
回复  Godbach
看了一下白金大哥的代码。
他是在lib库中将dns字符串转换成解析时的数据包字符串。他那个代码不支持一类域名的匹配,只支持单个域名匹配。
瀚海书香 发表于 2011-07-14 12:04


v0.0.2 版通过比较巧妙的实现已经支持泛域名啦!

论坛徽章:
0
发表于 2011-07-14 12:56 |显示全部楼层
看了一下发布日期,整整是 5 年前的今天,呵呵!
如果有时间的话,再做一个多模匹配版,一条 iptables 同时搞定多个域名!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-14 13:00 |显示全部楼层
回复 25# platinum
白金大哥的泛域名匹配是指 "baidu.com"匹配所有以baidu.com结尾的域名吧
这样的确是效率高了一些。
我那个泛域名匹配主要是为了跟squid的用法一致,所以采用了squid中的机制。(最前面加"."表示泛域名匹配,不加”."表示精确匹配)。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-14 13:01 |显示全部楼层
回复 26# platinum
前辈啊。
小弟们是看着前辈的资料成长的啊。。。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-07-14 13:11 |显示全部楼层
这里在贴一个QQ匹配的模块。
之前的QQ匹配大多是使用layer7模块来进行匹配,但是那个模块的效率有点低。而且无法区分QQ和TM。

模块用法:


iptables -A FORWARD -m qq --tm -j ACCEPT
这条规则允许TM版本的QQ通信。

iptables -A FOWARD -m qq --qq -j DROP
这条规则会禁止所有版本的QQ通信。

ipt_qq.h

161 Bytes, 下载次数: 62

ipt_qq.c

2.84 KB, 下载次数: 88

libipt_qq.c

2.27 KB, 下载次数: 56

Makefile

340 Bytes, 下载次数: 45

评分

参与人数 1可用积分 +10 收起 理由
Godbach + 10 瀚海兄干货很多啊。赞一个

查看全部评分

论坛徽章:
0
发表于 2011-07-14 13:17 |显示全部楼层
给初学者的一些建议:
1、先保证网络能通,再考虑如何限制
2、专表专用、专链专用



对于想提高 iptables 工作效率的朋友一些建议:
1、学会使用 -N,配合 -g 使用,缓解多条 iptables 语句时的效率低下问题
2、熟知你的网络数据特征,按照策略碰撞概率优先级调整规则排列顺序
3、慎用 -j LOG 记录数据
4、能提前阻断的,在数据进入 conntrack 之前把它“办”掉(放在 raw 表中处理)
5、能不开启 conntrack 功能就不要开启



提醒大家需要注意的一些误区:
1、nat 表只匹配一个连接的前几个包(TCP 和 UDP 的实现略有不同),后续数据无法被 nat 表的规则匹配
2、limit 不能防止本机被 DoS 攻击,只能降低本机 CPU 负载
3、不要认为 iptables -t mangle -F 这样的语句就可以清空 mangle 表规则,它的副作用是载入了 mangle hook(nat、raw、filter 表同理)

评分

参与人数 1可用积分 +5 收起 理由
瀚海书香 + 5 多谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP