免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2842 | 回复: 0

[其他] netfilter/iptables防火墙数据包流向完整的工作原理图,你真的理解了吗 [复制链接]

论坛徽章:
24
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2016-07-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2015-08-06 18:36 |显示全部楼层
本帖最后由 woxizishen 于 2015-08-06 18:45 编辑

数据包在netfilter/iptables的流入流出过程示意图:
小编以前也看过官方和不少非官方的关于linux下防火墙的工作示意图,五花八门其实还是有很多问题的,大部分人的理解包括iptables作者本人早起的版本的理解都有偏差,经常有童鞋问路由前和路由后的事情,其实纠结这个问题。等你看懂这个示意图,可以帮助很多人纠正之前错误的理解,当然如果有童鞋认为有异议,也可以提出来一起讨论。
该版iptables有了4个表:
raw
mangle
nat
filter

4个表格的作用就不多解释了,mangle和raw都是特殊表格,所以数据包流向的过程在特殊表格里能够操作的动作是会有限制的噢。很多入门的童鞋,总想在特殊表格里来整一些在filter里的一些动作规则,可不要混淆了。iptables作者的重点只在于FILTER,其次是nat表格,至于剩下2个表格对于一些特殊需求的人会用到。有时候看到论坛不少朋友发帖在mangle直接进行过滤动作,认为他能够和filter表一样有相应的功能,那你老人家就违背了iptables开发的作者的初衷了。这2个特殊表格的用途,官方已经进行了详细说明,我就不多说了。



1.jpg

为了更好让大家理解,笔者也抓了部分日志供大家参考整个图示流程:其实当你真的理解了整个iptables的数据包流向的过程,iptables有问题时候,你看下日志,立即就能知道在哪一个表格,哪一个规则可能出现了问题

May  6 15:56:13 king kernel: TRACE: rawREROUTING:policy:3 IN=eth1 OUT= MAC=00:0c:29:91:44:18:00:25:11:88:dd:54:08:00 SRC=192.168.8.16 DST=192.168.8.142 LEN=40 TOS=0x00 PREC=0x00 TTL=255 ID=29926 DF PROTO=TCP SPT=4808 DPT=22 SEQ=1212369552 ACK=3096659045 WINDOW=64944 RES=0x00 ACK FIN URGP=0
第一步:数据外部流入到raw表的PREROUTING链
May  6 15:56:13 king kernel: TRACE: mangleREROUTING:policy:1 IN=eth1 OUT= MAC=00:0c:29:91:44:18:00:25:11:88:dd:54:08:00 SRC=192.168.8.16 DST=192.168.8.142 LEN=40 TOS=0x00 PREC=0x00 TTL=255 ID=29926 DF PROTO=TCP SPT=4808 DPT=22 SEQ=1212369552 ACK=3096659045 WINDOW=64944 RES=0x00 ACK FIN URGP=0
第二步:数据从raw表的PREROUTING链流向mangle表的PREROUTING链
May  6 15:56:13 king kernel: TRACE: mangle:INPUT:policy:1 IN=eth1 OUT= MAC=00:0c:29:91:44:18:00:25:11:88:dd:54:08:00 SRC=192.168.8.16 DST=192.168.8.142 LEN=40 TOS=0x00 PREC=0x00 TTL=255 ID=29926 DF PROTO=TCP SPT=4808 DPT=22 SEQ=1212369552 ACK=3096659045 WINDOW=64944 RES=0x00 ACK FIN URGP=0
第三步:数据从mangle表的PREROUTING链流向mangle表的:INPUT链
May  6 15:56:13 king kernel: TRACE: filter:INPUT:rule:1 IN=eth1 OUT= MAC=00:0c:29:91:44:18:00:25:11:88:dd:54:08:00 SRC=192.168.8.16 DST=192.168.8.142 LEN=40 TOS=0x00 PREC=0x00 TTL=255 ID=29926 DF PROTO=TCP SPT=4808 DPT=22 SEQ=1212369552 ACK=3096659045 WINDOW=64944 RES=0x00 ACK FIN URGP=0
第四步:数据从mangle表的INPUT链流向filter表的:INPUT链


May  6 15:56:13 king kernel: TRACE: raw:OUTPUT:policy:3 IN= OUT=eth1 SRC=192.168.8.142 DST=192.168.8.16 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19358 DF PROTO=TCP SPT=22 DPT=4808 SEQ=3096659045 ACK=1212369553 WINDOW=557 RES=0x00 ACK FIN URGP=0 UID=0 GID=0
第五步:数据从filter表的INPUT链流向raw表的 OUTPUT链
May  6 15:56:13 king kernel: TRACE: mangle:OUTPUT:policy:1 IN= OUT=eth1 SRC=192.168.8.142 DST=192.168.8.16 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19358 DF PROTO=TCP SPT=22 DPT=4808 SEQ=3096659045 ACK=1212369553 WINDOW=557 RES=0x00 ACK FIN URGP=0 UID=0 GID=0
第六步:数据从raw表的 OUTPUT链流向mangle表的:OUTPUT链

May  6 15:56:13 king kernel: TRACE: filter:OUTPUT:rule:1 IN= OUT=eth1 SRC=192.168.8.142 DST=192.168.8.16 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19358 DF PROTO=TCP SPT=22 DPT=4808 SEQ=3096659045 ACK=1212369553 WINDOW=557 RES=0x00 ACK FIN URGP=0 UID=0 GID=0
第七步:数据从mangle表的:OUTPUT链流向filter表的 OUTPUT链
May  6 15:56:13 king kernel: TRACE: mangleOSTROUTING:policy:1 IN= OUT=eth1 SRC=192.168.8.142 DST=192.168.8.16 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19358 DF PROTO=TCP SPT=22 DPT=4808 SEQ=3096659045 ACK=1212369553 WINDOW=557 RES=0x00 ACK FIN URGP=0 UID=0 GID=0
最后一步:数据从filter表的 OUTPUT链流向mangle表的 POSTROUTING链
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP