LinuxIptables语法还是比较重要的,让我们来看看有些值得我们关注。 1.对链的操作 建立一个新链(-N)。 删除一个空链(-X)。 192.168.1.1改变一个内建链的原则(-P)。 列出一个链中的规则(-L)。 清除一个链中的所有规则(-F)。 2.对规则的操作 加入(append)一个新规则到一个链(-A)的最后。 在链内某个插入(insert)一个新规则(-I),通常是插在最前面。 3.指定源地址和目的地址 通过--source/--src/-s来指定源地址(这里的/表示或者的意思,下同),通过--destination/--dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址: 用x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX中通常使用的表示方法。 4.指定协议 5.指定网络接口将 可以使用--in-intece/-i或--out-intece/-o来指定网络接口。需要注意的是,对于INPUT链来说,只可能有-i,也即只会有进入的包;通理,对于OUTPUT链来说,只可能有-o,也即只会有出去的包。只有FORWARD链既可以有-i的网络接口,也可以有-o的网络接口。我们也可以指定一个当前并不存在的网络接口,比如ppp0,这时只有拨号成功后该规则才有效。 在TCP/IP通讯过程中,每一个网络接口都有一个最大传输单元(MTU),这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数个数据包(称之为ip碎片)来传输,而接收方则对这些ip碎片再进行重组以还原整个包。 但是再进行包过滤的时候,ip碎片会导致这样一个问题:当系统将大数据包划分成ip碎片传送时,第一个碎片含有完整的包头信息,但是后续的碎片只有包头的部分信息,比如源地址,目的地址。因此假如我们有这样一条规则: 并且这时的FORWARD的策略(policy)为DROP时,系统只会让第一个ip碎片通过,而丢掉其余的ip碎片,因为第一个碎片含有完整的包头信息,可以满足该规则的条件,而余下的碎片因为包头信息不完整而无法满足规则定义的条件,因而无法通过。 我们可以通过--fragment/-f选项来指定第二个及其以后的ip碎片,比如以的例子为例,我们可以再加上这样一条规则来解决这个问题: 但是需要注意的是,现在已经有好多进行ip碎片的实例(比如向Win98NT4/SP5,6 Win2K发送大量的ip碎片进行DoS),因此允许ip碎片通过是有安全隐患的,对于这一点我们可以采用iptables的匹配扩展来进行,但是这又会影响服务质量,我们将在下面讨论这个问题。 可以在某些选项前加上!来表示非指定值,比如“-s-! tcp”表示除了tcp以外的协议。 |
不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流
GMT+8, 2025-4-30 18:28 , Processed in 0.108250 second(s), 15 queries .
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.