Chinaunix
标题:
netfilter/iptables防火墙数据包流向完整的工作原理图,你真的理解了吗
[打印本页]
作者:
woxizishen
时间:
2015-08-06 18:36
标题:
netfilter/iptables防火墙数据包流向完整的工作原理图,你真的理解了吗
本帖最后由 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
(31.15 KB, 下载次数: 85)
下载附件
2015-08-06 18:37 上传
为了更好让大家理解,笔者也抓了部分日志供大家参考整个图示流程:其实当你真的理解了整个iptables的数据包流向的过程,iptables有问题时候,你看下日志,立即就能知道在哪一个表格,哪一个规则可能出现了问题
May 6 15:56:13 king kernel: TRACE: raw
REROUTING: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: mangle
REROUTING: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: mangle
OSTROUTING: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链
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2