一般在增加一条iptables规则的时候我们都会使用如下的形式:
iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP
而-p和-sport/dport必须同时使用,这是为什么呢?
查询相关资料后,我总结如下:
根据网络OSI参考模型,协议类型和端口号同属于传输层。而传输层的下层是网络层,使用IP进行通讯。
可以说端口是传输层的地址,IP是网络层的地址
我们平时在使用网络的时候都会同时使用多个应用,这时IP所属的网络层再将收到的数据包向上层(传输层)提交的时候,就需要根据IP数据包头部的协议类型字段决定应该将包交给哪个协议处理;而接收到数据包的协议又会根据数据包中的端口决定将数据提交给端口所属的应该程序来处理数据。
我们使用TCP/IP协议来进行数据传输的过程中,需要根据以下五项来决定是否是同一个应用程序的数据包:
来源IP,目的IP,协议类型,来源端口,目的端口
如果这五项内容一致,就说明IP收致分组数据是同一个应用请求的数据。否则数据就是其他应用请求的。
所以,我们在添加iptables规则的时候,才会同时使用协议类型(-p)和端口号(-dport/sport)。只有这样添加的规则,iptables才会知道,我们要对哪个应用程序的通讯进行放行或者禁行的操作。
更多Linux方面的资料请访问:http://www.aminglinux.com/bbs/?fromuid=4297