iptables问题

我配置了一条NAT规则实现端口转换, 进行测试。 每次测试后,用iptables -t nat -nvL 进行查看时, 发现pkts每次只加1, 但抓包时发现有6个包都进行了端口转换。 请问其余的5个包是何时进行端口转换的?

 

解决问题过程, 添加打印, 抓包。

 

(1) 在NF_HOOK, POST_ROUTING前加打印信息。

 

 (2) ChinaUnix论坛中, 瀚海书香的回复:

         NAT表只对NEW状态的数据包操作,之后的数据包直接根据conntrack信息进行相应的sip,dip等的替换

 (3)数据包状态研究:

         http://blog.chinaunix.net/uid-384966-id-2411274.html

         1: 概述

         1.a: 状态机制是iptables的一部分, 其实它只是一种连接跟踪机制。

         1.b: 运行连接跟踪的防火墙称为状态防火墙。

         1.c: 在iptables里, 包是和被跟踪连接的四种不同状态有关的。它们是NEWESTABLISHEDRELATEDINVALID。后面我们会深入地讨论每一个状态。使用--state匹配操作,我们能很容易地控制

               “谁或什么能发起新的会话”。

         1.d: 在内核中在内核中由Netfilter的特定框架做的连接跟踪称作conntrack(connection tracking). conntrack 可以作为模块安装, 也可以作为内核的一部分。这些模块从数据包中提取详细的唯一的信息,

                因此能保持对每一个数据流的跟踪。这些信息也告知conntrack流当前的状态。例如,UDP流一般由他们的目的地址、源地址、目的端口和源端口唯一确定。

         1.e:除了本地产生的包由OUTPUT链处理外,所有连接跟踪都是在PREROUTING链里进行处理的,意思就是, iptables会在PREROUTING链里从新计算所有的状态。如果我们发送一个流的初始化包,状态就会

              在OUTPUT链里被设置为NEW,当我们收到回应的包时,状态就会在PREROUTING链里被设置为ESTABLISHED。如果第一个包不是本地产生的,那就会在PREROUTING链里被设置为NEW状态。综上,

              所有状态的改变和计算都是在nat表中的PREROUTING链和OUTPUT链里完成的。

 

        2:conntrack 记录

            tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22  dport=32775 use=2

        2.a  十进制6, tcp协议号(17, udp协议号);

              117, 生存时间,它会有规律地被消耗,直到收到这个连接的更多的包。那时,这个值就会被设为当时那个状态的缺省值;

              SYN_SENT , TCP连接只在一个方向发了SYN包。

              源地址, 目的地址, 源端口, 目的端口。

              UNREPLIED: 这个连接没有收到任何回应。当一个连接在两个方向上都有传输时, conntrack记录就删除[UNREPLIED]标志, 然后重置。

              期望得到的包的源地址, 目的地址, 源端口, 目的端口。

              末尾有 ASSURED的记录表明两个方向已没有流量,  这样的记录是确定的, 在conntrack表满时时速不会被删除的, 没有ASSURED就要被删除。

 

             对于7620 抓到的相应记录是:

 ipv4 2 tcp 6 431997 ESTABLISHED src=192.168.1.18 dst=192.168.1.1 sport=50071 dport=80 src=10.10.10.10 dst=10.10.10.14 sport=80 dport=50071 [ASSURED] mark=0 use=2

ipv4 2 tcp 6 431997 ESTABLISHED src=192.168.1.18 dst=192.168.1.1 sport=50070 dport=80 src=10.10.10.10 dst=10.10.10.14 sport=80 dport=50070 [ASSURED] mark=0 use=2

 

          对于Miiicasa 抓到的相应记录如下, 记录正常:

pv4 2 tcp 6 418 ESTABLISHED src=192.168.1.18 dst=192.168.1.1 sport=52047 dport=80 src=10.10.10.10 dst=10.10.10.14 sport=80 dport=52047 [ASSURED] mark=0 use=1
ipv4 2 tcp 6 418 ESTABLISHED src=192.168.1.18 dst=192.168.1.1 sport=52045 dport=80 src=10.10.10.10 dst=10.10.10.14 sport=80 dport=52045 [ASSURED] mark=0 use=1

 

 

        2.b  

              

 

 

转载于:https://www.cnblogs.com/gavinwu/p/3706059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值